about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorGhislain Loaec <gloaec@cadoles.com>2018-02-23 01:16:17 +0100
committerEugen Rochko <eugen@zeonfederated.com>2018-02-23 01:16:17 +0100
commite668180044560e28bdc5eef94744c210013efcda (patch)
treebbf1f61814a0d12ebfa8ae0d7519e87d65071148 /app
parent8fa924e37282081946b2abfca91688e382713a2d (diff)
New variable OAUTH_REDIRECT_AT_SIGN_IN + Ref #6538 (not only SAML strategies) (#6540)
Diffstat (limited to 'app')
-rw-r--r--app/controllers/auth/sessions_controller.rb9
-rw-r--r--app/models/concerns/omniauthable.rb3
2 files changed, 11 insertions, 1 deletions
diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb
index 4fc41b378..42a3cb62c 100644
--- a/app/controllers/auth/sessions_controller.rb
+++ b/app/controllers/auth/sessions_controller.rb
@@ -10,6 +10,15 @@ class Auth::SessionsController < Devise::SessionsController
   prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create]
   before_action :set_instance_presenter, only: [:new]
 
+  def new
+    Devise.omniauth_configs.each do |provider, config|
+      if config.strategy.redirect_at_sign_in
+        return redirect_to(omniauth_authorize_path(resource_name, provider))
+      end
+    end
+    super
+  end
+
   def create
     super do |resource|
       remember_me(resource)
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb
index 7a396e301..87d93c1fd 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/omniauthable.rb
@@ -53,7 +53,8 @@ module Omniauthable
     private
 
     def user_params_from_auth(auth)
-      assume_verified   = Devise.omniauth_configs[:saml].strategy.security.assume_email_is_verified
+      strategy          = Devise.omniauth_configs[auth.provider.to_sym].strategy
+      assume_verified   = strategy.try(:security).try(:assume_email_is_verified)
       email_is_verified = auth.info.verified || auth.info.verified_email || assume_verified
       email             = auth.info.verified_email || auth.info.email
       email             = email_is_verified && !User.exists?(email: auth.info.email) && email