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.1'
Class Method Summary collapse
Instance Method Summary collapse
-
#current_user ⇒ Object
Returns the logged in user.
-
#login(user, remember = false) ⇒ Object
Logs in the given
user
Ifremember
is true all the needed cookies are set. - #login_from_cookies? ⇒ Boolean
-
#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.
-
#logout_all ⇒ Object
Deletes all “remember me” session for this user from whatever device he/she has ever used to login.
- #persistent_login? ⇒ Boolean
Class Method Details
.configure {|configuration| ... } ⇒ Object
39 40 41 |
# File 'lib/uber_login/configuration.rb', line 39 def self.configure yield(configuration) if block_given? end |
Instance Method Details
#current_user ⇒ Object
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 59 |
# File 'lib/uber_login.rb', line 43 def login(user, remember = false) logout_all unless UberLogin.configuration.allow_multiple_login @login_from_cookies = false uid = get_uid(user) run_callbacks :login do if strong_sessions or remember composite = generate_and_save_token(uid) .persistent_login(uid, composite) if remember else composite = nil end reset_session session_manager.login(uid, composite) end end |
#login_from_cookies? ⇒ Boolean
86 87 88 |
# File 'lib/uber_login.rb', line 86 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.
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/uber_login.rb', line 65 def logout(sequence = nil) run_callbacks :logout do if sequence.nil? or sequence == current_sequence delete_from_database if [:uid] or strong_sessions session_manager.clear .clear else delete_from_database(sequence) end end end |
#logout_all ⇒ Object
Deletes all “remember me” session for this user from whatever device he/she has ever used to login.
80 81 82 83 84 |
# File 'lib/uber_login.rb', line 80 def logout_all Storage.delete_all session[:uid] session_manager.clear .clear end |
#persistent_login? ⇒ Boolean
90 91 92 |
# File 'lib/uber_login.rb', line 90 def persistent_login? .valid? end |