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