Class: OmniAuth::Strategies::Mobileid
- Inherits:
-
Object
- Object
- OmniAuth::Strategies::Mobileid
- Includes:
- OmniAuth::Strategy
- Defined in:
- lib/omniauth/strategies/mobileid.rb
Constant Summary collapse
- PhaseReadPin =
'read_pin'
- PhaseAuhtenticated =
'authenticated'
Instance Method Summary collapse
- #auth_hash ⇒ Object
-
#authenticate(phone, personal_code) ⇒ Object
Authentication message.
-
#authentication_status(session_code) ⇒ Object
Authentication status message.
- #callback_phase ⇒ Object
- #failure_reason ⇒ Object
- #get_authentication_status ⇒ Object
- #perform ⇒ Object
- #perform_authentication ⇒ Object
- #request_phase ⇒ Object
- #request_session_code ⇒ Object
- #user_data ⇒ Object
- #user_info ⇒ Object
Instance Method Details
#auth_hash ⇒ Object
85 86 87 88 89 90 91 92 93 94 |
# File 'lib/omniauth/strategies/mobileid.rb', line 85 def auth_hash OmniAuth::Utils.deep_merge(super, { 'uid' => user_data[:user_id_code], 'user_info' => user_info, 'read_pin' => { 'challenge_id' => user_data[:challenge_id], 'session_code' => user_data[:sesscode]}, 'extra' => {'user_hash' => user_data} }) end |
#authenticate(phone, personal_code) ⇒ Object
Authentication message
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/omniauth/strategies/mobileid.rb', line 107 def authenticate(phone, personal_code) data = { :phone => phone, :personal_code => personal_code, :language => [:language], :country_code => [:country_code], :message_to_display => [:message_to_display], :service_name => [:service_name], :messaging_mode => [:messaging_mode], :async_configuration => [:async_configuration], :return_cert_data => false, :return_revocation_data => false } self.mobileid_client.authenticate(data) end |
#authentication_status(session_code) ⇒ Object
Authentication status message
125 126 127 |
# File 'lib/omniauth/strategies/mobileid.rb', line 125 def authentication_status(session_code) self.mobileid_client.authentication_status(session_code) end |
#callback_phase ⇒ Object
69 70 71 72 |
# File 'lib/omniauth/strategies/mobileid.rb', line 69 def callback_phase debug "callback_phase" fail!(failure_reason) end |
#failure_reason ⇒ Object
74 75 76 77 78 79 |
# File 'lib/omniauth/strategies/mobileid.rb', line 74 def failure_reason return :invalid_credentials if user_data.blank? code = (user_data[:faultstring] || user_data[:status]).try(:downcase) "error_#{code || 'unknown'}" end |
#get_authentication_status ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/omniauth/strategies/mobileid.rb', line 54 def get_authentication_status debug 'get_authentication_status' @auth_data = authentication_status(request_session_code) debug @auth_data.inspect if ['USER_AUTHENTICATED', 'OUTSTANDING_TRANSACTION'].include?(user_data[:status]) @env['omniauth.phase'] = user_data[:status] == 'USER_AUTHENTICATED' ? PhaseAuhtenticated : PhaseReadPin @env['REQUEST_METHOD'] = 'GET' @env['PATH_INFO'] = "#{OmniAuth.config.path_prefix}/#{name}/callback" call_app! else fail!(failure_reason) end end |
#perform ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/omniauth/strategies/mobileid.rb', line 26 def perform if request_session_code # Session is in :read_pin status get_authentication_status else perform_authentication end end |
#perform_authentication ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/omniauth/strategies/mobileid.rb', line 38 def perform_authentication debug 'perform_authentication' @auth_data = authenticate(request.params['phone'], request.params['personal_code']) debug user_data.inspect if user_data[:status] == 'OK' @env['omniauth.auth'] = auth_hash @env['omniauth.phase'] = PhaseReadPin @env['REQUEST_METHOD'] = 'GET' @env['PATH_INFO'] = "#{OmniAuth.config.path_prefix}/#{name}/callback" call_app! else fail!(failure_reason) end end |
#request_phase ⇒ Object
22 23 24 |
# File 'lib/omniauth/strategies/mobileid.rb', line 22 def request_phase perform end |
#request_session_code ⇒ Object
34 35 36 |
# File 'lib/omniauth/strategies/mobileid.rb', line 34 def request_session_code request.params['session_code'] end |
#user_data ⇒ Object
81 82 83 |
# File 'lib/omniauth/strategies/mobileid.rb', line 81 def user_data @auth_data end |
#user_info ⇒ Object
96 97 98 99 100 101 102 103 104 |
# File 'lib/omniauth/strategies/mobileid.rb', line 96 def user_info { 'name' => "#{user_data[:user_givenname]} #{user_data[:user_surname]}", 'first_name' => user_data[:user_givenname], 'last_name' => user_data[:user_surname], 'personal_code' => user_data[:user_id_code], 'user_cn' => user_data[:user_cn] } end |