mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/12006] Cleanup the module auth function token replacement code
PHPBB3-12006
This commit is contained in:
parent
db94f80c5b
commit
7740ab5dc3
1 changed files with 20 additions and 2 deletions
|
@ -351,6 +351,15 @@ class p_master
|
||||||
[(),] |
|
[(),] |
|
||||||
[^\s(),]+)/x', $module_auth, $match);
|
[^\s(),]+)/x', $module_auth, $match);
|
||||||
|
|
||||||
|
// Valid tokens for auth and their replacements
|
||||||
|
$valid_tokens = array(
|
||||||
|
'acl_([a-z0-9_]+)(,\$id)?' => '(int) $auth->acl_get(\'\\1\'\\2)',
|
||||||
|
'\$id' => '(int) $forum_id',
|
||||||
|
'aclf_([a-z0-9_]+)' => '(int) $auth->acl_getf_global(\'\\1\')',
|
||||||
|
'cfg_([a-z0-9_]+)' => '(int) $config[\'\\1\']',
|
||||||
|
'request_([a-zA-Z0-9_]+)' => '$request->variable(\'\\1\', false)',
|
||||||
|
);
|
||||||
|
|
||||||
$tokens = $match[0];
|
$tokens = $match[0];
|
||||||
for ($i = 0, $size = sizeof($tokens); $i < $size; $i++)
|
for ($i = 0, $size = sizeof($tokens); $i < $size; $i++)
|
||||||
{
|
{
|
||||||
|
@ -366,7 +375,7 @@ class p_master
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (!preg_match('#(?:acl_([a-z0-9_]+)(,\$id)?)|(?:\$id)|(?:aclf_([a-z0-9_]+))|(?:cfg_([a-z0-9_]+))|(?:request_([a-zA-Z0-9_]+))#', $token))
|
if (!preg_match('#(?:' . implode(array_keys($valid_tokens), ')|(?:') . ')#', $token))
|
||||||
{
|
{
|
||||||
$token = '';
|
$token = '';
|
||||||
}
|
}
|
||||||
|
@ -379,8 +388,17 @@ class p_master
|
||||||
// Make sure $id separation is working fine
|
// Make sure $id separation is working fine
|
||||||
$module_auth = str_replace(' , ', ',', $module_auth);
|
$module_auth = str_replace(' , ', ',', $module_auth);
|
||||||
|
|
||||||
|
$module_auth = preg_replace(
|
||||||
|
// Array keys with # prepended/appended
|
||||||
|
array_map(function($value){
|
||||||
|
return '#' . $value . '#';
|
||||||
|
}, array_keys($valid_tokens)),
|
||||||
|
array_values($valid_tokens),
|
||||||
|
$module_auth
|
||||||
|
);
|
||||||
|
|
||||||
$is_auth = false;
|
$is_auth = false;
|
||||||
eval('$is_auth = (int) (' . preg_replace(array('#acl_([a-z0-9_]+)(,\$id)?#', '#\$id#', '#aclf_([a-z0-9_]+)#', '#cfg_([a-z0-9_]+)#', '#request_([a-zA-Z0-9_]+)#'), array('(int) $auth->acl_get(\'\\1\'\\2)', '(int) $forum_id', '(int) $auth->acl_getf_global(\'\\1\')', '(int) $config[\'\\1\']', '$request->variable(\'\\1\', false)'), $module_auth) . ');');
|
eval('$is_auth = (int) (' . $module_auth . ');');
|
||||||
|
|
||||||
return $is_auth;
|
return $is_auth;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue