class Hieraviz::AuthGitlab

class to manage gitlab oauth2 connection and authorization checks

Public Class Methods

new(settings) click to toggle source
# File lib/hieraviz/auth_gitlab.rb, line 9
def initialize(settings)
  @settings = settings
  @client = OAuth2::Client.new(
    @settings['application_id'],
    @settings['secret'],
    site: @settings['host']
  )
end

Public Instance Methods

access_token(request, code) click to toggle source
# File lib/hieraviz/auth_gitlab.rb, line 18
def access_token(request, code)
  @client.auth_code.get_token(code, redirect_uri: redirect_uri(request.url))
end
authorized?(token) click to toggle source
# File lib/hieraviz/auth_gitlab.rb, line 35
def authorized?(token)
  resource_required = @settings['resource_required']
  if resource_required
    return check_authorization(resource_required, token)
  end
  true
end
check_authorization(resource_required, token) click to toggle source
# File lib/hieraviz/auth_gitlab.rb, line 43
def check_authorization(resource_required, token)
  resp = get_response(resource_required, token)
  resp_required_response_key = resp[@settings['required_response_key']].to_s
  resp_required_response_value = @settings['required_response_value'].to_s
  if resp['error'] || 
    ( resp_required_response_key && 
      resp_required_response_key != resp_required_response_value)
    return false
  end
  true
end
get_response(url, token) click to toggle source
# File lib/hieraviz/auth_gitlab.rb, line 22
def get_response(url, token)
  a_token = OAuth2::AccessToken.new(@client, token)
  begin
    JSON.parse(a_token.get(url).body)
  rescue StandardError => error
    { 'error' => JSON.parse(error.message.split(/\n/)[1])['message'] }
  end
end
login_url(request) click to toggle source
# File lib/hieraviz/auth_gitlab.rb, line 31
def login_url(request)
  @client.auth_code.authorize_url(redirect_uri: redirect_uri(request.url))
end
user_info(token) click to toggle source
# File lib/hieraviz/auth_gitlab.rb, line 55
def user_info(token)
  get_response('/api/v3/user', token)
end