diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/auth/sessions_controller.rb | 9 | ||||
-rw-r--r-- | app/models/concerns/omniauthable.rb | 3 |
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 |