Разработать обратные вызовы

У devise есть обратные вызовы, когда пользователь входит и выходит?

Вот что я придумал:

Warden::Manager.after_authentication do |user,auth,opts|
  user.update_attribute(:currently_signed_in, true)
end

Warden::Manager.before_logout do |user,auth,opts|
  user.update_attribute(:currently_signed_in, false)
end

Это то, с чем я пришел, чтобы отслеживать пользователей, которые в настоящее время вошли в систему.

2 ответа

Решение

Я не эксперт, но я считаю, что обратные вызовы (хуки) находятся на уровне Warden (Devise построен поверх Warden).

after_set_user и before_logout в Warden должны помочь вам, но в Warden::Hooks есть и другие варианты

Вы можете переписать sign_in в вашем контроллере приложения, как это

 def sign_in(*args)
   super(*args)
    # do whatever you want here
    token = current_user.authentications.where(provider: "facebook").first.token
    facebook = Koala::Facebook::API.new(token)
    session[:facebook] = facebook
end
Другие вопросы по тегам