c8755543f0
Enables frozen string for the following files: * lib/generators/**/*.rb * lib/gitaly/**/*.rb * lib/google_api/**/*.rb * lib/haml_lint/**/*.rb * lib/json_web_token/**/*.rb * lib/mattermost/**/*.rb * lib/microsoft_teams/**/*.rb * lib/object_storage/**/*.rb * lib/omni_auth/**/*.rb * lib/peek/**/*.rb * lib/rouge/**/*.rb * lib/rspec_flaky/**/*.rb * lib/system_check/**/*.rb Partially addresses #47424.
56 lines
1.2 KiB
Ruby
56 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module GoogleApi
|
|
class Auth
|
|
attr_reader :access_token, :redirect_uri, :state
|
|
|
|
ConfigMissingError = Class.new(StandardError)
|
|
|
|
def initialize(access_token, redirect_uri, state: nil)
|
|
@access_token = access_token
|
|
@redirect_uri = redirect_uri
|
|
@state = state
|
|
end
|
|
|
|
def authorize_url
|
|
client.auth_code.authorize_url(
|
|
redirect_uri: redirect_uri,
|
|
scope: scope,
|
|
state: state # This is used for arbitary redirection
|
|
)
|
|
end
|
|
|
|
def get_token(code)
|
|
ret = client.auth_code.get_token(code, redirect_uri: redirect_uri)
|
|
return ret.token, ret.expires_at
|
|
end
|
|
|
|
protected
|
|
|
|
def scope
|
|
raise NotImplementedError
|
|
end
|
|
|
|
private
|
|
|
|
def config
|
|
Gitlab::Auth::OAuth::Provider.config_for('google_oauth2')
|
|
end
|
|
|
|
def client
|
|
return @client if defined?(@client)
|
|
|
|
unless config
|
|
raise ConfigMissingError
|
|
end
|
|
|
|
@client = ::OAuth2::Client.new(
|
|
config.app_id,
|
|
config.app_secret,
|
|
site: 'https://accounts.google.com',
|
|
token_url: '/o/oauth2/token',
|
|
authorize_url: '/o/oauth2/auth'
|
|
)
|
|
end
|
|
end
|
|
end
|