Module: UberLogin

Extended by:
ActiveSupport::Concern
Includes:
ActiveSupport::Callbacks
Defined in:
lib/uber_login/configuration.rb,
lib/uber_login.rb,
lib/uber_login/storage.rb,
lib/uber_login/version.rb,
lib/uber_login/token_encoder.rb,
lib/uber_login/cookie_manager.rb,
lib/uber_login/session_manager.rb,
lib/uber_login/token_validator.rb

Overview

This class handles the :uid and :ulogin session variables It builds and sets the session variables, clears them, checks for their validity.

Defined Under Namespace

Classes: Configuration, CookieManager, SessionManager, Storage, TokenEncoder, TokenValidator

Constant Summary collapse

VERSION =
'2.2.0'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:

  • (configuration)


39
40
41
# File 'lib/uber_login/configuration.rb', line 39

def self.configure
  yield(configuration) if block_given?
end

Instance Method Details

#current_userObject

Returns the logged in user. If session[:uid] is set:

* if strong sessions are enabled, it checks for session[+:ulogin+] and tests its value against the database
* if strong sessions are not enabled, it only returns the corresponding +User+

If session[:uid] is NOT set but cookies[:uid] and cookies[:ulogin] ARE:

* It dissects +:ulogin+ into Sequence and Token
* Looks for a LoginToken from UID and Sequence
* Test Token against the stored and strong hashed one
* If they match, session[+:uid+] is set and it returns the +User+

If none of the previous cases, nil is returned. If the cookie did not match, they are cleared from the user browser.

All the checks are runt only once and the result is cached



34
35
36
# File 'lib/uber_login.rb', line 34

def current_user
  @current_user ||= current_user_uncached
end

#login(user, remember = false) ⇒ Object

Logs in the given user If remember is true all the needed cookies are set. session[:uid] is set to user.id If strong sessions are enabled session[:ulogin] is set to the same value that cookies[:ulogin] would have



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/uber_login.rb', line 43

def (user, remember = false)
  logout_all unless UberLogin.configuration.
  @login_from_cookies = false

  run_callbacks :login do
    if strong_sessions or remember
      composite = generate_and_save_token(user.id)
      cookie_manager.(user.id, composite) if remember
    else
      composite = nil
    end

    reset_session
    session_manager.(user.id, composite)
  end
end

#login_from_cookies?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/uber_login.rb', line 85

def 
  @login_from_cookies
end

#logout(sequence = nil) ⇒ Object

If sequence is nil it clears the current session and if remember cookies are in place they’re cleared and corresponding token removed from the database. If sequence is not nil it only removes the sequence and token from the database.



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/uber_login.rb', line 64

def logout(sequence = nil)
  run_callbacks :logout do
    if sequence.nil? or sequence == current_sequence
      delete_from_database if cookies[:uid] or strong_sessions
      session_manager.clear
      cookie_manager.clear
    else
      delete_from_database(sequence)
    end
  end
end

#logout_allObject

Deletes all “remember me” session for this user from whatever device he/she has ever used to login.



79
80
81
82
83
# File 'lib/uber_login.rb', line 79

def logout_all
  Storage.delete_all session[:uid]
  session_manager.clear
  cookie_manager.clear
end

#persistent_login?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/uber_login.rb', line 89

def persistent_login?
  cookie_manager.valid?
end