From d9819d9c2a1e953a360b62d2a67ea000616ca2c6 Mon Sep 17 00:00:00 2001 From: Eric Espie Date: Mon, 28 Feb 2022 11:55:45 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B04784=20-=20CAS=20authentication=20issue?= =?UTF-8?q?=20with=20iTop=203.0=20*=20Fix=20regression=20when=20setting=20?= =?UTF-8?q?cas=20as=20first=20login=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2.x/authent-cas/src/CASLoginExtension.php | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/datamodels/2.x/authent-cas/src/CASLoginExtension.php b/datamodels/2.x/authent-cas/src/CASLoginExtension.php index 71a8e1277..9d8d6e6c0 100644 --- a/datamodels/2.x/authent-cas/src/CASLoginExtension.php +++ b/datamodels/2.x/authent-cas/src/CASLoginExtension.php @@ -29,6 +29,8 @@ use utils; */ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExtension, iLoginUIExtension { + const LOGIN_MODE = 'cas'; + /** * Return the list of supported login modes for this plugin * @@ -36,7 +38,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte */ public function ListSupportedLoginModes() { - return array('cas'); + return array(static::LOGIN_MODE); } protected function OnStart(&$iErrorCode) @@ -47,12 +49,12 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnReadCredentials(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (empty(Session::Get('login_mode')) || Session::Get('login_mode') == static::LOGIN_MODE) { static::InitCASClient(); if (phpCAS::isAuthenticated()) { - Session::Set('login_mode', 'cas'); + Session::Set('login_mode', static::LOGIN_MODE); Session::Set('auth_user', phpCAS::getUser()); Session::Unset('login_will_redirect'); } @@ -68,7 +70,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte $iErrorCode = LoginWebPage::EXIT_CODE_MISSINGLOGIN; return LoginWebPage::LOGIN_FSM_ERROR; } - Session::Set('login_mode', 'cas'); + Session::Set('login_mode', static::LOGIN_MODE); phpCAS::forceAuthentication(); // Redirect to CAS and exit } } @@ -77,7 +79,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnCheckCredentials(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { if (!Session::IsSet('auth_user')) { @@ -94,7 +96,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnCredentialsOK(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { $sAuthUser = Session::Get('auth_user'); if (!LoginWebPage::CheckUser($sAuthUser)) @@ -109,7 +111,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnError(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { Session::Unset('phpCAS'); if ($iErrorCode != LoginWebPage::EXIT_CODE_MISSINGLOGIN) @@ -124,7 +126,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnConnected(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { Session::Set('can_logoff', true); return LoginWebPage::CheckLoggedUser($iErrorCode); @@ -205,7 +207,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte $oLoginContext->SetLoaderPath(APPROOT.'env-'.utils::GetCurrentEnvironment().'/authent-cas/view'); $aData = array( - 'sLoginMode' => 'cas', + 'sLoginMode' => static::LOGIN_MODE, 'sLabel' => Dict::S('CAS:Login:SignIn'), 'sTooltip' => Dict::S('CAS:Login:SignInTooltip'), );