Одним из способов сделать это является введение простой аутентификации с нуля поверх аутентификации Devise с использованием библиотеки bcrypt
.
Вам потребуется новое поле в users
таблица для хранения специального дайджеста пароля.Итак, создайте новый файл миграции и код ниже:
def change
add_column :users, :special_password, :digest
end
Добавьте гем Bcrypt в свой Gemfile:
gem 'bcrypt', '~> 3.1', '>= 3.1.12'
В свою модель пользователя добавьте следующую строку:
has_secure_special_password
Теперь в вашем специальном контроллере аутентификации по паролю используйте приведенный ниже код для аутентификации current_user
с special_password
if current_user.authenticate(params[:user][:special_password])
session[:special_user_id] = current_user.id
end
Теперь при любых действиях контроллера вы хотите аутентифицировать пользователя с помощьюспециальный пароль, создайте фильтр before_action
и попробуйте найти пользователя по session[:special_user_id]
, и если пользователь не найден, вы можете попросить его ввести special_password