Class: Himari::SessionData
- Inherits:
-
Object
- Object
- Himari::SessionData
- Includes:
- TokenString
- Defined in:
- lib/himari/session_data.rb
Instance Attribute Summary collapse
-
#claims ⇒ Object
readonly
Returns the value of attribute claims.
-
#refresh_info ⇒ Object
readonly
Returns the value of attribute refresh_info.
-
#user_data ⇒ Object
readonly
Returns the value of attribute user_data.
Attributes included from TokenString
Class Method Summary collapse
Instance Method Summary collapse
- #active?(now: Time.now) ⇒ Boolean
- #as_json ⇒ Object
- #as_log ⇒ Object
-
#initialize(claims: {}, user_data: {}, refresh_info: nil, handle:, secret: nil, secret_hash: nil, expiry: nil) ⇒ SessionData
constructor
A new instance of SessionData.
- #refreshable? ⇒ Boolean
-
#with(claims: @claims, user_data: @user_data, refresh_info: @refresh_info, expiry: @expiry) ⇒ Object
Return a copy with selected fields replaced.
Methods included from TokenString
#expiry, #format, #handle, hash_secret, included, #magic_header, #secret, #secret_hash, #secret_hash_prev, #verify!, #verify_expiry!, #verify_secret!
Constructor Details
#initialize(claims: {}, user_data: {}, refresh_info: nil, handle:, secret: nil, secret_hash: nil, expiry: nil) ⇒ SessionData
Returns a new instance of SessionData.
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/himari/session_data.rb', line 9 def initialize(claims: {}, user_data: {}, refresh_info: nil, handle:, secret: nil, secret_hash: nil, expiry: nil) @claims = claims @user_data = user_data @refresh_info = refresh_info @handle = handle @secret = secret @secret_hash = secret_hash @secret_hash_prev = nil @expiry = expiry @verification = nil end |
Instance Attribute Details
#claims ⇒ Object (readonly)
Returns the value of attribute claims.
30 31 32 |
# File 'lib/himari/session_data.rb', line 30 def claims @claims end |
#refresh_info ⇒ Object (readonly)
Returns the value of attribute refresh_info.
30 31 32 |
# File 'lib/himari/session_data.rb', line 30 def refresh_info @refresh_info end |
#user_data ⇒ Object (readonly)
Returns the value of attribute user_data.
30 31 32 |
# File 'lib/himari/session_data.rb', line 30 def user_data @user_data end |
Class Method Details
.default_lifetime ⇒ Object
26 27 28 |
# File 'lib/himari/session_data.rb', line 26 def self.default_lifetime 3600 end |
.magic_header ⇒ Object
22 23 24 |
# File 'lib/himari/session_data.rb', line 22 def self.magic_header 'hmas' end |
Instance Method Details
#active?(now: Time.now) ⇒ Boolean
36 37 38 |
# File 'lib/himari/session_data.rb', line 36 def active?(now: Time.now) @expiry.nil? || @expiry > now.to_i end |
#as_json ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/himari/session_data.rb', line 63 def as_json { handle: handle, secret_hash: secret_hash, expiry: expiry, claims: claims, user_data: user_data, refresh_info: refresh_info, } end |
#as_log ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/himari/session_data.rb', line 54 def as_log { handle: handle, claims: claims, expiry: expiry, refreshable: refreshable?, } end |
#refreshable? ⇒ Boolean
32 33 34 |
# File 'lib/himari/session_data.rb', line 32 def refreshable? !@refresh_info.nil? end |
#with(claims: @claims, user_data: @user_data, refresh_info: @refresh_info, expiry: @expiry) ⇒ Object
Return a copy with selected fields replaced. Reads @secret directly to sidestep TokenString#secret raising SecretMissing for storage-loaded sessions.
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/himari/session_data.rb', line 42 def with(claims: @claims, user_data: @user_data, refresh_info: @refresh_info, expiry: @expiry) self.class.new( handle: @handle, secret: @secret, secret_hash: @secret_hash, expiry: expiry, claims: claims, user_data: user_data, refresh_info: refresh_info, ) end |