Class: RememberMe

Inherits:
Merb::Authentication::Strategy
  • Object
show all
Defined in:
lib/merb-auth-remember-me/strategies/remember_me.rb

Instance Method Summary collapse

Instance Method Details

#current_userObject



6
7
8
# File 'lib/merb-auth-remember-me/strategies/remember_me.rb', line 6

def current_user
  @current_user
end

#current_user=(new_user) ⇒ Object



10
11
12
# File 'lib/merb-auth-remember-me/strategies/remember_me.rb', line 10

def current_user=(new_user)
  @current_user = new_user
end

#handle_remember_cookie!(new_cookie_flag) ⇒ Object

Refresh the cookie auth token if it exists, create it otherwise



40
41
42
43
44
45
46
47
48
# File 'lib/merb-auth-remember-me/strategies/remember_me.rb', line 40

def handle_remember_cookie! new_cookie_flag
  return unless current_user
  case
  when valid_remember_cookie? then current_user.refresh_token # keeping same expiry date
  when new_cookie_flag        then current_user.remember_me 
  else                             current_user.forget_me
  end
  send_remember_cookie!
end

Called from #current_user. Finaly, attempt to login by an expiring token in the cookie. for the paranoid: we should be storing user_token = hash(cookie_token, request IP)



16
17
18
19
20
21
22
# File 'lib/merb-auth-remember-me/strategies/remember_me.rb', line 16

def 
  current_user = cookies[:auth_token] && Merb::Authentication.user_class.first(:conditions => ["remember_token = ?", cookies[:auth_token]])
  if current_user && current_user.remember_token?
    handle_remember_cookie! false # freshen cookie token (keeping date)
    current_user
  end
end

#run!Object



2
3
4
# File 'lib/merb-auth-remember-me/strategies/remember_me.rb', line 2

def run!
  
end

#send_remember_cookie!Object



50
51
52
# File 'lib/merb-auth-remember-me/strategies/remember_me.rb', line 50

def send_remember_cookie!
  cookies.set_cookie(:auth_token, current_user.remember_token, :expires => current_user.remember_token_expires_at.to_time)
end

#valid_remember_cookie?Boolean

Cookies shouldn’t be allowed to persist past their freshness date, and they should be changed at each login

Returns:

  • (Boolean)


33
34
35
36
37
# File 'lib/merb-auth-remember-me/strategies/remember_me.rb', line 33

def valid_remember_cookie?
  return nil unless current_user
  (current_user.remember_token?) && 
    (cookies[:auth_token] == current_user.remember_token)
end