class Auth::Token
Public Class Methods
new(payload)
click to toggle source
# File lib/token.rb, line 5 def initialize(payload) @payload = JSON.parse payload.to_json validate_payload end
Public Instance Methods
encode(jwt_secret)
click to toggle source
# File lib/token.rb, line 30 def encode(jwt_secret) JWT.encode @payload, jwt_secret, 'HS256' end
scope?(scope)
click to toggle source
# File lib/token.rb, line 14 def scope?(scope) @payload['scopes']&.include? scope end
scopes?(scopes)
click to toggle source
# File lib/token.rb, line 18 def scopes?(scopes) scopes.all? { |scope| @payload['scopes']&.include? scope } end
sub()
click to toggle source
# File lib/token.rb, line 10 def sub @payload['sub'] end
supplemental(property = nil)
click to toggle source
# File lib/token.rb, line 22 def supplemental(property = nil) unless property.nil? || @payload['sup'][property].nil? return @payload['sup'][property] end @payload['sup'] end
Private Instance Methods
validate_payload()
click to toggle source
# File lib/token.rb, line 36 def validate_payload raise Auth::Errors::TokenHasNoIssuer unless @payload.key?('iss') raise Auth::Errors::TokenHasNoIssuedAt unless @payload.key?('iat') unless @payload['iat'] <= Time.now.to_i raise Auth::Errors::TokenNotYetValid end raise Auth::Errors::TokenHasNoSubject unless @payload.key?('sub') end