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