- Сообщений: 993
- Спасибо получено: 149
Rails: устанавливаем и конфигурируем devise
- serge
- Автор темы
- Не в сети
- Модератор
Less
Больше
6 года 11 мес. назад - 6 года 11 мес. назад #1
от serge
А я смогу! - А поглядим! - А я упрямый!
serge создал тему: Rails: устанавливаем и конфигурируем devise
Ruby on Rails: устанавливаем и конфигурируем devise
1. Добавим гем в Gemfile:
и затем:
2. Запускаем генератор:
3. Конфигурим настройки мейлера для каждой из сред выполнения. Для среды разработки необходимо добавить следующую строку в файл config/environments/development.rb:
Для продакшн, соответственно, меняем значение ключа :host на актуальное.
4. Проверяем, что routes.rb содержит строчку:
или любую иную, в зависимости от того, куда вы хотите перенаправлять пользователя после входа в систему, например.
5. Добавим в application.html.erb:
6. Выполняем, если нужны вьюхи devise, которые затем можно изменить под свои стили:
7. Создаем модель пользователя (или админа):
Описание модулей, отключить и подключить которые можно в app/models/user.rb (по дефолту подключаются 6 из них) :
8. Добавляем во вьюху минимум линков:
9. Защищаем наш контроллер следующим образом, добавив второй сверху (после class) строчкой:
или так, если хотим запретить неавторизованному пользователю все:
10.
Вроде как бы и все. В основном.
1. Добавим гем в Gemfile:
Code:
gem 'devise'
и затем:
Code:
bundle install
2. Запускаем генератор:
Code:
rails generate devise:install
3. Конфигурим настройки мейлера для каждой из сред выполнения. Для среды разработки необходимо добавить следующую строку в файл config/environments/development.rb:
Code:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Для продакшн, соответственно, меняем значение ключа :host на актуальное.
4. Проверяем, что routes.rb содержит строчку:
Code:
root 'home#index'
или любую иную, в зависимости от того, куда вы хотите перенаправлять пользователя после входа в систему, например.
5. Добавим в application.html.erb:
Code:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
6. Выполняем, если нужны вьюхи devise, которые затем можно изменить под свои стили:
Code:
rails generate devise:views
7. Создаем модель пользователя (или админа):
Code:
rails generate devise User
Описание модулей, отключить и подключить которые можно в app/models/user.rb (по дефолту подключаются 6 из них) :
- Database Authenticatable: предоставляет возможность входа в систему на основе зашифрованного и хранимого в базе данных пароля. Вход может быть выполнен посредством отправки POST-запроса или с помощью HTTP Basic Authentication.
- Omniauthable: добавляет поддержку Omniauth ( github.com/intridea/omniauth ).
- Confirmable: позволяет отправлять письмо с инструкциями для подтверждения аккаунта, созданного во время регистрации.
- Recoverable: позволяет восстанавливать забытый пароль. Отправляет инструкции по восстановлению на почту.
- Registerable: управляет регистрацией пользователей, позволяет редактировать и удалять аккаунты.
- Rememberable: позволяет запоминать пользователей на основе cookies. Управляет созданием и удалением токенов.
- Trackable: ведет статистику количества входов, учитывает время и IT-адреса.
- Timeoutable: отвечает за продолжительность сессии активности пользователя в системе.
- Validatable: предоставляет инструменты валидации e-mail и пароля. Модуль может быть легко настроен, вы можете определить собственные валидаторы.
- Lockable: блокирует аккаунт после указанного в настройках количество неудачных попыток авторизации. Аккаунт может быть разблокирован посредством email или через определенный период времени.
8. Добавляем во вьюху минимум линков:
Code:
<% if user_signed_in? %>
<span>Здравствуйте, <%= current_user.email %></span>
<%= link_to 'Выйти', destroy_user_session_path, :method => :delete %>
<% else %>
<%= link_to 'Войти', new_user_session_path %> или <%= link_to 'Зарегистрироваться', new_user_registration_path %>
<% end %>
9. Защищаем наш контроллер следующим образом, добавив второй сверху (после class) строчкой:
Code:
before_action :authenticate_user!, except => [:show, :index]
или так, если хотим запретить неавторизованному пользователю все:
Code:
before_action :authenticate_user!
10.
Code:
rake db:migrate
rails s
Вроде как бы и все. В основном.
А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 6 года 11 мес. назад пользователем serge.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
- Не в сети
- Модератор
4 года 4 мес. назад - 4 года 4 мес. назад #2
от Aleksej
Aleksej ответил в теме Rails: устанавливаем и конфигурируем devise
Продолжаем полезную и нужную тему.
Т.е. из цикла "записки на мнжетах"...
Rails Devise confirmable error
Случается так, что в процессе или спустя некоторое время после запуска проекта потребовалось добавить в модель 'confirmation' (confirmable, см. выше, в посте Serge). Добавили, провели миграцию... все по ходу OK, ан нет:
В этом случае выполняем простой трюк:
(или toUser, toUsers, без разницы; у меня однопользовательская система, поэтому toAdmin), далее открываем новый файл миграции и приводим его к следующему:
Вновь:
Вуаля. Ссылки по теме:
stackoverflow.com/questions/41600269/rai...se-confirmable-error
github.com/heartcombo/devise/wiki/How-To...confirmable-to-Users
Т.е. из цикла "записки на мнжетах"...
Rails Devise confirmable error
Случается так, что в процессе или спустя некоторое время после запуска проекта потребовалось добавить в модель 'confirmation' (confirmable, см. выше, в посте Serge). Добавили, провели миграцию... все по ходу OK, ан нет:
Code:
NameError in Devise::RegistrationsController#create
undefined local variable or method `confirmed_at' for #<User:0x9b87b38>
В этом случае выполняем простой трюк:
Code:
rails g migration AddConfirmableToAdmin
(или toUser, toUsers, без разницы; у меня однопользовательская система, поэтому toAdmin), далее открываем новый файл миграции и приводим его к следующему:
Code:
class AddConfirmableToAdmin < ActiveRecord::Migration[6.0]
def change
change_table(:admins) do |t|
# Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
end
add_index :admins, :confirmation_token, :unique => true
end
end
Вновь:
Code:
rails db:migrate RAILS_ENV=development
Вуаля. Ссылки по теме:
stackoverflow.com/questions/41600269/rai...se-confirmable-error
github.com/heartcombo/devise/wiki/How-To...confirmable-to-Users
Последнее редактирование: 4 года 4 мес. назад пользователем Aleksej.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.