Class: Hieraviz::AuthGitlab

Inherits:
Object
  • Object
show all
Includes:
Utilities
Defined in:
lib/hieraviz/auth_gitlab.rb

Overview

class to manage gitlab oauth2 connection and authorization checks

Instance Method Summary collapse

Methods included from Utilities

#redirect_uri

Constructor Details

#initialize(settings) ⇒ AuthGitlab

Returns a new instance of AuthGitlab.



9
10
11
12
13
14
15
16
# 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

Instance Method Details

#access_token(request, code) ⇒ Object



18
19
20
# 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) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
39
40
41
# 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) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
# 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) ⇒ Object



22
23
24
25
26
27
28
29
# 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) ⇒ Object



31
32
33
# File 'lib/hieraviz/auth_gitlab.rb', line 31

def (request)
  @client.auth_code.authorize_url(redirect_uri: redirect_uri(request.url))
end

#user_info(token) ⇒ Object



55
56
57
# File 'lib/hieraviz/auth_gitlab.rb', line 55

def (token)
  get_response('/api/v3/user', token)
end