diff --git a/4dev/tests/ACL/CoreLibsACLLoginTest.php b/4dev/tests/ACL/CoreLibsACLLoginTest.php index 60958dcf..e2a28b0e 100644 --- a/4dev/tests/ACL/CoreLibsACLLoginTest.php +++ b/4dev/tests/ACL/CoreLibsACLLoginTest.php @@ -167,8 +167,10 @@ final class CoreLibsACLLoginTest extends TestCase // change_password, pw_username, pw_old_password, pw_new_password, // pw_new_password_confirm // 3[session]: override session set - // 4[error] : expected error code, 0 for all ok, 3000 for login page view - // note that 1000 (no db), 2000 (no session) must be tested too + // 4[error] : expected error code, 0 for all ok, 100 for login page view + // note that 1000 (no db), 2000 (no session), 3000 (options set error) + // must be tested too + // <1000 info, >=1000 critical error // 5[return] : expected return array, eg login_error code, // or other info data to match $tests = [ @@ -180,7 +182,7 @@ final class CoreLibsACLLoginTest extends TestCase [], [], [], - 3000, + 100, [ 'login_error' => 0, 'error_string' => 'Success: No error', @@ -198,7 +200,7 @@ final class CoreLibsACLLoginTest extends TestCase [], [], [], - 3000, + 100, [ 'login_error' => 0, 'error_string' => 'Success: No error', @@ -221,7 +223,7 @@ final class CoreLibsACLLoginTest extends TestCase [], [], [], - 3000, + 100, [ 'login_error' => 0, 'error_string' => 'Success: No error', @@ -308,7 +310,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => '', ], [], - 3000, + 100, [ 'login_error' => 102, 'error_string' => 'Fatal Error: ' @@ -329,7 +331,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'abc', ], [], - 3000, + 100, [ 'login_error' => 102, 'error_string' => 'Fatal Error: ' @@ -350,7 +352,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => '', ], [], - 3000, + 100, [ 'login_error' => 102, 'error_string' => 'Fatal Error: ' @@ -371,7 +373,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'abc', ], [], - 3000, + 100, [ 'login_error' => 1010, 'error_string' => 'Fatal Error: ' @@ -395,7 +397,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'abc', ], [], - 3000, + 100, [ // default password is plain text 'login_error' => 1012, @@ -421,7 +423,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'admin', ], [], - 3000, + 100, [ 'login_error' => 106, 'error_string' => 'Fatal Error: ' @@ -446,7 +448,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'admin', ], [], - 3000, + 100, [ 'login_error' => 104, 'error_string' => 'Fatal Error: ' @@ -471,7 +473,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'admin', ], [], - 3000, + 100, [ 'login_error' => 105, 'error_string' => 'Fatal Error: ' @@ -520,7 +522,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'admin', ], [], - 3000, + 100, [ 'login_error' => 107, 'error_string' => 'Fatal Error: ' @@ -574,7 +576,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'admin', ], [], - 3000, + 100, [ 'login_error' => 107, 'error_string' => 'Fatal Error: ' @@ -600,7 +602,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'admin', ], [], - 3000, + 100, [ 'login_error' => 107, 'error_string' => 'Fatal Error: ' @@ -625,7 +627,7 @@ final class CoreLibsACLLoginTest extends TestCase 'login_password' => 'admin', ], [], - 3000, + 100, [ 'login_error' => 108, 'error_string' => 'Fatal Error: ' @@ -761,7 +763,7 @@ final class CoreLibsACLLoginTest extends TestCase ], [], [], - 3000, + 100, [ 'login_error' => 1010, 'error_string' => 'Fatal Error: ' @@ -853,7 +855,7 @@ final class CoreLibsACLLoginTest extends TestCase ], [], [], - 3000, + 100, [ 'login_error' => 1101, 'error_string' => 'Fatal Error: ' @@ -909,7 +911,7 @@ final class CoreLibsACLLoginTest extends TestCase ], [], [], - 3000, + 100, [ 'login_error' => 1102, 'error_string' => 'Fatal Error: ' @@ -965,7 +967,7 @@ final class CoreLibsACLLoginTest extends TestCase ], [], [], - 3000, + 100, [ 'login_error' => 1102, 'error_string' => 'Fatal Error: ' @@ -992,7 +994,7 @@ final class CoreLibsACLLoginTest extends TestCase ], [], [], - 3000, + 100, [ 'login_error' => 1102, 'error_string' => 'Fatal Error: ' @@ -1133,7 +1135,7 @@ final class CoreLibsACLLoginTest extends TestCase $login_mock->expects($this->any()) ->method('loginTerminate') ->will( - $this->returnCallback(function ($code) { + $this->returnCallback(function ($message, $code) { throw new \Exception('', $code); }) ); @@ -1227,7 +1229,11 @@ final class CoreLibsACLLoginTest extends TestCase $login_mock->loginSetMaxLoginErrorCount($mock_settings['max_login_error_count']); // temporary wrong password $_POST['login_password'] = 'wrong'; - for ($run = 1, $max_run = $login_mock->loginGetMaxLoginErrorCount(); $run <= $max_run; $run++) { + for ( + $run = 1, $max_run = $login_mock->loginGetMaxLoginErrorCount(); + $run <= $max_run; + $run++ + ) { try { $login_mock->loginMainCall(); } catch (\Exception $e) { @@ -1475,10 +1481,10 @@ final class CoreLibsACLLoginTest extends TestCase // print "AJAX: " . $login_mock->loginGetAjaxFlag() . "\n"; // print "AJAX GLOBAL: " . ($GLOBALS['AJAX_PAGE'] ?? '{f}') . "\n"; // print "Login error expext: " . ($expected['login_error'] ?? '{0}') . "\n"; - // if this is 3000, then we do further error checks + // if this is 100, then we do further error checks if ( - $e->getCode() == 3000 || - !empty($_POST['login_exit']) && $_POST['login_exit'] == 3000 + $e->getCode() == 100 || + !empty($_POST['login_exit']) && $_POST['login_exit'] == 100 ) { $this->assertEquals( $expected['login_error'], @@ -1816,7 +1822,7 @@ final class CoreLibsACLLoginTest extends TestCase $login_mock->expects($this->any()) ->method('loginTerminate') ->will( - $this->returnCallback(function ($code) { + $this->returnCallback(function ($message, $code) { throw new \Exception('', $code); }) ); @@ -1930,7 +1936,7 @@ final class CoreLibsACLLoginTest extends TestCase $login_mock->expects($this->any()) ->method('loginTerminate') ->will( - $this->returnCallback(function ($code) { + $this->returnCallback(function ($message, $code) { throw new \Exception('', $code); }) ); @@ -2018,7 +2024,7 @@ final class CoreLibsACLLoginTest extends TestCase $login_mock->expects($this->any()) ->method('loginTerminate') ->will( - $this->returnCallback(function ($code) { + $this->returnCallback(function ($message, $code) { throw new \Exception('', $code); }) ); @@ -2114,7 +2120,7 @@ final class CoreLibsACLLoginTest extends TestCase $login_mock->expects($this->any()) ->method('loginTerminate') ->will( - $this->returnCallback(function ($code) { + $this->returnCallback(function ($message, $code) { throw new \Exception('', $code); }) ); diff --git a/www/lib/CoreLibs/ACL/Login.php b/www/lib/CoreLibs/ACL/Login.php index 9522d52c..1b3b8fee 100644 --- a/www/lib/CoreLibs/ACL/Login.php +++ b/www/lib/CoreLibs/ACL/Login.php @@ -240,7 +240,7 @@ class Login if (false === $this->loginSetOptions($options)) { // on failure, exit echo "Could not set options"; - $this->loginTerminate(4000); + $this->loginTerminate('Could not set options', 3000); } // string key, msg: string, flag: e (error), o (ok) @@ -392,11 +392,19 @@ class Login /** * Wrapper for exit calls * - * @param int $code + * @param string $message [=''] + * @param int $code [=0] * @return void */ - protected function loginTerminate($code = 0): void + protected function loginTerminate(string $message = '', int $code = 0): void { + // all below 1000 are info end, all above 1000 are critical -> should throw exception? + if ($code < 1000) { + $this->log->info($message, ['code' => $code]); + } else { + $this->log->critical($message, ['code' => $code]); + // throw new \Exception($message, $code); + } exit($code); } @@ -1810,14 +1818,14 @@ HTML; $this->login_error = 1; echo 'Could not connect to DB
'; // if I can't connect to the DB to auth exit hard. No access allowed - $this->loginTerminate(1000); + $this->loginTerminate('Could not connect to DB', 1000); } // initial the session if there is no session running already // check if session exists and could be created if ($this->session->checkActiveSession() === false) { $this->login_error = 2; echo 'No active session found'; - $this->loginTerminate(2000); + $this->loginTerminate('No active session found', 2000); } // set internal page name $this->page_name = $this->loginReadPageName(); @@ -1916,7 +1924,7 @@ HTML; $this->loginPrintLogin(); } // exit so we don't process anything further, at all - $this->loginTerminate(3000); + $this->loginTerminate('Exit after non ajax page load', 100); } else { // if we are on an ajax page reset any POST/GET array data to avoid // any accidentical processing going on @@ -1924,7 +1932,7 @@ HTML; $_GET = []; // set the action to login so we can trigger special login html return $_POST['action'] = 'login'; - $_POST['login_exit'] = 3000; + $_POST['login_exit'] = 100; $_POST['login_error'] = $this->loginGetLastErrorCode(); $_POST['login_error_text'] = $this->loginGetErrorMsg( $this->loginGetLastErrorCode(),