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