Class: CookieManager
- Inherits:
-
Object
- Object
- CookieManager
- Defined in:
- lib/uber_login/cookie_manager.rb
Overview
This class handles the :uid
and :ulogin
cookies It builds and sets the cookies, clears them, checks for their validity.
Instance Method Summary collapse
-
#clear ⇒ Object
Clears
:uid
and:ulogin
cookies. - #expiration(row) ⇒ Object
- #hashed_token ⇒ Object
-
#initialize(cookies, request) ⇒ CookieManager
constructor
A new instance of CookieManager.
- #ip_equality(row) ⇒ Object
- #persistent_login(uid, sequence, token) ⇒ Object
- #sequence ⇒ Object
- #sequence_and_token ⇒ Object
- #token ⇒ Object
-
#token_match(row) ⇒ Object
Validity checks.
- #ulogin_cookie(sequence, token) ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(cookies, request) ⇒ CookieManager
Returns a new instance of CookieManager.
5 6 7 8 9 10 11 12 |
# File 'lib/uber_login/cookie_manager.rb', line 5 def initialize(, request) @cookies = @request = request @validity_checks = [ :token_match ] @validity_checks << :ip_equality if UberLogin.configuration.tie_tokens_to_ip @validity_checks << :expiration if UberLogin.configuration.token_expiration end |
Instance Method Details
#clear ⇒ Object
Clears :uid
and :ulogin
cookies
16 17 18 19 |
# File 'lib/uber_login/cookie_manager.rb', line 16 def clear @cookies.delete :uid @cookies.delete :ulogin end |
#expiration(row) ⇒ Object
63 64 65 |
# File 'lib/uber_login/cookie_manager.rb', line 63 def expiration(row) row.updated_at >= Time.now - UberLogin.configuration.token_expiration end |
#hashed_token ⇒ Object
28 29 30 |
# File 'lib/uber_login/cookie_manager.rb', line 28 def hashed_token BCrypt::Password.create(token).to_s end |
#ip_equality(row) ⇒ Object
59 60 61 |
# File 'lib/uber_login/cookie_manager.rb', line 59 def ip_equality(row) row.ip_address == @request.remote_ip end |
#persistent_login(uid, sequence, token) ⇒ Object
32 33 34 35 |
# File 'lib/uber_login/cookie_manager.rb', line 32 def persistent_login(uid, sequence, token) @cookies.permanent[:uid] = uid @cookies.permanent[:ulogin] = (sequence, token) end |
#sequence ⇒ Object
45 46 47 |
# File 'lib/uber_login/cookie_manager.rb', line 45 def sequence sequence_and_token[0] end |
#sequence_and_token ⇒ Object
41 42 43 |
# File 'lib/uber_login/cookie_manager.rb', line 41 def sequence_and_token @cookies[:ulogin].split(':') end |
#token ⇒ Object
49 50 51 |
# File 'lib/uber_login/cookie_manager.rb', line 49 def token sequence_and_token[1] end |
#token_match(row) ⇒ Object
Validity checks
55 56 57 |
# File 'lib/uber_login/cookie_manager.rb', line 55 def token_match(row) BCrypt::Password.new(row.token) == token end |
#ulogin_cookie(sequence, token) ⇒ Object
37 38 39 |
# File 'lib/uber_login/cookie_manager.rb', line 37 def (sequence, token) sequence + ':' + token end |
#valid? ⇒ Boolean
21 22 23 24 25 26 |
# File 'lib/uber_login/cookie_manager.rb', line 21 def valid? token_row = LoginToken.find_by(uid: @cookies[:uid], sequence: sequence) @validity_checks.all? { |check| send(check, token_row) } rescue false end |