Class: Devise::RpxConnectable::Strategies::RpxConnectable
- Inherits:
-
Strategies::Base
- Object
- Strategies::Base
- Devise::RpxConnectable::Strategies::RpxConnectable
- Defined in:
- lib/devise_rpx_connectable/strategy.rb
Overview
Default strategy for signing in a user using RPX. Redirects to sign_in page if it’s not authenticated
Instance Method Summary collapse
-
#authenticate! ⇒ Object
Authenticate user with RPX.
- #valid? ⇒ Boolean
Instance Method Details
#authenticate! ⇒ Object
Authenticate user with RPX.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/devise_rpx_connectable/strategy.rb', line 18 def authenticate! klass = mapping.to raise StandardError, "RPXNow API key is not defined, please see the documentation of RPXNow gem to setup it." unless RPXNow.api_key.present? request_keys = klass.request_keys.inject({}) do |res, k| res[k] = params[k] res end rpx_user = RPXNow.user_data(params[:token], { :additional => klass.rpx_additional_user_data, :extended => klass.rpx_extended_user_data }) fail!(:rpx_invalid) and return unless rpx_user if user = klass.authenticate_with_rpx(:identifier => rpx_user["identifier"], :request_keys => request_keys ) user.on_before_rpx_success(rpx_user) success!(user) return end fail!(:rpx_invalid) and return unless klass.rpx_auto_create_account? user = klass.new user.store_rpx_credentials!(rpx_user.merge(:request_keys => request_keys)) user.on_before_rpx_auto_create(rpx_user) user.save(:validate => false) user.on_before_rpx_success(rpx_user) success!(user) end |
#valid? ⇒ Boolean
12 13 14 |
# File 'lib/devise_rpx_connectable/strategy.rb', line 12 def valid? valid_controller? && valid_params? && mapping.to.respond_to?('authenticate_with_rpx') end |