Class: Hieraviz::AuthGitlab
- Inherits:
-
Object
- Object
- Hieraviz::AuthGitlab
- Includes:
- Utilities
- Defined in:
- lib/hieraviz/auth_gitlab.rb
Overview
class to manage gitlab oauth2 connection and authorization checks
Instance Method Summary collapse
- #access_token(request, code) ⇒ Object
- #authorized?(token) ⇒ Boolean
- #check_authorization(resource_required, token) ⇒ Object
- #get_response(url, token) ⇒ Object
-
#initialize(settings) ⇒ AuthGitlab
constructor
A new instance of AuthGitlab.
- #login_url(request) ⇒ Object
- #user_info(token) ⇒ Object
Methods included from Utilities
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
35 36 37 38 39 40 41 |
# File 'lib/hieraviz/auth_gitlab.rb', line 35 def (token) resource_required = @settings['resource_required'] if resource_required return (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 (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..split(/\n/)[1])['message'] } end end |
#login_url(request) ⇒ Object
31 32 33 |
# File 'lib/hieraviz/auth_gitlab.rb', line 31 def login_url(request) @client.auth_code.(redirect_uri: redirect_uri(request.url)) end |
#user_info(token) ⇒ Object
55 56 57 |
# File 'lib/hieraviz/auth_gitlab.rb', line 55 def user_info(token) get_response('/api/v3/user', token) end |