2011-01-31 18 views
23

¿Tiene un dispositivo de recuperación de llamadas cuando un usuario inicia o cierra sesión?Diseñar devoluciones de llamada

Esto es lo que ocurrió:

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 

Esto es lo que vine con al seguimiento de los usuarios que están conectados actualmente

+0

before_logout funciona bien, pero after_authentication es no se activa cuando un usuario se registra, solo cuando inicia sesión ... No es el comportamiento normal, ¿no? ¿Algunas ideas? – Robin

+0

¿Alguna idea sobre cómo combinar con inicios de sesión de token? –

+0

¿Qué quiere decir con inicios de sesión token? – s84

Respuesta

16

No soy un experto pero creo que las devoluciones de llamada (ganchos.) están en el nivel de Warden (Devise está construido encima de Warden).

after_set_user y before_logout en Warden debe hacer el truco para usted, pero hay otras opciones que aparecen en Warden::Hooks

+0

¡Dulce, voy a probar esos y volveré a verte! – s84

+15

Los ganchos pueden entrar en 'config/initializers/devise.rb' en caso de que alguien se esté preguntando como yo. – manafire

+0

Vea también: https://github.com/hassox/warden/wiki/callbacks –

5

puede sobrescribir sign_in en su controlador aplicación como esta

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 
Cuestiones relacionadas