class EtCcdClient::IdamClient

Attributes

config[RW]
logger[RW]
service_token[RW]
user_details[RW]
user_token[RW]

Public Class Methods

new(config: ::EtCcdClient.config) click to toggle source
# File lib/et_ccd_client/idam_client.rb, line 11
def initialize(config: ::EtCcdClient.config)
  self.config = config
  self.logger = config.logger
  self.service_token = nil
  self.user_token = nil
  self.user_details = nil
end

Public Instance Methods

login(username: config.sidam_username, password: config.sidam_password) click to toggle source
# File lib/et_ccd_client/idam_client.rb, line 19
def login(username: config.sidam_username, password: config.sidam_password)
  logger.tagged('EtCcdClient::IdamClient') do
    self.service_token = exchange_service_token
    self.user_token = exchange_sidam_user_token(username, password)
    self.user_details = fetch_user_details
  end
end

Private Instance Methods

exchange_service_token() click to toggle source
# File lib/et_ccd_client/idam_client.rb, line 32
def exchange_service_token
  url = config.idam_service_token_exchange_url
  data = { microservice: config.microservice, oneTimePassword: otp }.to_json
  post_request(url, data, log_subject: 'Idam service token exchange', decode: false)
end
exchange_sidam_user_token(username, password) click to toggle source
# File lib/et_ccd_client/idam_client.rb, line 38
def exchange_sidam_user_token(username, password)
  url = config.idam_user_token_exchange_url
  resp = post_request(url, { username: username, password: password }, log_subject: 'Idam user token exchange')
  resp['access_token']
end
fetch_user_details() click to toggle source
# File lib/et_ccd_client/idam_client.rb, line 44
def fetch_user_details
  url = config.user_details_url
  get_request(url, extra_headers: {'Accept' => 'application/json', 'Authorization' => user_token}, log_subject: 'Idam get user details')
end
otp() click to toggle source
# File lib/et_ccd_client/idam_client.rb, line 49
def otp
  totp.now
end
totp() click to toggle source
# File lib/et_ccd_client/idam_client.rb, line 53
def totp
  @totp ||= ROTP::TOTP.new(config.microservice_secret)
end