class Compeon::AccessToken

Constants

VERSION

Attributes

environment[W]
client_id[R]
kind[R]
role[R]
session_id[R]
token[R]
user_id[R]

Public Class Methods

environment() click to toggle source
# File lib/compeon/access_token.rb, line 26
def environment
  @environment ||
    ENV['ENVIRONMENT'] ||
    raise("`#{self}.environment` or `ENV['ENVIRONMENT']` must be set")
end
new(role:, user_id:, kind:, client_id:, session_id: nil, token:) click to toggle source
# File lib/compeon/access_token.rb, line 12
def initialize(role:, user_id:, kind:, client_id:, session_id: nil, token:)
  @role = role
  @user_id = user_id
  @kind = kind
  @client_id = client_id
  @session_id = session_id
  @token = token
end
parse(token) click to toggle source
# File lib/compeon/access_token.rb, line 32
def parse(token)
  data, _header = JWT.decode(token, public_key, false, algorithm: 'RS256')

  role = data.fetch('role')
  user_id = data.fetch('uid')
  kind = data.fetch('knd')
  client_id = data.fetch('cid')
  session_id = data.fetch('sid')

  new(role: role, user_id: user_id, kind: kind, client_id: client_id, session_id: session_id, token: token)
rescue JWT::DecodeError
  raise ParseError
end
public_key() click to toggle source
# File lib/compeon/access_token.rb, line 46
def public_key
  @public_key ||= OpenSSL::PKey::RSA.new(public_key_string)
end
public_key_string() click to toggle source
# File lib/compeon/access_token.rb, line 55
def public_key_string
  @public_key_string ||= begin
    env_subdomain = environment != 'production' ? ".#{environment}" : nil
    URI.parse("https://login#{env_subdomain}.compeon.de/public-key").read
  end
end
public_key_string=(value) click to toggle source
# File lib/compeon/access_token.rb, line 50
def public_key_string=(value)
  @public_key = nil
  @public_key_string = value
end