Способ получить доступ к 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
Другие вопросы по тегам