Class: StandardId::RefreshToken
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- StandardId::RefreshToken
- Defined in:
- app/models/standard_id/refresh_token.rb
Class Method Summary collapse
Instance Method Summary collapse
- #active? ⇒ Boolean
- #expired? ⇒ Boolean
- #revoke! ⇒ Object
-
#revoke_family! ⇒ Object
Revoke this token and all tokens in the same family chain.
- #revoked? ⇒ Boolean
Class Method Details
.digest_for(jti) ⇒ Object
16 17 18 |
# File 'app/models/standard_id/refresh_token.rb', line 16 def self.digest_for(jti) Digest::SHA256.hexdigest(jti) end |
.find_by_jti(jti) ⇒ Object
20 21 22 |
# File 'app/models/standard_id/refresh_token.rb', line 20 def self.find_by_jti(jti) find_by(token_digest: digest_for(jti)) end |
Instance Method Details
#active? ⇒ Boolean
24 25 26 |
# File 'app/models/standard_id/refresh_token.rb', line 24 def active? !revoked? && !expired? end |
#expired? ⇒ Boolean
28 29 30 |
# File 'app/models/standard_id/refresh_token.rb', line 28 def expired? expires_at <= Time.current end |
#revoke! ⇒ Object
36 37 38 39 |
# File 'app/models/standard_id/refresh_token.rb', line 36 def revoke! rows = self.class.where(id: id, revoked_at: nil).update_all(revoked_at: Time.current) reload if rows > 0 end |
#revoke_family! ⇒ Object
Revoke this token and all tokens in the same family chain. A “family” is all tokens linked via previous_token_id. Only revokes tokens that aren’t already revoked, preserving historical revoked_at timestamps for audit purposes.
45 46 47 |
# File 'app/models/standard_id/refresh_token.rb', line 45 def revoke_family! family_tokens.where(revoked_at: nil).update_all(revoked_at: Time.current) end |
#revoked? ⇒ Boolean
32 33 34 |
# File 'app/models/standard_id/refresh_token.rb', line 32 def revoked? revoked_at.present? end |