Разработка обратных вызовов
Имеет ли обратный вызов обратный вызов при входе и выходе пользователя?
Вот что я придумал:
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
Это то, к чему я пришел, чтобы отслеживать пользователей, которые в настоящее время вошли в систему.
Ответы
Ответ 1
Я не эксперт, но я считаю, что обратные вызовы (крючки) находятся на уровне Warden (Devise построен поверх Warden).
after_set_user и before_logout в Warden должны сделать трюк для вас, но есть и другие варианты, перечисленные в Warden:: Hooks
Ответ 2
Вы можете перезаписать 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