feat: don't allow password login for SAML user

This commit is contained in:
Shivam Mishra
2025-08-28 14:34:18 +05:30
parent ecc1857f63
commit f6fe1b130b
@@ -3,6 +3,7 @@ class DeviseOverrides::SessionsController < DeviseTokenAuth::SessionsController
# Unpermitted parameter: session
wrap_parameters format: []
before_action :process_sso_auth_token, only: [:create]
before_action :check_saml_user, only: [:create]
def new
redirect_to login_page_url(error: 'access-denied')
@@ -46,6 +47,24 @@ class DeviseOverrides::SessionsController < DeviseTokenAuth::SessionsController
user = User.from_email(params[:email])
@resource = user if user&.valid_sso_auth_token?(params[:sso_auth_token])
end
def check_saml_user
# Skip if using SSO token (SAML users can use SSO tokens)
return if params[:sso_auth_token].present?
return if params[:email].blank?
user = User.from_email(params[:email])
return unless user&.saml_user?
render_saml_user_error
end
def render_saml_user_error
render json: {
success: false,
errors: [I18n.t('messages.login_saml_user')]
}, status: :unauthorized
end
end
DeviseOverrides::SessionsController.prepend_mod_with('DeviseOverrides::SessionsController')