Class: OmniAuth::Strategies::Airtable
- Inherits:
-
OAuth2
- Object
- OAuth2
- OmniAuth::Strategies::Airtable
- Defined in:
- lib/omniauth/strategies/airtable.rb
Constant Summary collapse
- SITE_REGEXP =
/(?:https:\/\/)?(?:([^.]+)\.)?airtable\.com/
Instance Method Summary collapse
- #authorize_params ⇒ Object
- #basic_auth_header(client_id, client_secret) ⇒ Object
- #build_access_token ⇒ Object
- #callback_url ⇒ Object
- #me ⇒ Object
- #raw_info ⇒ Object
- #request_phase ⇒ Object
- #smart_client_id ⇒ Object
- #smart_client_secret ⇒ Object
Instance Method Details
#authorize_params ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/omniauth/strategies/airtable.rb', line 28 def 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_token ⇒ Object
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: ..site, authorize_url: .., token_url: ..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(.auth_token_params)) else super end end |
#callback_url ⇒ Object
78 79 80 |
# File 'lib/omniauth/strategies/airtable.rb', line 78 def callback_url .redirect_url || (full_host + callback_path) end |
#me ⇒ Object
65 66 67 68 |
# File 'lib/omniauth/strategies/airtable.rb', line 65 def me access_token.[:mode] = :header @me ||= access_token.get('v0/meta/whoami', :headers => { 'Content-Type' => 'application/json' }).parsed end |
#raw_info ⇒ Object
61 62 63 |
# File 'lib/omniauth/strategies/airtable.rb', line 61 def raw_info @raw_info ||= [:extra_client_id_and_client_secret] ? { client_id: smart_client_id, client_secret: smart_client_secret } : {} end |
#request_phase ⇒ Object
24 25 26 |
# File 'lib/omniauth/strategies/airtable.rb', line 24 def request_phase super end |
#smart_client_id ⇒ Object
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']..client_id end |
#smart_client_secret ⇒ Object
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']..client_secret end |