@@ -3,7 +3,6 @@ class CASino::SessionsController < CASino::ApplicationController
33 include CASino ::AuthenticationProcessor
44 include CASino ::TwoFactorAuthenticatorProcessor
55
6- before_action :validate_login_ticket , only : [ :create ]
76 before_action :ensure_service_allowed , only : [ :new , :create ]
87 before_action :load_ticket_granting_ticket_from_parameter , only : [ :validate_otp ]
98 before_action :ensure_signed_in , only : [ :index , :destroy ]
@@ -15,18 +14,21 @@ def index
1514 end
1615
1716 def new
17+ @external_authenticators = authenticators ( :external_authenticators )
18+ @login_ticket = CASino ::LoginTicket . create . ticket
1819 tgt = current_ticket_granting_ticket
1920 return handle_signed_in ( tgt ) unless params [ :renew ] || tgt . nil?
2021 redirect_to ( params [ :service ] ) if params [ :gateway ] && params [ :service ] . present?
2122 end
2223
2324 def create
24- validation_result = validate_login_credentials ( params [ :username ] , params [ :password ] )
25- if !validation_result
26- log_failed_login params [ :username ]
27- show_login_error I18n . t ( 'login_credential_acceptor.invalid_login_credentials' )
25+ if CASino ::LoginTicket . consume ( params [ :lt ] )
26+ logger . debug "params[:lt]: #{ params [ :lt ] } successfully validated"
27+ authenticate_user
2828 else
29- sign_in ( validation_result , long_term : params [ :rememberMe ] , credentials_supplied : true )
29+ external_authenticators = authenticators ( :external_authenticators )
30+ log_failed_login params [ :username ]
31+ show_login_error ( I18n . t ( 'login_credential_acceptor.invalid_login_credentials' ) , external_authenticators )
3032 end
3133 end
3234
@@ -62,17 +64,31 @@ def validate_otp
6264
6365 private
6466
65- def show_login_error ( message )
66- flash . now [ :error ] = message
67- render :new , status : :forbidden
67+ def validate_credentials
68+ if params [ :external ]
69+ validate_external_credentials ( params , cookies )
70+ else
71+ validate_login_credentials ( params [ :username ] , params [ :password ] )
72+ end
6873 end
6974
70- def validate_login_ticket
71- unless CASino ::LoginTicket . consume ( params [ :lt ] )
72- show_login_error I18n . t ( 'login_credential_acceptor.invalid_login_ticket' )
75+ def authenticate_user
76+ validation_result = validate_credentials
77+ if !validation_result . nil?
78+ sign_in ( validation_result , long_term : params [ :rememberMe ] , credentials_supplied : true )
79+ else
80+ external_authenticators = authenticators ( :external_authenticators )
81+ log_failed_login params [ :username ]
82+ show_login_error ( I18n . t ( 'login_credential_acceptor.invalid_login_credentials' ) , external_authenticators )
7383 end
7484 end
7585
86+ def show_login_error ( message , external_authenticators )
87+ flash . now [ :error ] = message
88+ @external_authenticators = external_authenticators
89+ render :new , status : :forbidden
90+ end
91+
7692 def ensure_service_allowed
7793 if params [ :service ] . present? && !service_allowed? ( params [ :service ] )
7894 render 'service_not_allowed' , status : :forbidden
0 commit comments