Class: StandardId::RefreshToken

Inherits:
ApplicationRecord show all
Defined in:
app/models/standard_id/refresh_token.rb

Class Method Summary collapse

Instance Method Summary collapse

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

Returns:

  • (Boolean)


24
25
26
# File 'app/models/standard_id/refresh_token.rb', line 24

def active?
  !revoked? && !expired?
end

#expired?Boolean

Returns:

  • (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

Returns:

  • (Boolean)


32
33
34
# File 'app/models/standard_id/refresh_token.rb', line 32

def revoked?
  revoked_at.present?
end