Способ получить доступ к cookie-файлу dev /Warden в обратном вызове
Я использую функцию обратного вызова Warden для сохранения определенных данных в Cookie. Вот что у меня есть:
//This is in devise.rb
Warden::Manager.after_authentication do |user, auth, opts|
auth.cookies[:signed_in] = 1
auth.cookies[:user_role] = user.role
end
Проблема в том, что когда пользователь впервые регистрируется в моем веб-приложении, этот обратный вызов не вызывается. Таким образом, я не могу сохранить определенные данные в cookie, и мое веб-приложение работает неправильно.
Мне нужно сделать настраиваемую функцию в пользовательской модели, например, следующим образом, чтобы она запускалась после создания пользователя.
after_commit :after_sign_up, on: :create
def after_sign_up
//need to call below functions over here
//auth.cookies[:signed_in] = 1
//auth.cookies[:user_role] = user.role
end
Однако я не знаю, как получить доступ к тому же cookie, который был в обратном вызове Warden. Есть ли способ получить доступ к cookie в модели? Если нет, я должен получить доступ в контроллере? Если да, нужно ли добавить модуль в контроллер для доступа к нему? Подробное объяснение будет оценено
1 ответ
Я верю Warden::Manager.after_set_user
будет делать то, что вы ищете. Он вызывается после создания или входа пользователя.
Пример:
Warden::Manager.after_set_user do |user,auth,opts|
# Your code
end