Class: Keycloak::Helper

Inherits:
Object
  • Object
show all
Defined in:
lib/keycloak-api-rails/helper.rb

Constant Summary collapse

CURRENT_USER_ID_KEY =
"keycloak:keycloak_id"
ROLES_KEY =
"keycloak:roles"
QUERY_STRING_TOKEN_KEY =
"authorizationToken"

Class Method Summary collapse

Class Method Details

.assign_current_user_id(env, token) ⇒ Object



12
13
14
# File 'lib/keycloak-api-rails/helper.rb', line 12

def self.assign_current_user_id(env, token)
  env[CURRENT_USER_ID_KEY] = token["sub"]
end

.assign_realm_roles(env, token) ⇒ Object



20
21
22
# File 'lib/keycloak-api-rails/helper.rb', line 20

def self.assign_realm_roles(env, token)
  env[ROLES_KEY] = token.dig("realm_access", "roles")
end

.create_url_with_token(uri, token) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/keycloak-api-rails/helper.rb', line 31

def self.create_url_with_token(uri, token)
  uri       = URI(uri)
  params    = URI.decode_www_form(uri.query || "").reject { |query_string| query_string.first == QUERY_STRING_TOKEN_KEY }
  params    << [QUERY_STRING_TOKEN_KEY, token]
  uri.query = URI.encode_www_form(params)
  uri.to_s
end

.current_user_id(env) ⇒ Object



8
9
10
# File 'lib/keycloak-api-rails/helper.rb', line 8

def self.current_user_id(env)
  env[CURRENT_USER_ID_KEY]
end

.current_user_roles(env) ⇒ Object



16
17
18
# File 'lib/keycloak-api-rails/helper.rb', line 16

def self.current_user_roles(env)
  env[ROLES_KEY]
end

.read_token_from_headers(headers) ⇒ Object



39
40
41
# File 'lib/keycloak-api-rails/helper.rb', line 39

def self.read_token_from_headers(headers)
  headers["HTTP_AUTHORIZATION"]&.gsub(/^Bearer /, "") || ""
end

.read_token_from_query_string(uri) ⇒ Object



24
25
26
27
28
29
# File 'lib/keycloak-api-rails/helper.rb', line 24

def self.read_token_from_query_string(uri)
  parsed_uri         = URI.parse(uri)
  query              = URI.decode_www_form(parsed_uri.query || "")
  query_string_token = query.detect { |param| param.first == QUERY_STRING_TOKEN_KEY }
  query_string_token&.second
end