class WmOktaHelper::GetUserGroups

Public Class Methods

new(options) click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 7
def initialize(options)
  @user = options[:user]
  @okta_org = options[:okta_org]
  @okta_domain = options[:okta_domain]
  @api_key = options[:api_key]
end

Public Instance Methods

call() click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 14
def call
  okta_groups
end

Private Instance Methods

endpoint() click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 24
def endpoint
  "api/v1/users/#{@user}/groups"
end
fetch_data() click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 41
def fetch_data
  uri = URI.parse(site)
  req_options = { use_ssl: uri.scheme == 'https' }

  response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
    http.request(request)
  end
  response.body.present? ? JSON.parse(response.body) : []
end
okta_groups() click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 32
def okta_groups
  groups = []
  fetch_data.each do |g|
    group_name = g.dig('profile', 'name')
    groups << group_name if group_name.include?('otto_')
  end
  groups
end
request() click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 51
def request
  @request ||= Net::HTTP::Get.new(request_url)
  @request.content_type = 'application/json'
  @request['Accept'] = 'application/json'
  @request['Authorization'] = "SSWS #{@api_key}"
  @request
end
request_url() click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 28
def request_url
  URI("#{site}/#{endpoint}")
end
site() click to toggle source
# File lib/wm_okta_helper/get_user_groups.rb, line 20
def site
  "https://#{@okta_org}.#{@okta_domain}.com"
end