X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fadmins_functions.php;h=c1987fb465b8c4cfd7b5841f26f25a63ab040f4f;hp=9739305777b21a352542a83ef24cf3e966d20b73;hb=9b8fe454a575a1f000b00bc7ca37eaad6d59d21a;hpb=80a8d45c3804163a27c6f7f1a08899653d539897 diff --git a/inc/libs/admins_functions.php b/inc/libs/admins_functions.php index 9739305777..c1987fb465 100644 --- a/inc/libs/admins_functions.php +++ b/inc/libs/admins_functions.php @@ -41,18 +41,20 @@ if (!defined('__SECURITY')) { } // Check ACL for menu combination -function adminsCheckAdminAcl ($action, $what) { - // If action is login or logout allow allways! - $default = 'allow'; +function isAdminsAllowedByAcl ($action, $what) { + // Get admin's id + $adminId = getCurrentAdminId(); + if (($action == 'login') || ($action == 'logout')) { + // If action is login or logout allow allways! return true; - } // END - if - - // Default is deny - $ret = false; + } elseif (isset($GLOBALS[__FUNCTION__][$adminId][$action][$what])) { + // If we have cache, use it + return $GLOBALS[__FUNCTION__][$adminId][$action][$what]; + } - // Get admin's id - $adminId = getCurrentAdminId(); + // But default result is failed + $GLOBALS[__FUNCTION__][$action][$what] = false; // Get admin's defult access right $default = getAdminDefaultAcl($adminId); @@ -63,7 +65,7 @@ function adminsCheckAdminAcl ($action, $what) { $parent_action = getActionFromModuleWhat('admin', $what); // Check with this function... - $parent = adminsCheckAdminAcl($parent_action, ''); + $parent = isAdminsAllowedByAcl($parent_action, ''); } else { // Anything else is true! $parent = false; @@ -81,7 +83,7 @@ function adminsCheckAdminAcl ($action, $what) { $aclMode = $GLOBALS['cache_array']['admin_acls']['access_mode'][$adminId][$key]; // Log debug message - logDebugMessage(__FUNCTION__, __LINE__, 'action=' . $action . ',key=' . $key . ',acl_mode=' . $aclMode); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'action=' . $action . ',key=' . $key . ',acl_mode=' . $aclMode); // Count cache hits incrementStatsEntry('cache_hits'); @@ -93,13 +95,13 @@ function adminsCheckAdminAcl ($action, $what) { $aclMode = $GLOBALS['cache_array']['admin_acls']['access_mode'][$adminId][$key]; // Log debug message - logDebugMessage(__FUNCTION__, __LINE__, 'what=' . $what . ',key=' . $key . ',acl_mode=' . $aclMode); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'what=' . $what . ',key=' . $key . ',acl_mode=' . $aclMode); // Count cache hits incrementStatsEntry('cache_hits'); } } elseif (!isExtensionActive('cache')) { - // Old version, so load it from database + // Extension ext-cache is absent, so load it from database $result = false; if (!empty($action)) { // Main menu @@ -123,14 +125,14 @@ function adminsCheckAdminAcl ($action, $what) { // Check ACL and (maybe) allow //* DEBUG: */ debugOutput('default='.$default.',acl_mode='.$aclMode.',parent='.intval($parent)); - if ((($default == 'allow') && ($aclMode != 'deny')) || (($default == 'deny') && ($aclMode == 'allow')) || ($parent === true) || (($default == '***') && ($aclMode == 'failed') && ($parent === false))) { + if ((($default == 'allow') && ($aclMode != 'deny')) || (($default == 'deny') && ($aclMode == 'allow')) || ($parent === true) || (($default == 'NO-ACL') && ($aclMode == 'failed') && ($parent === false))) { // Access is granted - $ret = true; + $GLOBALS[__FUNCTION__][$adminId][$action][$what] = true; } // END - if // Return value //* DEBUG: */ debugOutput(__FUNCTION__.'['.__LINE__.']:act='.$action.',wht='.$what.',default='.$default.',aclMode='.$aclMode); - return $ret; + return $GLOBALS[__FUNCTION__][$adminId][$action][$what]; } // Create email link to admins's account