Class: OmniAuth::Strategies::Mixin
- Inherits:
-
OAuth2
- Object
- OAuth2
- OmniAuth::Strategies::Mixin
- Defined in:
- lib/omniauth/strategies/mixin.rb,
lib/omniauth/strategies/mixin/client.rb
Overview
OmniAuth strategy for authenticating with Mixin using OAuth2
Defined Under Namespace
Classes: Client
Instance Method Summary collapse
- #authorize_params ⇒ Object
- #build_access_token ⇒ Object
-
#callback_url ⇒ Object
Override callback_url to use modern URI parsing.
- #client ⇒ Object
- #raw_info ⇒ Object
- #valid_request? ⇒ Boolean
Instance Method Details
#authorize_params ⇒ Object
98 99 100 101 102 103 |
# File 'lib/omniauth/strategies/mixin.rb', line 98 def super.tap do |params| params[:state] = SecureRandom.hex(16) session["omniauth.state"] = params[:state] end end |
#build_access_token ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/omniauth/strategies/mixin.rb', line 48 def build_access_token verifier = request.params["code"] client.get_token( { client_id: .client_id, client_secret: .client_secret, code: verifier, grant_type: "authorization_code", redirect_uri: callback_url } ) rescue ::OAuth2::Error => e raise e # Simply re-raise the error for testing purposes rescue StandardError => e raise ::OAuth2::Error, e. end |
#callback_url ⇒ Object
Override callback_url to use modern URI parsing
75 76 77 |
# File 'lib/omniauth/strategies/mixin.rb', line 75 def callback_url full_host + callback_path end |
#client ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/omniauth/strategies/mixin.rb', line 79 def client @client ||= ::OmniAuth::Strategies::Mixin::Client.new( .client_id, .client_secret, deep_symbolize(.).merge( connection_opts: { request: { timeout: 5, open_timeout: 2 } } ) ) end |
#raw_info ⇒ Object
65 66 67 68 69 70 71 72 |
# File 'lib/omniauth/strategies/mixin.rb', line 65 def raw_info @raw_info ||= begin response = access_token.get("/me") parse_nested_response(response) rescue ::OAuth2::Error, JSON::ParserError => e handle_raw_info_error(e) end end |
#valid_request? ⇒ Boolean
91 92 93 94 95 96 |
# File 'lib/omniauth/strategies/mixin.rb', line 91 def valid_request? return false unless request.params["state"] return false unless session["omniauth.state"] request.params["state"] == session["omniauth.state"] end |