Module: Dina::Authentication

Defined in:
lib/dina/authentication/authentication.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.endpoint_urlObject

Returns the value of attribute endpoint_url.



65
66
67
# File 'lib/dina/authentication/authentication.rb', line 65

def endpoint_url
  @endpoint_url
end

Class Method Details

.config(options = {}) ⇒ Object

Sets Authentication configuration Options hash as follows:

token_store_file: "file to store the token",
user: "username provided by DINA admin in Keycloak",
password: "password provided by DINA admin in Keycloak",
server_name: "used locally to reference the token",
client_id: "provided by DINA admin in Keycloak",
endpoint_url: "DINA API URL without terminating slash",
authorization_url: "Keycloak authorization URL without terminating slash".
realm: "provided by DINA admin in Keycloak"

Parameters:

  • options (Hash) (defaults to: {})

    the configuration options

Raises:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/dina/authentication/authentication.rb', line 20

def self.config(options = {})
  raise ConfigItemMissing, "Missing token_store_file from config." unless options[:token_store_file]
  raise ConfigItemMissing, "Missing user from config." unless options[:user]
  raise ConfigItemMissing, "Missing password from config." unless options[:password]
  raise ConfigItemMissing, "Missing server_name from config." unless options[:server_name]
  raise ConfigItemMissing, "Missing client_id from config." unless options[:client_id]
  raise ConfigItemMissing, "Missing endpoint_url from config." unless options[:endpoint_url]
  raise ConfigItemMissing, "Missing authorization_url from config." unless options[:authorization_url]
  raise ConfigItemMissing, "Missing realm from config." unless options[:realm]

  if !options[:token_store_file].instance_of?(String) || !::File.exist?(options[:token_store_file])
    raise TokenStoreFileNotFound
  end

  @token_store_file = options[:token_store_file]
  @user = options[:user]
  @password = options[:password]
  @server_name = options[:server_name]
  @client_id = options[:client_id]
  @endpoint_url = options[:endpoint_url]
  Keycloak.auth_server_url = options[:authorization_url]
  Keycloak.realm = options[:realm]

  if ::File.zero?(@token_store_file)
    create_empty_token
  end
end

.headerString

Gets, sets, and renews a Bearer access token as required and produces a Header string

Returns:

  • (String)

    the Bearer token



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/dina/authentication/authentication.rb', line 52

def self.header
  if access_token.nil? || refresh_token.nil?
    set_token
  end

  if Time.now >= Time.parse(auth_expiry)
    renew_token
  end

  "Bearer " + access_token
end