Class: OmniAuth::Strategies::Identity
- Inherits:
-
Object
- Object
- OmniAuth::Strategies::Identity
- Includes:
- OmniAuth::Strategy
- Defined in:
- lib/omniauth/strategies/identity.rb
Overview
The identity strategy allows you to provide simple internal user authentication using the same process flow that you use for external OmniAuth providers.
Instance Method Summary collapse
- #callback_phase ⇒ Object
- #identity ⇒ Object
- #model ⇒ Object
- #on_registration_path? ⇒ Boolean
- #other_phase ⇒ Object
- #registration_form ⇒ Object
- #registration_path ⇒ Object
- #registration_phase ⇒ Object
- #request_phase ⇒ Object
Instance Method Details
#callback_phase ⇒ Object
34 35 36 37 38 |
# File 'lib/omniauth/strategies/identity.rb', line 34 def callback_phase return fail!(:invalid_credentials) unless identity super end |
#identity ⇒ Object
105 106 107 108 109 110 111 112 113 |
# File 'lib/omniauth/strategies/identity.rb', line 105 def identity if [:locate_conditions].is_a? Proc conditions = instance_exec(request, &[:locate_conditions]) conditions.to_hash else conditions = [:locate_conditions].to_hash end @identity ||= model.authenticate(conditions, request['password']) end |
#model ⇒ Object
115 116 117 |
# File 'lib/omniauth/strategies/identity.rb', line 115 def model [:model] || ::Identity end |
#on_registration_path? ⇒ Boolean
101 102 103 |
# File 'lib/omniauth/strategies/identity.rb', line 101 def on_registration_path? on_path?(registration_path) end |
#other_phase ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/omniauth/strategies/identity.rb', line 40 def other_phase if [:enable_registration] && on_registration_path? if request.get? registration_form elsif request.post? registration_phase else call_app! end elsif [:enable_login] && on_request_path? # OmniAuth, by default, disables "GET" requests for security reasons. # This effectively disables omniauth-identity tool's login form feature. # Because it is disabled by default, and because enabling it would desecuritize all the other # OmniAuth strategies that may be implemented, we do not ask users to modify that setting. # Instead we hook in here in the "other_phase", with a config setting of our own: `enable_login` request_phase else call_app! end end |
#registration_form ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/omniauth/strategies/identity.rb', line 61 def registration_form if [:on_registration] [:on_registration].call(env) else OmniAuth::Form.build(title: 'Register Identity') do |f| [:fields].each do |field| f.text_field field.to_s.capitalize, field.to_s end f.password_field 'Password', 'password' f.password_field 'Confirm Password', 'password_confirmation' end.to_response end end |
#registration_path ⇒ Object
97 98 99 |
# File 'lib/omniauth/strategies/identity.rb', line 97 def registration_path [:registration_path] || "#{path_prefix}/#{name}/register" end |
#registration_phase ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/omniauth/strategies/identity.rb', line 75 def registration_phase attributes = ([:fields] + %i[password password_confirmation]).each_with_object({}) do |k, h| h[k] = request[k.to_s] end if model.respond_to?(:column_names) && model.column_names.include?('provider') attributes.reverse_merge!(provider: 'identity') end @identity = model.create(attributes) if @identity.persisted? env['PATH_INFO'] = callback_path callback_phase elsif [:on_failed_registration] env['omniauth.identity'] = @identity [:on_failed_registration].call(env) else registration_form end end |
#request_phase ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/omniauth/strategies/identity.rb', line 17 def request_phase if [:on_login] [:on_login].call(env) else OmniAuth::Form.build( title: ([:title] || 'Identity Verification'), url: callback_path ) do |f| f.text_field 'Login', 'auth_key' f.password_field 'Password', 'password' if [:enable_registration] f.html "<p align='center'><a href='#{registration_path}'>Create an Identity</a></p>" end end.to_response end end |