Compare commits
5 Commits
46e44c19bf
...
v9.23.2.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba11a936db | ||
|
|
5343034768 | ||
|
|
880f15ac6f | ||
|
|
a46601fe03 | ||
|
|
022c39e791 |
@@ -13,7 +13,7 @@ if [ "${GO}" != "go" ]; then
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
BASE="/storage/var/www/html/developers/clemens/core_data/";
|
BASE="/storage/var/www/html/developers/clemens/core_data/";
|
||||||
SOURCE="${BASE}php_libraries/trunk/"
|
SOURCE="${BASE}php_libraries/master/"
|
||||||
TARGET="${BASE}composer-packages/CoreLibs-Composer-All/"
|
TARGET="${BASE}composer-packages/CoreLibs-Composer-All/"
|
||||||
|
|
||||||
rsync ${DRY_RUN}-Plzvrupt --stats --delete ${SOURCE}4dev/tests/ ${TARGET}test/phpunit/
|
rsync ${DRY_RUN}-Plzvrupt --stats --delete ${SOURCE}4dev/tests/ ${TARGET}test/phpunit/
|
||||||
|
|||||||
@@ -11,50 +11,34 @@ CREATE TABLE edit_log (
|
|||||||
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
||||||
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL,
|
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL,
|
||||||
ecuid VARCHAR,
|
ecuid VARCHAR,
|
||||||
ecuuid UUID, -- this is the one we want to use, full UUIDv4 from the edit user table
|
ecuuid UUID,
|
||||||
-- date_created equal, but can be overridden
|
|
||||||
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
-- session ID if set
|
|
||||||
session_id VARCHAR,
|
|
||||||
-- username
|
|
||||||
username VARCHAR,
|
username VARCHAR,
|
||||||
-- DEPRECATED [password]
|
|
||||||
password VARCHAR,
|
password VARCHAR,
|
||||||
ip_address JSONB, -- REMOTE_IP and all other IPs (X_FORWARD, etc) as JSON block
|
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||||
-- DEPRECATED [ip]
|
ip VARCHAR,
|
||||||
ip VARCHAR, -- just the REMOTE_IP, full set see ip_address
|
|
||||||
-- string blocks, general
|
|
||||||
error TEXT,
|
error TEXT,
|
||||||
event TEXT,
|
event TEXT,
|
||||||
-- bytea or string type storage of any data
|
|
||||||
data_binary BYTEA,
|
data_binary BYTEA,
|
||||||
data TEXT,
|
data TEXT,
|
||||||
-- set page name only
|
|
||||||
page VARCHAR,
|
page VARCHAR,
|
||||||
-- various info data sets
|
action VARCHAR,
|
||||||
|
action_id VARCHAR,
|
||||||
|
action_sub_id VARCHAR,
|
||||||
|
action_yes VARCHAR,
|
||||||
|
action_flag VARCHAR,
|
||||||
|
action_menu VARCHAR,
|
||||||
|
action_loaded VARCHAR,
|
||||||
|
action_value VARCHAR,
|
||||||
|
action_type VARCHAR,
|
||||||
|
action_error VARCHAR,
|
||||||
user_agent VARCHAR,
|
user_agent VARCHAR,
|
||||||
referer VARCHAR,
|
referer VARCHAR,
|
||||||
script_name VARCHAR,
|
script_name VARCHAR,
|
||||||
query_string VARCHAR,
|
query_string VARCHAR,
|
||||||
request_scheme VARCHAR, -- http or https
|
|
||||||
server_name VARCHAR,
|
server_name VARCHAR,
|
||||||
http_host VARCHAR,
|
http_host VARCHAR,
|
||||||
http_data JSONB,
|
http_accept VARCHAR,
|
||||||
-- DEPRECATED [http*]
|
http_accept_charset VARCHAR,
|
||||||
http_accept VARCHAR, -- in http_data
|
http_accept_encoding VARCHAR,
|
||||||
http_accept_charset VARCHAR, -- in http_data
|
session_id VARCHAR
|
||||||
http_accept_encoding VARCHAR, -- in http_data
|
|
||||||
-- any action var, -> same set in action_data as JSON
|
|
||||||
action_data JSONB,
|
|
||||||
-- DEPRECATED [action*]
|
|
||||||
action VARCHAR, -- in action_data
|
|
||||||
action_id VARCHAR, -- in action_data
|
|
||||||
action_sub_id VARCHAR, -- in action_data
|
|
||||||
action_yes VARCHAR, -- in action_data
|
|
||||||
action_flag VARCHAR, -- in action_data
|
|
||||||
action_menu VARCHAR, -- in action_data
|
|
||||||
action_loaded VARCHAR, -- in action_data
|
|
||||||
action_value VARCHAR, -- in action_data
|
|
||||||
action_type VARCHAR, -- in action_data
|
|
||||||
action_error VARCHAR -- in action_data
|
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ CREATE TABLE edit_user (
|
|||||||
strict SMALLINT DEFAULT 0,
|
strict SMALLINT DEFAULT 0,
|
||||||
locked SMALLINT DEFAULT 0,
|
locked SMALLINT DEFAULT 0,
|
||||||
protected SMALLINT NOT NULL DEFAULT 0,
|
protected SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
-- legacy, debug flags
|
||||||
|
debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
db_debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- is admin user
|
-- is admin user
|
||||||
admin SMALLINT NOT NULL DEFAULT 0,
|
admin SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- last login log
|
-- last login log
|
||||||
@@ -73,6 +76,8 @@ COMMENT ON COLUMN edit_user.deleted IS 'Login is deleted (master switch), overri
|
|||||||
COMMENT ON COLUMN edit_user.strict IS 'If too many failed logins user will be locked, default off';
|
COMMENT ON COLUMN edit_user.strict IS 'If too many failed logins user will be locked, default off';
|
||||||
COMMENT ON COLUMN edit_user.locked IS 'Locked from too many wrong password logins';
|
COMMENT ON COLUMN edit_user.locked IS 'Locked from too many wrong password logins';
|
||||||
COMMENT ON COLUMN edit_user.protected IS 'User can only be chnaged by admin user';
|
COMMENT ON COLUMN edit_user.protected IS 'User can only be chnaged by admin user';
|
||||||
|
COMMENT ON COLUMN edit_user.debug IS 'Turn debug flag on (legacy)';
|
||||||
|
COMMENT ON COLUMN edit_user.db_debug IS 'Turn DB debug flag on (legacy)';
|
||||||
COMMENT ON COLUMN edit_user.admin IS 'If set, this user is SUPER admin';
|
COMMENT ON COLUMN edit_user.admin IS 'If set, this user is SUPER admin';
|
||||||
COMMENT ON COLUMN edit_user.last_login IS 'Last succesfull login tiemstamp';
|
COMMENT ON COLUMN edit_user.last_login IS 'Last succesfull login tiemstamp';
|
||||||
COMMENT ON COLUMN edit_user.login_error_count IS 'Number of failed logins, reset on successful login';
|
COMMENT ON COLUMN edit_user.login_error_count IS 'Number of failed logins, reset on successful login';
|
||||||
|
|||||||
@@ -22,12 +22,8 @@ Not yet covered tests:
|
|||||||
*/
|
*/
|
||||||
final class CoreLibsACLLoginTest extends TestCase
|
final class CoreLibsACLLoginTest extends TestCase
|
||||||
{
|
{
|
||||||
private static \CoreLibs\DB\IO $db;
|
private static $db;
|
||||||
private static \CoreLibs\Logging\Logging $log;
|
private static $log;
|
||||||
|
|
||||||
private static string $edit_access_cuid;
|
|
||||||
private static string $edit_user_cuid;
|
|
||||||
private static string $edit_user_cuuid;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* start DB conneciton, setup DB, etc
|
* start DB conneciton, setup DB, etc
|
||||||
@@ -112,40 +108,14 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
self::$db->dbSetMaxQueryCall(-1);
|
self::$db->dbSetMaxQueryCall(-1);
|
||||||
// insert additional content for testing (locked user, etc)
|
// insert additional content for testing (locked user, etc)
|
||||||
$queries = [
|
$queries = [
|
||||||
<<<SQL
|
"INSERT INTO edit_access_data "
|
||||||
INSERT INTO edit_access_data (
|
. "(edit_access_id, name, value, enabled) VALUES "
|
||||||
edit_access_id, name, value, enabled
|
. "((SELECT edit_access_id FROM edit_access WHERE uid = 'AdminAccess'), "
|
||||||
) VALUES (
|
. "'test', 'value', 1)"
|
||||||
(SELECT edit_access_id FROM edit_access WHERE uid = 'AdminAccess'),
|
|
||||||
'test', 'value', 1
|
|
||||||
)
|
|
||||||
SQL
|
|
||||||
];
|
];
|
||||||
foreach ($queries as $query) {
|
foreach ($queries as $query) {
|
||||||
self::$db->dbExec($query);
|
self::$db->dbExec($query);
|
||||||
}
|
}
|
||||||
// read edit access cuid, edit user cuid and edit user cuuid
|
|
||||||
$row = self::$db->dbReturnRowParams(
|
|
||||||
"SELECT cuid FROM edit_access WHERE uid = $1",
|
|
||||||
["AdminAccess"]
|
|
||||||
);
|
|
||||||
self::$edit_access_cuid = $row['cuid'] ?? '';
|
|
||||||
if (empty(self::$edit_access_cuid)) {
|
|
||||||
self::markTestIncomplete(
|
|
||||||
'Cannot read edit access cuid for "AdminAccess".'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
$row = self::$db->dbReturnRowParams(
|
|
||||||
"SELECT cuid, cuuid FROM edit_user WHERE username = $1",
|
|
||||||
["admin"]
|
|
||||||
);
|
|
||||||
self::$edit_user_cuid = $row['cuid'] ?? '';
|
|
||||||
self::$edit_user_cuuid = $row['cuuid'] ?? '';
|
|
||||||
if (empty(self::$edit_user_cuid) || empty(self::$edit_user_cuuid)) {
|
|
||||||
self::markTestIncomplete(
|
|
||||||
'Cannot read edit user cuid or cuuid for "admin".'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// define mandatory constant
|
// define mandatory constant
|
||||||
// must set
|
// must set
|
||||||
@@ -265,25 +235,24 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'ajax_post_action' => 'login',
|
'ajax_post_action' => 'login',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'load, session eucuuid set only, php error' => [
|
'load, session euid set only, php error' => [
|
||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
],
|
],
|
||||||
[],
|
[],
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'LOGIN_EUID' => 1,
|
'EUID' => 1,
|
||||||
'LOGIN_EUCUID' => 'abc',
|
'ECUID' => 'abc',
|
||||||
'LOGIN_EUCUUID' => '1233456-1234-1234-1234-123456789012',
|
'ECUUID' => '1233456-1234-1234-1234-123456789012',
|
||||||
],
|
],
|
||||||
2,
|
2,
|
||||||
[],
|
[],
|
||||||
],
|
],
|
||||||
'load, session eucuuid set, all set' => [
|
'load, session euid set, all set' => [
|
||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -292,23 +261,22 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[],
|
[],
|
||||||
[],
|
[],
|
||||||
[
|
[
|
||||||
'LOGIN_EUID' => 1,
|
'EUID' => 1,
|
||||||
'LOGIN_EUCUID' => 'abc',
|
'ECUID' => 'abc',
|
||||||
'LOGIN_EUCUUID' => 'SET_EUCUUID_IN_TEST',
|
'ECUUID' => '1233456-1234-1234-1234-123456789012',
|
||||||
'LOGIN_USER_NAME' => '',
|
'USER_NAME' => '',
|
||||||
'LOGIN_GROUP_NAME' => '',
|
'GROUP_NAME' => '',
|
||||||
'LOGIN_ADMIN' => 1,
|
'ADMIN' => 1,
|
||||||
'LOGIN_GROUP_ACL_LEVEL' => -1,
|
'GROUP_ACL_LEVEL' => -1,
|
||||||
'LOGIN_PAGES_ACL_LEVEL' => [],
|
'PAGES_ACL_LEVEL' => [],
|
||||||
'LOGIN_USER_ACL_LEVEL' => -1,
|
'USER_ACL_LEVEL' => -1,
|
||||||
'LOGIN_USER_ADDITIONAL_ACL' => [],
|
'USER_ADDITIONAL_ACL' => [],
|
||||||
'LOGIN_GROUP_ADDITIONAL_ACL' => [],
|
'GROUP_ADDITIONAL_ACL' => [],
|
||||||
'LOGIN_UNIT_UID' => [
|
'UNIT_UID' => [
|
||||||
'AdminAccess' => '123456789012',
|
'AdminAccess' => 1,
|
||||||
],
|
],
|
||||||
'LOGIN_UNIT' => [
|
'UNIT' => [
|
||||||
'123456789012' => [
|
1 => [
|
||||||
'id' => 1,
|
|
||||||
'acl_level' => 80,
|
'acl_level' => 80,
|
||||||
'name' => 'Admin Access',
|
'name' => 'Admin Access',
|
||||||
'uid' => 'AdminAccess',
|
'uid' => 'AdminAccess',
|
||||||
@@ -320,8 +288,8 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'additional_acl' => []
|
'additional_acl' => []
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
// 'LOGIN_UNIT_DEFAULT' => '',
|
// 'UNIT_DEFAULT' => '',
|
||||||
// 'LOGIN_DEFAULT_ACL_LIST' => [],
|
// 'DEFAULT_ACL_LIST' => [],
|
||||||
],
|
],
|
||||||
0,
|
0,
|
||||||
[
|
[
|
||||||
@@ -329,7 +297,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -449,7 +416,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_deleted' => true
|
'test_deleted' => true
|
||||||
@@ -475,7 +441,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_enabled' => true
|
'test_enabled' => true
|
||||||
@@ -501,7 +466,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_locked' => true
|
'test_locked' => true
|
||||||
@@ -527,7 +491,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_get_locked' => true,
|
'test_get_locked' => true,
|
||||||
@@ -552,7 +515,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_locked_period_until' => 'on'
|
'test_locked_period_until' => 'on'
|
||||||
@@ -578,7 +540,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -598,7 +559,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -609,7 +569,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_locked_period_after' => 'on'
|
'test_locked_period_after' => 'on'
|
||||||
@@ -635,7 +594,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_locked_period_until' => 'on',
|
'test_locked_period_until' => 'on',
|
||||||
@@ -662,7 +620,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_login_user_id_locked' => true
|
'test_login_user_id_locked' => true
|
||||||
@@ -688,7 +645,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -707,7 +663,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -718,7 +673,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -738,7 +692,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -749,7 +702,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -769,7 +721,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -780,7 +731,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -800,7 +750,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -832,7 +781,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -856,7 +804,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -867,7 +814,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -891,7 +837,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -902,7 +847,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_login_user_id_revalidate_after' => 'on',
|
'test_login_user_id_revalidate_after' => 'on',
|
||||||
@@ -929,7 +873,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -950,7 +893,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -961,7 +903,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_login_user_id_valid_from' => 'on',
|
'test_login_user_id_valid_from' => 'on',
|
||||||
@@ -988,7 +929,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -1009,7 +949,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -1020,7 +959,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_login_user_id_valid_until' => 'on',
|
'test_login_user_id_valid_until' => 'on',
|
||||||
@@ -1047,7 +985,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
'page_access' => 'list',
|
'page_access' => 'list',
|
||||||
'test_login_user_id_valid_from' => 'on',
|
'test_login_user_id_valid_from' => 'on',
|
||||||
@@ -1075,7 +1012,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
[
|
[
|
||||||
'page_name' => 'edit_users.php',
|
'page_name' => 'edit_users.php',
|
||||||
'edit_access_id' => 1,
|
'edit_access_id' => 1,
|
||||||
'edit_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'edit_access_uid' => 'AdminAccess',
|
'edit_access_uid' => 'AdminAccess',
|
||||||
'edit_access_data' => 'test',
|
'edit_access_data' => 'test',
|
||||||
'base_access' => 'list',
|
'base_access' => 'list',
|
||||||
@@ -1106,7 +1042,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'admin_flag' => true,
|
'admin_flag' => true,
|
||||||
'check_access' => true,
|
'check_access' => true,
|
||||||
'check_access_id' => 1,
|
'check_access_id' => 1,
|
||||||
'check_access_cuid' => 'SET_EDIT_ACCESS_CUID_IN_TEST',
|
|
||||||
'check_access_data' => 'value',
|
'check_access_data' => 'value',
|
||||||
'base_access' => true,
|
'base_access' => true,
|
||||||
'page_access' => true,
|
'page_access' => true,
|
||||||
@@ -1176,11 +1111,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
$_POST[$post_var] = $post_value;
|
$_POST[$post_var] = $post_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set ingoing session cuuid if requested
|
|
||||||
if (isset($session['LOGIN_EUCUUID']) && $session['LOGIN_EUCUUID'] == 'SET_EUCUUID_IN_TEST') {
|
|
||||||
$session['LOGIN_EUCUUID'] = self::$edit_user_cuuid;
|
|
||||||
}
|
|
||||||
|
|
||||||
// set _SESSION data
|
// set _SESSION data
|
||||||
foreach ($session as $session_var => $session_value) {
|
foreach ($session as $session_var => $session_value) {
|
||||||
$_SESSION[$session_var] = $session_value;
|
$_SESSION[$session_var] = $session_value;
|
||||||
@@ -1439,19 +1369,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
|
|
||||||
// run test
|
// run test
|
||||||
try {
|
try {
|
||||||
// preset, we cannot set that in the provider
|
|
||||||
if (
|
|
||||||
isset($expected['check_access_cuid']) &&
|
|
||||||
$expected['check_access_cuid'] == 'SET_EDIT_ACCESS_CUID_IN_TEST'
|
|
||||||
) {
|
|
||||||
$expected['check_access_cuid'] = self::$edit_access_cuid;
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
isset($mock_settings['edit_access_cuid']) &&
|
|
||||||
$mock_settings['edit_access_cuid'] == 'SET_EDIT_ACCESS_CUID_IN_TEST'
|
|
||||||
) {
|
|
||||||
$mock_settings['edit_access_cuid'] = self::$edit_access_cuid;
|
|
||||||
}
|
|
||||||
// if ajax call
|
// if ajax call
|
||||||
// check if parameter, or globals (old type)
|
// check if parameter, or globals (old type)
|
||||||
// else normal call
|
// else normal call
|
||||||
@@ -1510,25 +1427,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
$login_mock->loginCheckAccessPage($mock_settings['page_access']),
|
$login_mock->loginCheckAccessPage($mock_settings['page_access']),
|
||||||
'Assert page access'
|
'Assert page access'
|
||||||
);
|
);
|
||||||
// - loginCheckEditAccessCuid
|
|
||||||
$this->assertEquals(
|
|
||||||
$expected['check_access'],
|
|
||||||
$login_mock->loginCheckEditAccessCuid($mock_settings['edit_access_cuid']),
|
|
||||||
'Assert check access'
|
|
||||||
);
|
|
||||||
// - loginCheckEditAccessValidCuid
|
|
||||||
$this->assertEquals(
|
|
||||||
$expected['check_access_cuid'],
|
|
||||||
$login_mock->loginCheckEditAccessValidCuid($mock_settings['edit_access_cuid']),
|
|
||||||
'Assert check access cuid valid'
|
|
||||||
);
|
|
||||||
// - loginGetEditAccessCuidFromUid
|
|
||||||
$this->assertEquals(
|
|
||||||
$expected['check_access_cuid'],
|
|
||||||
$login_mock->loginGetEditAccessCuidFromUid($mock_settings['edit_access_uid']),
|
|
||||||
'Assert check access uid to cuid valid'
|
|
||||||
);
|
|
||||||
// Deprecated
|
|
||||||
// - loginCheckEditAccess
|
// - loginCheckEditAccess
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected['check_access'],
|
$expected['check_access'],
|
||||||
@@ -1551,7 +1449,7 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected['check_access_data'],
|
$expected['check_access_data'],
|
||||||
$login_mock->loginGetEditAccessData(
|
$login_mock->loginGetEditAccessData(
|
||||||
$mock_settings['edit_access_uid'],
|
$mock_settings['edit_access_id'],
|
||||||
$mock_settings['edit_access_data']
|
$mock_settings['edit_access_data']
|
||||||
),
|
),
|
||||||
'Assert check access id data value valid'
|
'Assert check access id data value valid'
|
||||||
@@ -1582,12 +1480,11 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
// - loginCheckPermissions
|
// - loginCheckPermissions
|
||||||
// - loginGetPermissionOkay
|
// - loginGetPermissionOkay
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
/* print "[E]: " . $e->getCode() . ", ERROR: " . $login_mock->loginGetLastErrorCode() . "/"
|
// print "[E]: " . $e->getCode() . ", ERROR: " . $login_mock->loginGetLastErrorCode() . "/"
|
||||||
. ($expected['login_error'] ?? 0) . "\n";
|
// . ($expected['login_error'] ?? 0) . "\n";
|
||||||
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";
|
||||||
print "POST exit: " . ($_POST['login_exit'] ?? '{0}') . "\n"; */
|
|
||||||
// if this is 100, then we do further error checks
|
// if this is 100, then we do further error checks
|
||||||
if (
|
if (
|
||||||
$e->getCode() == 100 ||
|
$e->getCode() == 100 ||
|
||||||
|
|||||||
@@ -579,6 +579,9 @@ CREATE TABLE edit_user (
|
|||||||
strict SMALLINT DEFAULT 0,
|
strict SMALLINT DEFAULT 0,
|
||||||
locked SMALLINT DEFAULT 0,
|
locked SMALLINT DEFAULT 0,
|
||||||
protected SMALLINT NOT NULL DEFAULT 0,
|
protected SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
-- legacy, debug flags
|
||||||
|
debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
db_debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- is admin user
|
-- is admin user
|
||||||
admin SMALLINT NOT NULL DEFAULT 0,
|
admin SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- last login log
|
-- last login log
|
||||||
@@ -617,6 +620,8 @@ COMMENT ON COLUMN edit_user.deleted IS 'Login is deleted (master switch), overri
|
|||||||
COMMENT ON COLUMN edit_user.strict IS 'If too many failed logins user will be locked, default off';
|
COMMENT ON COLUMN edit_user.strict IS 'If too many failed logins user will be locked, default off';
|
||||||
COMMENT ON COLUMN edit_user.locked IS 'Locked from too many wrong password logins';
|
COMMENT ON COLUMN edit_user.locked IS 'Locked from too many wrong password logins';
|
||||||
COMMENT ON COLUMN edit_user.protected IS 'User can only be chnaged by admin user';
|
COMMENT ON COLUMN edit_user.protected IS 'User can only be chnaged by admin user';
|
||||||
|
COMMENT ON COLUMN edit_user.debug IS 'Turn debug flag on (legacy)';
|
||||||
|
COMMENT ON COLUMN edit_user.db_debug IS 'Turn DB debug flag on (legacy)';
|
||||||
COMMENT ON COLUMN edit_user.admin IS 'If set, this user is SUPER admin';
|
COMMENT ON COLUMN edit_user.admin IS 'If set, this user is SUPER admin';
|
||||||
COMMENT ON COLUMN edit_user.last_login IS 'Last succesfull login tiemstamp';
|
COMMENT ON COLUMN edit_user.last_login IS 'Last succesfull login tiemstamp';
|
||||||
COMMENT ON COLUMN edit_user.login_error_count IS 'Number of failed logins, reset on successful login';
|
COMMENT ON COLUMN edit_user.login_error_count IS 'Number of failed logins, reset on successful login';
|
||||||
@@ -651,52 +656,37 @@ CREATE TABLE edit_log (
|
|||||||
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
||||||
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL,
|
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL,
|
||||||
ecuid VARCHAR,
|
ecuid VARCHAR,
|
||||||
ecuuid UUID, -- this is the one we want to use, full UUIDv4 from the edit user table
|
ecuuid UUID,
|
||||||
-- date_created equal, but can be overridden
|
|
||||||
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
-- session ID if set
|
|
||||||
session_id VARCHAR,
|
|
||||||
-- username
|
|
||||||
username VARCHAR,
|
username VARCHAR,
|
||||||
-- DEPRECATED [password]
|
|
||||||
password VARCHAR,
|
password VARCHAR,
|
||||||
ip_address JSONB, -- REMOTE_IP and all other IPs (X_FORWARD, etc) as JSON block
|
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||||
-- DEPRECATED [ip]
|
ip VARCHAR,
|
||||||
ip VARCHAR, -- just the REMOTE_IP, full set see ip_address
|
|
||||||
-- string blocks, general
|
|
||||||
error TEXT,
|
error TEXT,
|
||||||
event TEXT,
|
event TEXT,
|
||||||
-- bytea or string type storage of any data
|
|
||||||
data_binary BYTEA,
|
data_binary BYTEA,
|
||||||
data TEXT,
|
data TEXT,
|
||||||
-- set page name only
|
|
||||||
page VARCHAR,
|
page VARCHAR,
|
||||||
-- various info data sets
|
action VARCHAR,
|
||||||
|
action_id VARCHAR,
|
||||||
|
action_sub_id VARCHAR,
|
||||||
|
action_yes VARCHAR,
|
||||||
|
action_flag VARCHAR,
|
||||||
|
action_menu VARCHAR,
|
||||||
|
action_loaded VARCHAR,
|
||||||
|
action_value VARCHAR,
|
||||||
|
action_type VARCHAR,
|
||||||
|
action_error VARCHAR,
|
||||||
user_agent VARCHAR,
|
user_agent VARCHAR,
|
||||||
referer VARCHAR,
|
referer VARCHAR,
|
||||||
script_name VARCHAR,
|
script_name VARCHAR,
|
||||||
query_string VARCHAR,
|
query_string VARCHAR,
|
||||||
request_scheme VARCHAR, -- http or https
|
|
||||||
server_name VARCHAR,
|
server_name VARCHAR,
|
||||||
http_host VARCHAR,
|
http_host VARCHAR,
|
||||||
http_data JSONB,
|
http_accept VARCHAR,
|
||||||
-- DEPRECATED [http*]
|
http_accept_charset VARCHAR,
|
||||||
http_accept VARCHAR, -- in http_data
|
http_accept_encoding VARCHAR,
|
||||||
http_accept_charset VARCHAR, -- in http_data
|
session_id VARCHAR
|
||||||
http_accept_encoding VARCHAR, -- in http_data
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
-- any action var, -> same set in action_data as JSON
|
|
||||||
action_data JSONB,
|
|
||||||
-- DEPRECATED [action*]
|
|
||||||
action VARCHAR, -- in action_data
|
|
||||||
action_id VARCHAR, -- in action_data
|
|
||||||
action_sub_id VARCHAR, -- in action_data
|
|
||||||
action_yes VARCHAR, -- in action_data
|
|
||||||
action_flag VARCHAR, -- in action_data
|
|
||||||
action_menu VARCHAR, -- in action_data
|
|
||||||
action_loaded VARCHAR, -- in action_data
|
|
||||||
action_value VARCHAR, -- in action_data
|
|
||||||
action_type VARCHAR, -- in action_data
|
|
||||||
action_error VARCHAR -- in action_data
|
|
||||||
-- END: table/edit_log.sql
|
-- END: table/edit_log.sql
|
||||||
-- START: table/edit_log_overflow.sql
|
-- START: table/edit_log_overflow.sql
|
||||||
-- AUTHOR: Clemens Schwaighofer
|
-- AUTHOR: Clemens Schwaighofer
|
||||||
@@ -1025,7 +1015,7 @@ INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_
|
|||||||
-- edit user
|
-- edit user
|
||||||
-- inserts admin user so basic users can be created
|
-- inserts admin user so basic users can be created
|
||||||
DELETE FROM edit_user;
|
DELETE FROM edit_user;
|
||||||
INSERT INTO edit_user (username, password, enabled, email, protected, admin, edit_language_id, edit_group_id, edit_scheme_id, edit_access_right_id) VALUES ('admin', 'admin', 1, 'test@tequila.jp', 1, 1,
|
INSERT INTO edit_user (username, password, enabled, debug, db_debug, email, protected, admin, edit_language_id, edit_group_id, edit_scheme_id, edit_access_right_id) VALUES ('admin', 'admin', 1, 1, 1, '', 1, 1,
|
||||||
(SELECT edit_language_id FROM edit_language WHERE short_name = 'en_US'),
|
(SELECT edit_language_id FROM edit_language WHERE short_name = 'en_US'),
|
||||||
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
||||||
(SELECT edit_scheme_id FROM edit_scheme WHERE name = 'Admin'),
|
(SELECT edit_scheme_id FROM edit_scheme WHERE name = 'Admin'),
|
||||||
|
|||||||
@@ -1201,91 +1201,6 @@ final class CoreLibsCombinedArrayHandlerTest extends TestCase
|
|||||||
'Find next key in array'
|
'Find next key in array'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function providerReturnMatchingKeyOnley(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'limited entries' => [
|
|
||||||
[
|
|
||||||
'a' => 'foo',
|
|
||||||
'b' => 'bar',
|
|
||||||
'c' => 'foobar'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'a', 'b'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'a' => 'foo',
|
|
||||||
'b' => 'bar',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'limited entries, with one wrong key' => [
|
|
||||||
[
|
|
||||||
'a' => 'foo',
|
|
||||||
'b' => 'bar',
|
|
||||||
'c' => 'foobar'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'a', 'b', 'f'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'a' => 'foo',
|
|
||||||
'b' => 'bar',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'wrong keys only' => [
|
|
||||||
[
|
|
||||||
'a' => 'foo',
|
|
||||||
'b' => 'bar',
|
|
||||||
'c' => 'foobar'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'f', 'f'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'empty keys' => [
|
|
||||||
[
|
|
||||||
'a' => 'foo',
|
|
||||||
'b' => 'bar',
|
|
||||||
'c' => 'foobar'
|
|
||||||
],
|
|
||||||
[],
|
|
||||||
[
|
|
||||||
'a' => 'foo',
|
|
||||||
'b' => 'bar',
|
|
||||||
'c' => 'foobar'
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Undocumented function
|
|
||||||
*
|
|
||||||
* @covers ::arrayReturnMatchingKeyOnly
|
|
||||||
* @dataProvider providerReturnMatchingKeyOnley
|
|
||||||
* @testdox arrayReturnMatchingKeyOnly get only selected key entries from array [$_dataName]
|
|
||||||
*
|
|
||||||
* @param array $input
|
|
||||||
* @param array $key_list
|
|
||||||
* @param array $expected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testArrayReturnMatchingKeyOnly(
|
|
||||||
array $input,
|
|
||||||
array $key_list,
|
|
||||||
array $expected
|
|
||||||
): void {
|
|
||||||
$this->assertEquals(
|
|
||||||
$expected,
|
|
||||||
\CoreLibs\Combined\ArrayHandler::arrayReturnMatchingKeyOnly(
|
|
||||||
$input,
|
|
||||||
$key_list
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -5141,9 +5141,9 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
INSERT INTO table_with_primary_key (
|
INSERT INTO table_with_primary_key (
|
||||||
row_int, row_numeric, row_varchar, row_varchar_literal
|
row_int, row_numeric, row_varchar, row_varchar_literal
|
||||||
) VALUES (
|
) VALUES (
|
||||||
-- comment 1
|
-- comment 1 かな
|
||||||
$1, $2,
|
$1, $2,
|
||||||
-- comment 2
|
-- comment 2 -
|
||||||
$3
|
$3
|
||||||
-- comment 3
|
-- comment 3
|
||||||
, $4
|
, $4
|
||||||
@@ -5152,6 +5152,23 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
'count' => 4,
|
'count' => 4,
|
||||||
'convert' => false
|
'convert' => false
|
||||||
],
|
],
|
||||||
|
'comment in update' => [
|
||||||
|
'query' => <<<SQL
|
||||||
|
UPDATE table_with_primary_key SET
|
||||||
|
row_int =
|
||||||
|
-- COMMENT 1
|
||||||
|
$1,
|
||||||
|
row_numeric =
|
||||||
|
$2 -- COMMENT 2
|
||||||
|
,
|
||||||
|
row_varchar -- COMMENT 3
|
||||||
|
= $3
|
||||||
|
WHERE
|
||||||
|
row_varchar = $4
|
||||||
|
SQL,
|
||||||
|
'count' => 4,
|
||||||
|
'convert' => false,
|
||||||
|
],
|
||||||
// Note some are not set
|
// Note some are not set
|
||||||
'a complete set of possible' => [
|
'a complete set of possible' => [
|
||||||
'query' => <<<SQL
|
'query' => <<<SQL
|
||||||
@@ -5168,6 +5185,17 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
SQL,
|
SQL,
|
||||||
'count' => 12,
|
'count' => 12,
|
||||||
'convert' => false,
|
'convert' => false,
|
||||||
|
],
|
||||||
|
// all the same
|
||||||
|
'all the same numbered' => [
|
||||||
|
'query' => <<<SQL
|
||||||
|
UPDATE table_with_primary_key SET
|
||||||
|
row_int = $1::INT, row_numeric = $1::NUMERIC, row_varchar = $1
|
||||||
|
WHERE
|
||||||
|
row_varchar = $1
|
||||||
|
SQL,
|
||||||
|
'count' => 1,
|
||||||
|
'convert' => false,
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,341 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
. 'includes' . DIRECTORY_SEPARATOR
|
. 'includes' . DIRECTORY_SEPARATOR
|
||||||
. 'locale' . DIRECTORY_SEPARATOR;
|
. 'locale' . DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set all constant variables that must be set before call
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function setUpBeforeClass(): void
|
||||||
|
{
|
||||||
|
// default web page encoding setting
|
||||||
|
/* if (!defined('DEFAULT_ENCODING')) {
|
||||||
|
define('DEFAULT_ENCODING', 'UTF-8');
|
||||||
|
}
|
||||||
|
if (!defined('DEFAULT_LOCALE')) {
|
||||||
|
// default lang + encoding
|
||||||
|
define('DEFAULT_LOCALE', 'en_US.UTF-8');
|
||||||
|
}
|
||||||
|
// site
|
||||||
|
if (!defined('SITE_ENCODING')) {
|
||||||
|
define('SITE_ENCODING', DEFAULT_ENCODING);
|
||||||
|
}
|
||||||
|
if (!defined('SITE_LOCALE')) {
|
||||||
|
define('SITE_LOCALE', DEFAULT_LOCALE);
|
||||||
|
} */
|
||||||
|
// just set
|
||||||
|
/* if (!defined('BASE')) {
|
||||||
|
define('BASE', str_replace('/configs', '', __DIR__) . DIRECTORY_SEPARATOR);
|
||||||
|
}
|
||||||
|
if (!defined('INCLUDES')) {
|
||||||
|
define('INCLUDES', 'includes' . DIRECTORY_SEPARATOR);
|
||||||
|
}
|
||||||
|
if (!defined('LANG')) {
|
||||||
|
define('LANG', 'lang' . DIRECTORY_SEPARATOR);
|
||||||
|
}
|
||||||
|
if (!defined('LOCALE')) {
|
||||||
|
define('LOCALE', 'locale' . DIRECTORY_SEPARATOR);
|
||||||
|
}
|
||||||
|
if (!defined('CONTENT_PATH')) {
|
||||||
|
define('CONTENT_PATH', 'frontend' . DIRECTORY_SEPARATOR);
|
||||||
|
} */
|
||||||
|
// array session
|
||||||
|
$_SESSION = [];
|
||||||
|
global $_SESSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* all the test data
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
/* public function setLocaleProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
// 0: locale
|
||||||
|
// 1: domain
|
||||||
|
// 2: encoding
|
||||||
|
// 3: path
|
||||||
|
// 4: SESSION: DEFAULT_LOCALE
|
||||||
|
// 5: SESSION: DEFAULT_CHARSET
|
||||||
|
// 6: expected array
|
||||||
|
// 7: deprecation message
|
||||||
|
'no params, all default constants' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
null, null, null, null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'en_US.UTF-8',
|
||||||
|
'lang' => 'en_US',
|
||||||
|
'domain' => 'frontend',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $locale or unset SESSION locale is deprecated',
|
||||||
|
],
|
||||||
|
'no params, session charset and lang' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
null, null, null, null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
'ja_JP', 'UTF-8',
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja_JP',
|
||||||
|
'lang' => 'ja_JP',
|
||||||
|
'domain' => 'frontend',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated'
|
||||||
|
],
|
||||||
|
'no params, session charset and lang short' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
null, null, null, null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
'ja', 'UTF-8',
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja',
|
||||||
|
'lang' => 'ja',
|
||||||
|
'domain' => 'frontend',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated',
|
||||||
|
],
|
||||||
|
// param lang (no sessions)
|
||||||
|
'locale param only, no sessions' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
'ja.UTF-8', null, null, null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja.UTF-8',
|
||||||
|
'lang' => 'ja',
|
||||||
|
'domain' => 'frontend',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated',
|
||||||
|
],
|
||||||
|
// different locale setting
|
||||||
|
'locale complex param only, no sessions' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
'ja_JP.SJIS', null, null, null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja_JP.SJIS',
|
||||||
|
'lang' => 'ja_JP',
|
||||||
|
'domain' => 'frontend',
|
||||||
|
'encoding' => 'SJIS',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated',
|
||||||
|
],
|
||||||
|
// param lang and domain (no override)
|
||||||
|
'locale, domain params, no sessions' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
'ja.UTF-8', 'admin', null, null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja.UTF-8',
|
||||||
|
'lang' => 'ja',
|
||||||
|
'domain' => 'admin',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $path is deprecated',
|
||||||
|
],
|
||||||
|
// param lang and domain (no override)
|
||||||
|
'locale, domain, encoding params, no sessions' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
'ja.UTF-8', 'admin', 'UTF-8', null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja.UTF-8',
|
||||||
|
'lang' => 'ja',
|
||||||
|
'domain' => 'admin',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $path is deprecated'
|
||||||
|
],
|
||||||
|
// lang, domain, path (no override)
|
||||||
|
'locale, domain and path, no sessions' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
'ja.UTF-8', 'admin', '', __DIR__ . '/locale_other/',
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja.UTF-8',
|
||||||
|
'lang' => 'ja',
|
||||||
|
'domain' => 'admin',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?locale_other\/$/",
|
||||||
|
],
|
||||||
|
null
|
||||||
|
],
|
||||||
|
// all params set (no override)
|
||||||
|
'all parameter, no sessions' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
'ja', 'admin', 'UTF-8', __DIR__ . '/locale_other/',
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'ja',
|
||||||
|
'lang' => 'ja',
|
||||||
|
'domain' => 'admin',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?locale_other\/$/",
|
||||||
|
],
|
||||||
|
null
|
||||||
|
],
|
||||||
|
// param lang and domain (no override)
|
||||||
|
'long locale, domain, encoding params, no sessions' => [
|
||||||
|
// lang, domain, encoding, path
|
||||||
|
'de_CH.UTF-8@euro', 'admin', 'UTF-8', null,
|
||||||
|
// SESSION DEFAULT_LOCALE, SESSION: DEFAULT_CHARSET
|
||||||
|
null, null,
|
||||||
|
// return array
|
||||||
|
[
|
||||||
|
'locale' => 'de_CH.UTF-8@euro',
|
||||||
|
'lang' => 'de_CH',
|
||||||
|
'domain' => 'admin',
|
||||||
|
'encoding' => 'UTF-8',
|
||||||
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
|
],
|
||||||
|
'setLocale: Unset $path is deprecated',
|
||||||
|
],
|
||||||
|
// TODO invalid params (bad path) (no override)
|
||||||
|
// TODO param calls, but with override set
|
||||||
|
];
|
||||||
|
} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @covers ::setLocale
|
||||||
|
* @dataProvider setLocaleProvider
|
||||||
|
* @testdox lang settings lang $language, domain $domain, encoding $encoding, path $path; session lang: $SESSION_DEFAULT_LOCALE, session char: $SESSION_DEFAULT_CHARSET [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string|null $language
|
||||||
|
* @param string|null $domain
|
||||||
|
* @param string|null $encoding
|
||||||
|
* @param string|null $path
|
||||||
|
* @param string|null $SESSION_DEFAULT_LOCALE
|
||||||
|
* @param string|null $SESSION_DEFAULT_CHARSET
|
||||||
|
* @param array<mixed> $expected
|
||||||
|
* @param string|null $deprecation_message
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
/* public function testsetLocale(
|
||||||
|
?string $language,
|
||||||
|
?string $domain,
|
||||||
|
?string $encoding,
|
||||||
|
?string $path,
|
||||||
|
?string $SESSION_DEFAULT_LOCALE,
|
||||||
|
?string $SESSION_DEFAULT_CHARSET,
|
||||||
|
array $expected,
|
||||||
|
?string $deprecation_message
|
||||||
|
): void {
|
||||||
|
$return_lang_settings = [];
|
||||||
|
global $_SESSION;
|
||||||
|
// set override
|
||||||
|
if ($SESSION_DEFAULT_LOCALE !== null) {
|
||||||
|
$_SESSION['DEFAULT_LOCALE'] = $SESSION_DEFAULT_LOCALE;
|
||||||
|
}
|
||||||
|
if ($SESSION_DEFAULT_CHARSET !== null) {
|
||||||
|
$_SESSION['DEFAULT_CHARSET'] = $SESSION_DEFAULT_CHARSET;
|
||||||
|
}
|
||||||
|
if ($deprecation_message !== null) {
|
||||||
|
set_error_handler(
|
||||||
|
static function (int $errno, string $errstr): never {
|
||||||
|
throw new \Exception($errstr, $errno);
|
||||||
|
},
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
// catch this with the message
|
||||||
|
$this->expectExceptionMessage($deprecation_message);
|
||||||
|
}
|
||||||
|
// function call
|
||||||
|
if (
|
||||||
|
$language === null && $domain === null &&
|
||||||
|
$encoding === null && $path === null
|
||||||
|
) {
|
||||||
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale();
|
||||||
|
} elseif (
|
||||||
|
$language !== null && $domain === null &&
|
||||||
|
$encoding === null && $path === null
|
||||||
|
) {
|
||||||
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
|
$language
|
||||||
|
);
|
||||||
|
} elseif (
|
||||||
|
$language !== null && $domain !== null &&
|
||||||
|
$encoding === null && $path === null
|
||||||
|
) {
|
||||||
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
|
$language,
|
||||||
|
$domain
|
||||||
|
);
|
||||||
|
} elseif (
|
||||||
|
$language !== null && $domain !== null &&
|
||||||
|
$encoding !== null && $path === null
|
||||||
|
) {
|
||||||
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
|
$language,
|
||||||
|
$domain,
|
||||||
|
$encoding
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
|
$language,
|
||||||
|
$domain,
|
||||||
|
$encoding,
|
||||||
|
$path
|
||||||
|
);
|
||||||
|
}
|
||||||
|
restore_error_handler();
|
||||||
|
// print "RETURN: " . print_r($return_lang_settings, true) . "\n";
|
||||||
|
|
||||||
|
foreach (
|
||||||
|
[
|
||||||
|
'locale', 'lang', 'domain', 'encoding', 'path'
|
||||||
|
] as $key
|
||||||
|
) {
|
||||||
|
$value = $expected[$key];
|
||||||
|
if (strpos($value, "/") === 0) {
|
||||||
|
// this is regex
|
||||||
|
$this->assertMatchesRegularExpression(
|
||||||
|
$value,
|
||||||
|
$return_lang_settings[$key],
|
||||||
|
'assert regex failed for ' . $key
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// assert equal
|
||||||
|
$this->assertEquals(
|
||||||
|
$value,
|
||||||
|
$return_lang_settings[$key],
|
||||||
|
'assert equal failed for ' . $key
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// unset all vars
|
||||||
|
$_SESSION = [];
|
||||||
|
unset($GLOBALS['OVERRIDE_LANG']);
|
||||||
|
} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* all the test data
|
* all the test data
|
||||||
*
|
*
|
||||||
|
|||||||
2
4dev/tests/Language/locale_other/.gitignore
vendored
Normal file
2
4dev/tests/Language/locale_other/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
||||||
@@ -3,10 +3,6 @@ ALTER TABLE edit_generic ADD cuuid UUID DEFAULT gen_random_uuid();
|
|||||||
ALTER TABLE edit_log ADD ecuid VARCHAR;
|
ALTER TABLE edit_log ADD ecuid VARCHAR;
|
||||||
ALTER TABLE edit_log ADD ecuuid VARCHAR;
|
ALTER TABLE edit_log ADD ecuuid VARCHAR;
|
||||||
ALTER TABLE edit_log ADD action_sub_id VARCHAR;
|
ALTER TABLE edit_log ADD action_sub_id VARCHAR;
|
||||||
ALTER TABLE edit_log ADD http_data JSONB;
|
|
||||||
ALTER TABLE edit_log ADD ip_address JSONB;
|
|
||||||
ALTER TABLE edit_log ADD action_data JSONB;
|
|
||||||
ALTER TABLE edit_log ADD request_scheme VARCHAR;
|
|
||||||
|
|
||||||
-- update set_edit_gneric
|
-- update set_edit_gneric
|
||||||
-- adds the created or updated date tags
|
-- adds the created or updated date tags
|
||||||
|
|||||||
@@ -250,19 +250,6 @@ foreach (array_keys($array) as $search) {
|
|||||||
}
|
}
|
||||||
print "Key not exists: " . DgS::printAr(ArrayHandler::arrayGetNextKey($array, 'z')) . "<br>";
|
print "Key not exists: " . DgS::printAr(ArrayHandler::arrayGetNextKey($array, 'z')) . "<br>";
|
||||||
|
|
||||||
print "<hr>";
|
|
||||||
$keys = ['b', 'c', 'f'];
|
|
||||||
print "Return only: " . DgS::printAr($keys) . ": "
|
|
||||||
. DgS::printAr(ArrayHandler::arrayReturnMatchingKeyOnly($array, $keys)) . "<br>";
|
|
||||||
|
|
||||||
$out = array_filter($array, fn($key) => in_array($key, $keys), ARRAY_FILTER_USE_KEY);
|
|
||||||
print "array filter: " . DgS::printAr($keys) . ": " . DgS::printAr($out) . "<br>";
|
|
||||||
$out = array_intersect_key(
|
|
||||||
$array,
|
|
||||||
array_flip($keys)
|
|
||||||
);
|
|
||||||
print "array intersect key: " . DgS::printAr($keys) . ": " . DgS::printAr($out) . "<br>";
|
|
||||||
|
|
||||||
print "</body></html>";
|
print "</body></html>";
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ $log = new CoreLibs\Logging\Logging([
|
|||||||
'log_per_date' => true,
|
'log_per_date' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: DB CONVERT PLACEHOLDER';
|
$PAGE_NAME = 'TEST CLASS: DB CONVERT PLACEHOLDER';
|
||||||
print "<!DOCTYPE html>";
|
print "<!DOCTYPE html>";
|
||||||
print "<html><head><title>" . $PAGE_NAME . "</title></head>";
|
print "<html><head><title>" . $PAGE_NAME . "</title></head>";
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ if (($dbh = $db->dbGetDbh()) instanceof \PgSql\Connection) {
|
|||||||
} else {
|
} else {
|
||||||
print "NO DB HANDLER<br>";
|
print "NO DB HANDLER<br>";
|
||||||
}
|
}
|
||||||
|
// REGEX for placeholder count
|
||||||
|
print "Placeholder regex: <pre>" . CoreLibs\DB\Support\ConvertPlaceholder::REGEX_LOOKUP_PLACEHOLDERS . "</pre>";
|
||||||
|
|
||||||
// turn on debug replace for placeholders
|
// turn on debug replace for placeholders
|
||||||
$db->dbSetDebugReplacePlaceholder(true);
|
$db->dbSetDebugReplacePlaceholder(true);
|
||||||
|
|
||||||
@@ -62,53 +65,94 @@ $db->dbExec("TRUNCATE test_foo");
|
|||||||
$uniqid = \CoreLibs\Create\Uids::uniqIdShort();
|
$uniqid = \CoreLibs\Create\Uids::uniqIdShort();
|
||||||
$binary_data = $db->dbEscapeBytea(file_get_contents('class_test.db.php') ?: '');
|
$binary_data = $db->dbEscapeBytea(file_get_contents('class_test.db.php') ?: '');
|
||||||
$query_params = [
|
$query_params = [
|
||||||
$uniqid,
|
$uniqid, // test
|
||||||
true,
|
true, // some_bool
|
||||||
'STRING A',
|
'STRING A', // string_a
|
||||||
2,
|
2, // number_a
|
||||||
2.5,
|
2.5, // numeric_a
|
||||||
1,
|
1, // smallint
|
||||||
date('H:m:s'),
|
date('H:m:s'), // some_internval
|
||||||
date('Y-m-d H:i:s'),
|
date('Y-m-d H:i:s'), // some_timestamp
|
||||||
json_encode(['a' => 'string', 'b' => 1, 'c' => 1.5, 'f' => true, 'g' => ['a', 1, 1.5]]),
|
json_encode(['a' => 'string', 'b' => 1, 'c' => 1.5, 'f' => true, 'g' => ['a', 1, 1.5]]), // json_string
|
||||||
null,
|
null, // null_var
|
||||||
'{"a", "b"}',
|
'{"a", "b"}', // array_char_1
|
||||||
'{1,2}',
|
'{1,2}', // array_int_1
|
||||||
'{"(array Text A, 5, 8.8)","(array Text B, 10, 15.2)"}',
|
'{"(array Text A, 5, 8.8)","(array Text B, 10, 15.2)"}', // array_composite
|
||||||
'("Text", 4, 6.3)',
|
'("Text", 4, 6.3)', // composite_item
|
||||||
$binary_data
|
$binary_data, // some_binary
|
||||||
|
date('Y-m-d'), // some_date
|
||||||
|
date('H:i:s'), // some_time
|
||||||
|
'{"c", "d", "e"}', // array_char_2
|
||||||
|
'{3,4,5}', // array_int_2
|
||||||
|
12345667778818, // bigint
|
||||||
|
1.56, // numbrer_real
|
||||||
|
3.75, // number_double
|
||||||
|
124.5, // numeric_3
|
||||||
|
\CoreLibs\Create\Uids::uuidv4() // uuid_var
|
||||||
];
|
];
|
||||||
|
|
||||||
$query_insert = <<<SQL
|
$query_insert = <<<SQL
|
||||||
INSERT INTO test_foo (
|
INSERT INTO test_foo (
|
||||||
test, some_bool, string_a, number_a, number_a_numeric, smallint_a,
|
-- row 1
|
||||||
some_time, some_timestamp, json_string, null_var,
|
test, some_bool, string_a, number_a, numeric_a, smallint_a,
|
||||||
|
-- row 2
|
||||||
|
some_internval, some_timestamp, json_string, null_var,
|
||||||
|
-- row 3
|
||||||
array_char_1, array_int_1,
|
array_char_1, array_int_1,
|
||||||
|
-- row 4
|
||||||
array_composite,
|
array_composite,
|
||||||
|
-- row 5
|
||||||
composite_item,
|
composite_item,
|
||||||
some_binary
|
-- row 6
|
||||||
|
some_binary,
|
||||||
|
-- row 7
|
||||||
|
some_date, some_time,
|
||||||
|
-- row 8
|
||||||
|
array_char_2, array_int_2,
|
||||||
|
-- row 9
|
||||||
|
bigint_a, number_real, number_double, numeric_3,
|
||||||
|
-- row 10
|
||||||
|
uuid_var
|
||||||
) VALUES (
|
) VALUES (
|
||||||
|
-- row 1
|
||||||
$1, $2, $3, $4, $5, $6,
|
$1, $2, $3, $4, $5, $6,
|
||||||
|
-- row 2
|
||||||
$7, $8, $9, $10,
|
$7, $8, $9, $10,
|
||||||
|
-- row 3
|
||||||
$11, $12,
|
$11, $12,
|
||||||
|
-- row 4
|
||||||
$13,
|
$13,
|
||||||
|
-- row 5
|
||||||
$14,
|
$14,
|
||||||
$15
|
-- row 6
|
||||||
|
$15,
|
||||||
|
-- row 7
|
||||||
|
$16, $17,
|
||||||
|
-- row 8
|
||||||
|
$18, $19,
|
||||||
|
-- row 9
|
||||||
|
$20, $21, $22, $23,
|
||||||
|
-- row 10
|
||||||
|
$24
|
||||||
)
|
)
|
||||||
RETURNING
|
RETURNING
|
||||||
test_foo_id,
|
test_foo_id, number_serial, identity_always, identitiy_default, default_uuid,
|
||||||
test, some_bool, string_a, number_a, number_a_numeric, smallint_a,
|
test, some_bool, string_a, number_a, numeric_a, smallint_a,
|
||||||
some_time, some_timestamp, json_string, null_var,
|
some_internval, some_timestamp, json_string, null_var,
|
||||||
array_char_1, array_int_1,
|
array_char_1, array_int_1,
|
||||||
array_composite,
|
array_composite,
|
||||||
composite_item,
|
composite_item,
|
||||||
some_binary
|
some_binary,
|
||||||
|
some_date,
|
||||||
|
array_char_2, array_int_2,
|
||||||
|
bigint_a, number_real, number_double, numeric_3,
|
||||||
|
uuid_var
|
||||||
SQL;
|
SQL;
|
||||||
$status = $db->dbExecParams($query_insert, $query_params);
|
$status = $db->dbExecParams($query_insert, $query_params);
|
||||||
echo "<b>*</b><br>";
|
echo "<b>*</b><br>";
|
||||||
echo "INSERT ALL COLUMN TYPES: "
|
echo "INSERT ALL COLUMN TYPES: "
|
||||||
. Support::printToString($query_params) . " |<br>"
|
. Support::printToString($query_params) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
. "QUERY: <pre>" . $db->dbGetQuery() . "</pre> |<br>"
|
||||||
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " |<br>"
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " |<br>"
|
||||||
. "RETURNING EXT: <pre>" . print_r($db->dbGetReturningExt(), true) . "</pre> |<br>"
|
. "RETURNING EXT: <pre>" . print_r($db->dbGetReturningExt(), true) . "</pre> |<br>"
|
||||||
. "RETURNING RETURN: <pre>" . print_r($db->dbGetReturningArray(), true) . "<pre> |<br>"
|
. "RETURNING RETURN: <pre>" . print_r($db->dbGetReturningArray(), true) . "<pre> |<br>"
|
||||||
@@ -146,6 +190,16 @@ SQL,
|
|||||||
'params' => [],
|
'params' => [],
|
||||||
'direction' => 'pg',
|
'direction' => 'pg',
|
||||||
],
|
],
|
||||||
|
'numbers' => [
|
||||||
|
'query' => <<<SQL
|
||||||
|
SELECT test, string_a, number_a
|
||||||
|
FROM test_foo
|
||||||
|
WHERE
|
||||||
|
foo = $1 AND bar = $1 AND foobar = $2
|
||||||
|
SQL,
|
||||||
|
'params' => [\CoreLibs\Create\Uids::uniqIdShort(), 'string A-1', 1234],
|
||||||
|
'direction' => 'pdo',
|
||||||
|
],
|
||||||
'a?' => [
|
'a?' => [
|
||||||
'query' => <<<SQL
|
'query' => <<<SQL
|
||||||
INSERT INTO test_foo (
|
INSERT INTO test_foo (
|
||||||
@@ -172,6 +226,18 @@ SQL,
|
|||||||
],
|
],
|
||||||
'direction' => 'pg',
|
'direction' => 'pg',
|
||||||
],
|
],
|
||||||
|
'select, compare $' => [
|
||||||
|
'query' => <<<SQL
|
||||||
|
SELECT string_a
|
||||||
|
FROM test_foo
|
||||||
|
WHERE
|
||||||
|
number_a >= $1 OR number_a <= $2 OR
|
||||||
|
number_a > $3 OR number_a < $4
|
||||||
|
OR number_a = $5 OR number_a <> $6
|
||||||
|
SQL,
|
||||||
|
'params' => [1, 2, 3, 4, 5, 6],
|
||||||
|
'direction' => 'pg'
|
||||||
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
$db->dbSetConvertPlaceholder(true);
|
$db->dbSetConvertPlaceholder(true);
|
||||||
@@ -184,11 +250,12 @@ foreach ($test_queries as $info => $data) {
|
|||||||
// . "<br>";
|
// . "<br>";
|
||||||
if ($db->dbCheckQueryForSelect($query)) {
|
if ($db->dbCheckQueryForSelect($query)) {
|
||||||
$row = $db->dbReturnRowParams($query, $params);
|
$row = $db->dbReturnRowParams($query, $params);
|
||||||
print "[$info] SELECT: " . Support::prAr($row) . "<br>";
|
print "<b>[$info]</b> SELECT: " . Support::prAr($row) . "<br>";
|
||||||
} else {
|
} else {
|
||||||
$db->dbExecParams($query, $params);
|
$db->dbExecParams($query, $params);
|
||||||
}
|
}
|
||||||
print "[$info] " . Support::printAr($db->dbGetPlaceholderConverted()) . "<br>";
|
print "ERROR: " . $db->dbGetLastError(true) . "<br>";
|
||||||
|
print "<b>[$info]</b> " . Support::printAr($db->dbGetPlaceholderConverted()) . "<br>";
|
||||||
echo "<hr>";
|
echo "<hr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,22 +270,29 @@ SQL,
|
|||||||
['string A-1']
|
['string A-1']
|
||||||
))
|
))
|
||||||
) {
|
) {
|
||||||
print "RES: " . Support::prAr($res) . "<br>";
|
print "<b>RES</b>: " . Support::prAr($res) . "<br>";
|
||||||
}
|
}
|
||||||
|
print "ERROR: " . $db->dbGetLastError(true) . "<br>";
|
||||||
|
echo "<hr>";
|
||||||
|
|
||||||
print "CursorExt: " . Support::prAr($db->dbGetCursorExt(<<<SQL
|
print "CursorExt: " . Support::prAr($db->dbGetCursorExt(<<<SQL
|
||||||
SELECT test, string_a, number_a
|
SELECT test, string_a, number_a
|
||||||
FROM test_foo
|
FROM test_foo
|
||||||
WHERE string_a = ?
|
WHERE string_a = ?
|
||||||
SQL, ['string A-1']));
|
SQL, ['string A-1']));
|
||||||
|
echo "<hr>";
|
||||||
|
|
||||||
|
// ERROR BELOW: missing params
|
||||||
$res = $db->dbReturnRowParams(<<<SQL
|
$res = $db->dbReturnRowParams(<<<SQL
|
||||||
SELECT test, string_a, number_a
|
SELECT test, string_a, number_a
|
||||||
FROM test_foo
|
FROM test_foo
|
||||||
WHERE string_a = $1
|
WHERE string_a = $1
|
||||||
SQL, []);
|
SQL, []);
|
||||||
print "PL: " . Support::PrAr($db->dbGetPlaceholderConverted()) . "<br>";
|
print "PL: " . Support::PrAr($db->dbGetPlaceholderConverted()) . "<br>";
|
||||||
|
print "ERROR: " . $db->dbGetLastError(true) . "<br>";
|
||||||
|
echo "<hr>";
|
||||||
|
|
||||||
|
// ERROR BELOW: LIKE cannot have placeholder
|
||||||
echo "dbReturn read LIKE: <br>";
|
echo "dbReturn read LIKE: <br>";
|
||||||
while (
|
while (
|
||||||
is_array($res = $db->dbReturnParams(
|
is_array($res = $db->dbReturnParams(
|
||||||
@@ -232,6 +306,7 @@ SQL,
|
|||||||
) {
|
) {
|
||||||
print "RES: " . Support::prAr($res) . "<br>";
|
print "RES: " . Support::prAr($res) . "<br>";
|
||||||
}
|
}
|
||||||
|
print "ERROR: " . $db->dbGetLastError(true) . "<br>";
|
||||||
|
|
||||||
print "</body></html>";
|
print "</body></html>";
|
||||||
$db->log->debug('DEBUGEND', '==================================== [END]');
|
$db->log->debug('DEBUGEND', '==================================== [END]');
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ require 'config.php';
|
|||||||
// define log file id
|
// define log file id
|
||||||
$LOG_FILE_ID = 'classTest-login';
|
$LOG_FILE_ID = 'classTest-login';
|
||||||
$SET_SESSION_NAME = EDIT_SESSION_NAME;
|
$SET_SESSION_NAME = EDIT_SESSION_NAME;
|
||||||
|
|
||||||
use CoreLibs\Debug\Support;
|
|
||||||
|
|
||||||
// init login & backend class
|
// init login & backend class
|
||||||
$session = new CoreLibs\Create\Session($SET_SESSION_NAME);
|
$session = new CoreLibs\Create\Session($SET_SESSION_NAME);
|
||||||
$log = new CoreLibs\Logging\Logging([
|
$log = new CoreLibs\Logging\Logging([
|
||||||
@@ -46,86 +43,23 @@ ob_end_flush();
|
|||||||
$login->loginMainCall();
|
$login->loginMainCall();
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: LOGIN';
|
$PAGE_NAME = 'TEST CLASS: LOGIN';
|
||||||
print str_replace(
|
print "<!DOCTYPE html>";
|
||||||
'{PAGE_NAME}',
|
print "<html><head><title>" . $PAGE_NAME . "</title></head>";
|
||||||
$PAGE_NAME,
|
print "<body>";
|
||||||
<<<HTML
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
<!DOCTYPE html>
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
||||||
<html><head>
|
|
||||||
<title>{PAGE_NAME}</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div><a href="class_test.php">Class Test Master</a></div>
|
|
||||||
<div><h1>{PAGE_NAME}</h1></div>
|
|
||||||
HTML
|
|
||||||
);
|
|
||||||
|
|
||||||
// button logout
|
|
||||||
print <<<HTML
|
|
||||||
<script language="JavaScript">
|
|
||||||
function loginLogout()
|
|
||||||
{
|
|
||||||
const form = document.createElement('form');
|
|
||||||
form.method = 'post';
|
|
||||||
const hiddenField = document.createElement('input');
|
|
||||||
hiddenField.type = 'hidden';
|
|
||||||
hiddenField.name = 'login_logout';
|
|
||||||
hiddenField.value = 'Logout';
|
|
||||||
form.appendChild(hiddenField);
|
|
||||||
document.body.appendChild(form);
|
|
||||||
form.submit();
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<div style="margin: 20px 0;">
|
|
||||||
<button onclick="loginLogout();" type="button">Logout</button>
|
|
||||||
</div>
|
|
||||||
HTML;
|
|
||||||
// string logout
|
|
||||||
print <<<HTML
|
|
||||||
<div style="margin: 20px 0;">
|
|
||||||
<form method="post" name="loginlogout">
|
|
||||||
<a href="javascript:document.loginlogout.login_logout.value=Logout;document.loginlogout.submit();">Logout</a>
|
|
||||||
<input type="hidden" name="login_logout" value="">
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
HTML;
|
|
||||||
|
|
||||||
echo "CHECK PERMISSION: " . ($login->loginCheckPermissions() ? 'OK' : 'BAD') . "<br>";
|
echo "CHECK PERMISSION: " . ($login->loginCheckPermissions() ? 'OK' : 'BAD') . "<br>";
|
||||||
echo "IS ADMIN: " . ($login->loginIsAdmin() ? 'OK' : 'BAD') . "<br>";
|
echo "IS ADMIN: " . ($login->loginIsAdmin() ? 'OK' : 'BAD') . "<br>";
|
||||||
echo "MIN ACCESS BASE: " . ($login->loginCheckAccessBase('admin') ? 'OK' : 'BAD') . "<br>";
|
echo "MIN ACCESS BASE: " . ($login->loginCheckAccessBase('admin') ? 'OK' : 'BAD') . "<br>";
|
||||||
echo "MIN ACCESS PAGE: " . ($login->loginCheckAccessPage('admin') ? 'OK' : 'BAD') . "<br>";
|
echo "MIN ACCESS PAGE: " . ($login->loginCheckAccessPage('admin') ? 'OK' : 'BAD') . "<br>";
|
||||||
|
|
||||||
echo "ACL: " . Support::printAr($login->loginGetAcl()) . "<br>";
|
echo "ACL: " . \CoreLibs\Debug\Support::printAr($login->loginGetAcl()) . "<br>";
|
||||||
echo "ACL (MIN): " . Support::printAr($login->loginGetAcl()['min'] ?? []) . "<br>";
|
echo "ACL (MIN): " . \CoreLibs\Debug\Support::printAr($login->loginGetAcl()['min'] ?? []) . "<br>";
|
||||||
echo "LOCALE: " . Support::printAr($login->loginGetLocale()) . "<br>";
|
echo "LOCALE: " . \CoreLibs\Debug\Support::printAr($login->loginGetLocale()) . "<br>";
|
||||||
|
|
||||||
echo "ECUID: " . $login->loginGetEuCuid() . "<br>";
|
echo "ECUID: " . $login->loginGetEcuid() . "<br>";
|
||||||
echo "ECUUID: " . $login->loginGetEuCuuid() . "<br>";
|
echo "ECUUID: " . $login->loginGetEcuuid() . "<br>";
|
||||||
|
|
||||||
echo "<hr>";
|
|
||||||
// set + check edit access id
|
|
||||||
$edit_access_cuid = 'buRW8Gu2Lkkf';
|
|
||||||
if (isset($login->loginGetAcl()['unit'])) {
|
|
||||||
print "EDIT ACCESS CUID: " . $edit_access_cuid . "<br>";
|
|
||||||
print "ACL UNIT: " . print_r(array_keys($login->loginGetAcl()['unit']), true) . "<br>";
|
|
||||||
print "ACCESS CHECK: " . Support::prBl($login->loginCheckEditAccessCuid($edit_access_cuid)) . "<br>";
|
|
||||||
if ($login->loginCheckEditAccessCuid($edit_access_cuid)) {
|
|
||||||
print "Set new:" . $edit_access_cuid . "<br>";
|
|
||||||
} else {
|
|
||||||
print "Load default unit id: " . $login->loginGetAcl()['unit_id'] . "<br>";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print "Something went wrong with the login<br>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "<hr>";
|
|
||||||
|
|
||||||
// IP check: 'REMOTE_ADDR', 'HTTP_X_FORWARDED_FOR', 'CLIENT_IP' in _SERVER
|
|
||||||
// Agent check: 'HTTP_USER_AGENT'
|
|
||||||
|
|
||||||
|
|
||||||
echo "<hr>";
|
|
||||||
print "SESSION: " . Support::printAr($_SESSION) . "<br>";
|
|
||||||
|
|
||||||
$login->writeLog(
|
$login->writeLog(
|
||||||
'TEST LOG',
|
'TEST LOG',
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ HTML;
|
|||||||
$test_files = [
|
$test_files = [
|
||||||
'class_test.db.php' => 'Class Test: DB',
|
'class_test.db.php' => 'Class Test: DB',
|
||||||
'class_test.db.types.php' => 'Class Test: DB column type convert',
|
'class_test.db.types.php' => 'Class Test: DB column type convert',
|
||||||
'class_test.db.query-placeholder.php' => 'Class Test: DB query placeholder convert',
|
'class_test.db.query-placeholder.php' => 'Class Test: DB placeholder queries',
|
||||||
'class_test.db.dbReturn.php' => 'Class Test: DB dbReturn',
|
'class_test.db.dbReturn.php' => 'Class Test: DB dbReturn',
|
||||||
'class_test.db.single.php' => 'Class Test: DB single query tests',
|
'class_test.db.single.php' => 'Class Test: DB single query tests',
|
||||||
'class_test.db.convert-placeholder.php' => 'Class Test: DB convert placeholder',
|
'class_test.db.convert-placeholder.php' => 'Class Test: DB convert placeholder',
|
||||||
@@ -149,20 +149,33 @@ foreach ($test_files as $file => $name) {
|
|||||||
print '<div><a href="' . $file . '">' . $name . '</a></div>';
|
print '<div><a href="' . $file . '">' . $name . '</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
print "<br>";
|
|
||||||
print "ECUID: " . $session->get('LOGIN_EUCUID') . "<br>";
|
|
||||||
print "ECUUID: " . $session->get('LOGIN_EUCUUID') . "<br>";
|
|
||||||
|
|
||||||
print "<hr>";
|
print "<hr>";
|
||||||
print "LOCALE: " . Support::dumpVar($locale) . "<br>";
|
print "L: " . Support::dumpVar($locale) . "<br>";
|
||||||
// print all _ENV vars set
|
// print all _ENV vars set
|
||||||
print "<div>READ _ENV ARRAY:</div>";
|
print "<div>READ _ENV ARRAY:</div>";
|
||||||
print Support::dumpVar(array_map('htmlentities', $_ENV));
|
print Support::dumpVar(array_map('htmlentities', $_ENV));
|
||||||
|
// set + check edit access id
|
||||||
|
$edit_access_id = 3;
|
||||||
|
if (isset($login->loginGetAcl()['unit'])) {
|
||||||
|
print "ACL UNIT: " . print_r(array_keys($login->loginGetAcl()['unit']), true) . "<br>";
|
||||||
|
print "ACCESS CHECK: " . (string)$login->loginCheckEditAccess($edit_access_id) . "<br>";
|
||||||
|
if ($login->loginCheckEditAccess($edit_access_id)) {
|
||||||
|
$backend->edit_access_id = $edit_access_id;
|
||||||
|
} else {
|
||||||
|
$backend->edit_access_id = $login->loginGetAcl()['unit_id'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print "Something went wrong with the login<br>";
|
||||||
|
}
|
||||||
|
|
||||||
// $backend->log->debug('SESSION', \CoreLibs\Debug\Support::dumpVar($_SESSION));
|
// $backend->log->debug('SESSION', \CoreLibs\Debug\Support::dumpVar($_SESSION));
|
||||||
|
|
||||||
print "<br>";
|
print '<form method="post" name="loginlogout">';
|
||||||
|
print '<a href="javascript:document.loginlogout.login_logout.value=\'Logou\';'
|
||||||
|
. 'document.loginlogout.submit();">Logout</a>';
|
||||||
|
print '<input type="hidden" name="login_logout" value="">';
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
print "Log Level: " . $backend->log->getLoggingLevel()->getName() . "<br>";
|
print "Log Level: " . $backend->log->getLoggingLevel()->getName() . "<br>";
|
||||||
print "Log ID: " . $backend->log->getLogFileId() . "<br>";
|
print "Log ID: " . $backend->log->getLogFileId() . "<br>";
|
||||||
print "Log Date: " . $backend->log->getLogDate() . "<br>";
|
print "Log Date: " . $backend->log->getLogDate() . "<br>";
|
||||||
@@ -184,7 +197,26 @@ foreach (
|
|||||||
|
|
||||||
$log->debug('SOME MARK', 'Some error output');
|
$log->debug('SOME MARK', 'Some error output');
|
||||||
|
|
||||||
print "<br>";
|
// INTERNAL SET
|
||||||
|
print "EDIT ACCESS ID: " . $backend->edit_access_id . "<br>";
|
||||||
|
// print "ACL: <br>".$backend->print_ar($login->loginGetAcl())."<br>";
|
||||||
|
// $log->debug('ACL', "ACL: " . \CoreLibs\Debug\Support::dumpVar($login->loginGetAcl()));
|
||||||
|
// print "DEFAULT ACL: <br>".$backend->print_ar($login->default_acl_list)."<br>";
|
||||||
|
// print "DEFAULT ACL: <br>".$backend->print_ar($login->default_acl_list)."<br>";
|
||||||
|
// $result = array_flip(
|
||||||
|
// array_filter(
|
||||||
|
// array_flip($login->default_acl_list),
|
||||||
|
// function ($key) {
|
||||||
|
// if (is_numeric($key)) {
|
||||||
|
// return $key;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// )
|
||||||
|
// );
|
||||||
|
// print "DEFAULT ACL: <br>".$backend->print_ar($result)."<br>";
|
||||||
|
// DEPRICATED CALL
|
||||||
|
// $backend->adbSetACL($login->loginGetAcl());
|
||||||
|
|
||||||
print "THIS HOST: " . HOST_NAME . ", with PROTOCOL: " . HOST_PROTOCOL . " is running SSL: " . HOST_SSL . "<br>";
|
print "THIS HOST: " . HOST_NAME . ", with PROTOCOL: " . HOST_PROTOCOL . " is running SSL: " . HOST_SSL . "<br>";
|
||||||
print "DIR: " . DIR . "<br>";
|
print "DIR: " . DIR . "<br>";
|
||||||
print "BASE: " . BASE . "<br>";
|
print "BASE: " . BASE . "<br>";
|
||||||
@@ -194,8 +226,8 @@ print "HOST: " . HOST_NAME . " => DB HOST: " . DB_CONFIG_NAME . " => " . Support
|
|||||||
print "DS is: " . DIRECTORY_SEPARATOR . "<br>";
|
print "DS is: " . DIRECTORY_SEPARATOR . "<br>";
|
||||||
print "SERVER HOST: " . $_SERVER['HTTP_HOST'] . "<br>";
|
print "SERVER HOST: " . $_SERVER['HTTP_HOST'] . "<br>";
|
||||||
|
|
||||||
print "<div>READ _SERVER ARRAY:</div>";
|
print "ECUID: " . $session->get('ECUID') . "<br>";
|
||||||
print Support::dumpVar(array_map('htmlentities', $_SERVER));
|
print "ECUUID: " . $session->get('ECUUID') . "<br>";
|
||||||
|
|
||||||
print "</body></html>";
|
print "</body></html>";
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -415,6 +415,8 @@ class EditBase
|
|||||||
$elements[] = $this->form->formCreateElement('lock_until');
|
$elements[] = $this->form->formCreateElement('lock_until');
|
||||||
$elements[] = $this->form->formCreateElement('lock_after');
|
$elements[] = $this->form->formCreateElement('lock_after');
|
||||||
$elements[] = $this->form->formCreateElement('admin');
|
$elements[] = $this->form->formCreateElement('admin');
|
||||||
|
$elements[] = $this->form->formCreateElement('debug');
|
||||||
|
$elements[] = $this->form->formCreateElement('db_debug');
|
||||||
$elements[] = $this->form->formCreateElement('edit_language_id');
|
$elements[] = $this->form->formCreateElement('edit_language_id');
|
||||||
$elements[] = $this->form->formCreateElement('edit_scheme_id');
|
$elements[] = $this->form->formCreateElement('edit_scheme_id');
|
||||||
$elements[] = $this->form->formCreateElementListTable('edit_access_user');
|
$elements[] = $this->form->formCreateElementListTable('edit_access_user');
|
||||||
|
|||||||
@@ -525,30 +525,6 @@ class ArrayHandler
|
|||||||
{
|
{
|
||||||
return array_diff($array, $remove);
|
return array_diff($array, $remove);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* From the array with key -> anything values return only the matching entries from key list
|
|
||||||
* key list is a list[string]
|
|
||||||
* if key list is empty, return array as is
|
|
||||||
*
|
|
||||||
* @param array<string,mixed> $array
|
|
||||||
* @param array<string> $key_list
|
|
||||||
* @return array<string,mixed>
|
|
||||||
*/
|
|
||||||
public static function arrayReturnMatchingKeyOnly(
|
|
||||||
array $array,
|
|
||||||
array $key_list
|
|
||||||
): array {
|
|
||||||
// on empty return as is
|
|
||||||
if (empty($key_list)) {
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
return array_filter(
|
|
||||||
$array,
|
|
||||||
fn($key) => in_array($key, $key_list),
|
|
||||||
ARRAY_FILTER_USE_KEY
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -1332,7 +1332,6 @@ class IO
|
|||||||
*/
|
*/
|
||||||
private function __dbCheckQueryParams(string $query, array $params): bool
|
private function __dbCheckQueryParams(string $query, array $params): bool
|
||||||
{
|
{
|
||||||
// $this->log->debug('DB QUERY PARAMS REGEX', ConvertPlaceholder::REGEX_LOOKUP_PLACEHOLDERS);
|
|
||||||
$placeholder_count = $this->__dbCountQueryParams($query);
|
$placeholder_count = $this->__dbCountQueryParams($query);
|
||||||
$params_count = count($params);
|
$params_count = count($params);
|
||||||
if ($params_count != $placeholder_count) {
|
if ($params_count != $placeholder_count) {
|
||||||
|
|||||||
@@ -18,17 +18,20 @@ class ConvertPlaceholder
|
|||||||
// NOTE some combinations are allowed, but the query will fail before this
|
// NOTE some combinations are allowed, but the query will fail before this
|
||||||
/** @var string split regex, entries before $ group */
|
/** @var string split regex, entries before $ group */
|
||||||
private const PATTERN_QUERY_SPLIT =
|
private const PATTERN_QUERY_SPLIT =
|
||||||
',|' // for ',' mostly in INSERT
|
'\?\?|' // UNKNOWN: double ??, is this to avoid something?
|
||||||
. '[(<>=]|' // general set for (, <, >, = in any query with any combination
|
. '[\(,]|' // for ',' and '(' mostly in INSERT or ANY()
|
||||||
. '(?:[\(,]\s*\-\-[\s\w]*)\r?\n|' // a comment that starts after a ( or ,
|
. '[<>=]|' // general set for <, >, = in any query with any combination
|
||||||
. '\^@|' // text search for start from text with ^@
|
. '\^@|' // text search for start from text with ^@
|
||||||
. '\|\||' // concats two elements
|
. '\|\||' // concats two elements
|
||||||
. '&&|' // array overlap
|
. '&&|' // array overlap
|
||||||
. '\-\|\-|' // range overlap
|
. '\-\|\-|' // range overlap for array
|
||||||
. '[^-]-{1}|' // single -, used in JSON too
|
. '[^-]-{1}|' // single -, used in JSON too
|
||||||
. '->|->>|#>|#>>|@>|<@|@@|@\?|\?{1}|\?\||\?&|#-'; //JSON searches, Array searchs, etc
|
. '->|->>|#>|#>>|@>|<@|@@|@\?|\?{1}|\?\||\?&|#-'; //JSON searches, Array searchs, etc
|
||||||
/** @var string the main regex including the pattern query split */
|
/** @var string the main regex including the pattern query split */
|
||||||
private const PATTERN_ELEMENT = '(?:\'.*?\')?\s*(?:\?\?|' . self::PATTERN_QUERY_SPLIT . ')\s*';
|
private const PATTERN_ELEMENT = '(?:\'.*?\')?\s*(?:' . self::PATTERN_QUERY_SPLIT . ')\s*';
|
||||||
|
/** @var string comment regex
|
||||||
|
* anything that starts with -- and ends with a line break but any character that is not line break inbetween */
|
||||||
|
private const PATTERN_COMMENT = '(?:\-\-[^\r\n]*?\r?\n)*\s*';
|
||||||
/** @var string parts to ignore in the SQL */
|
/** @var string parts to ignore in the SQL */
|
||||||
private const PATTERN_IGNORE =
|
private const PATTERN_IGNORE =
|
||||||
// digit -> ignore
|
// digit -> ignore
|
||||||
@@ -45,6 +48,7 @@ class ConvertPlaceholder
|
|||||||
/** @var string replace regex for named (:...) entries */
|
/** @var string replace regex for named (:...) entries */
|
||||||
public const REGEX_REPLACE_NAMED = '/'
|
public const REGEX_REPLACE_NAMED = '/'
|
||||||
. '(' . self::PATTERN_ELEMENT . ')'
|
. '(' . self::PATTERN_ELEMENT . ')'
|
||||||
|
. self::PATTERN_COMMENT
|
||||||
. '('
|
. '('
|
||||||
. self::PATTERN_IGNORE
|
. self::PATTERN_IGNORE
|
||||||
. self::PATTERN_NAMED
|
. self::PATTERN_NAMED
|
||||||
@@ -53,6 +57,7 @@ class ConvertPlaceholder
|
|||||||
/** @var string replace regex for question mark (?) entries */
|
/** @var string replace regex for question mark (?) entries */
|
||||||
public const REGEX_REPLACE_QUESTION_MARK = '/'
|
public const REGEX_REPLACE_QUESTION_MARK = '/'
|
||||||
. '(' . self::PATTERN_ELEMENT . ')'
|
. '(' . self::PATTERN_ELEMENT . ')'
|
||||||
|
. self::PATTERN_COMMENT
|
||||||
. '('
|
. '('
|
||||||
. self::PATTERN_IGNORE
|
. self::PATTERN_IGNORE
|
||||||
. self::PATTERN_QUESTION_MARK
|
. self::PATTERN_QUESTION_MARK
|
||||||
@@ -61,6 +66,7 @@ class ConvertPlaceholder
|
|||||||
/** @var string replace regex for numbered ($n) entries */
|
/** @var string replace regex for numbered ($n) entries */
|
||||||
public const REGEX_REPLACE_NUMBERED = '/'
|
public const REGEX_REPLACE_NUMBERED = '/'
|
||||||
. '(' . self::PATTERN_ELEMENT . ')'
|
. '(' . self::PATTERN_ELEMENT . ')'
|
||||||
|
. self::PATTERN_COMMENT
|
||||||
. '('
|
. '('
|
||||||
. self::PATTERN_IGNORE
|
. self::PATTERN_IGNORE
|
||||||
. self::PATTERN_NUMBERED
|
. self::PATTERN_NUMBERED
|
||||||
@@ -71,6 +77,7 @@ class ConvertPlaceholder
|
|||||||
// prefix string part, must match towards
|
// prefix string part, must match towards
|
||||||
// seperator for ( = , ? - [and json/jsonb in pg doc section 9.15]
|
// seperator for ( = , ? - [and json/jsonb in pg doc section 9.15]
|
||||||
. self::PATTERN_ELEMENT
|
. self::PATTERN_ELEMENT
|
||||||
|
. self::PATTERN_COMMENT
|
||||||
// match for replace part
|
// match for replace part
|
||||||
. '(?:'
|
. '(?:'
|
||||||
// ignore parts
|
// ignore parts
|
||||||
|
|||||||
@@ -135,6 +135,30 @@ class EditUsers implements Interface\TableArraysInterface
|
|||||||
'min_edit_acl' => '100',
|
'min_edit_acl' => '100',
|
||||||
'min_show_acl' => '100',
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
|
'debug' => [
|
||||||
|
'value' => $_POST['debug'] ?? '',
|
||||||
|
'output_name' => 'Debug',
|
||||||
|
'type' => 'binary',
|
||||||
|
'int' => 1,
|
||||||
|
'element_list' => [
|
||||||
|
'1' => 'Yes',
|
||||||
|
'0' => 'No'
|
||||||
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
|
],
|
||||||
|
'db_debug' => [
|
||||||
|
'value' => $_POST['db_debug'] ?? '',
|
||||||
|
'output_name' => 'DB Debug',
|
||||||
|
'type' => 'binary',
|
||||||
|
'int' => 1,
|
||||||
|
'element_list' => [
|
||||||
|
'1' => 'Yes',
|
||||||
|
'0' => 'No'
|
||||||
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
|
],
|
||||||
'email' => [
|
'email' => [
|
||||||
'value' => $_POST['email'] ?? '',
|
'value' => $_POST['email'] ?? '',
|
||||||
'output_name' => 'E-Mail',
|
'output_name' => 'E-Mail',
|
||||||
|
|||||||
Reference in New Issue
Block a user