Class: OmniAuth::Strategies::Airtable

Inherits:
OAuth2
  • Object
show all
Defined in:
lib/omniauth/strategies/airtable.rb

Constant Summary collapse

SITE_REGEXP =
/(?:https:\/\/)?(?:([^.]+)\.)?airtable\.com/

Instance Method Summary collapse

Instance Method Details

#authorize_paramsObject



28
29
30
31
32
33
34
35
36
# File 'lib/omniauth/strategies/airtable.rb', line 28

def authorize_params
  super.tap do |params|
    %w[client_options].each do |v|
      if request.params[v]
        params[v.to_sym] = request.params[v]
      end
    end
  end
end

#basic_auth_header(client_id, client_secret) ⇒ Object



82
83
84
# File 'lib/omniauth/strategies/airtable.rb', line 82

def basic_auth_header(client_id, client_secret)
  "Basic " + Base64.strict_encode64("#{client_id}:#{client_secret}")
end

#build_access_tokenObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/omniauth/strategies/airtable.rb', line 38

def build_access_token
  verifier = request.params["code"]
  # Override regular client when using setup: proc
  if env['omniauth.params']['client_id'] && env['omniauth.params']['client_secret']
    client = ::OAuth2::Client.new(
      env['omniauth.params']['client_id'],
      env['omniauth.params']['client_secret'],
      site: options.client_options.site,
      authorize_url: options.client_options.authorize_url,
      token_url: options.client_options.token_url
    )
    client.auth_code.get_token(verifier, {:redirect_uri => callback_url}.merge(token_params.merge!(headers: {'Authorization' => basic_auth_header(env['omniauth.params']['client_id'], env['omniauth.params']['client_secret']) }).to_hash(:symbolize_keys => true)), deep_symbolize(options.auth_token_params))
  else
    super
  end
end

#callback_urlObject



78
79
80
# File 'lib/omniauth/strategies/airtable.rb', line 78

def callback_url
  options.redirect_url || (full_host + callback_path)
end

#meObject



65
66
67
68
# File 'lib/omniauth/strategies/airtable.rb', line 65

def me
  access_token.options[:mode] = :header
  @me ||= access_token.get('v0/meta/whoami', :headers => { 'Content-Type' => 'application/json' }).parsed
end

#raw_infoObject



61
62
63
# File 'lib/omniauth/strategies/airtable.rb', line 61

def raw_info
  @raw_info ||= options[:extra_client_id_and_client_secret] ? { client_id: smart_client_id, client_secret: smart_client_secret } : {}
end

#request_phaseObject



24
25
26
# File 'lib/omniauth/strategies/airtable.rb', line 24

def request_phase
  super
end

#smart_client_idObject



70
71
72
# File 'lib/omniauth/strategies/airtable.rb', line 70

def smart_client_id
  @smart_client_id ||= env['omniauth.params']['client_id'] || env['omniauth.strategy'].options.client_id
end

#smart_client_secretObject



74
75
76
# File 'lib/omniauth/strategies/airtable.rb', line 74

def smart_client_secret
  @smart_client_secret ||= env['omniauth.params']['client_secret'] || env['omniauth.strategy'].options.client_secret
end