/** * see if a user is authorised to carry out a particular task * @public * @param realm the realm under test * @param component the component under test * @param instance the instance under test * @param level the level of access required * @return bool true if authorised, false if not */ function pnSecAuthAction($testrealm, $testcomponent, $testinstance, $testlevel = 0) { $testrealm = isset($testrealm) ? $testrealm : 0; $testcomponent = isset($testcomponent) ? $testcomponent : null; $testinstance = isset($testinstance) ? $testinstance : null; if (strlen($testcomponent) == 0 || strlen($testrealm) == 0) { return false; } static $userperms, $groupperms; $dbconn =& pnDBGetConn(true); $pntable =& pnDBGetTables(); if (!isset($GLOBALS['authinfogathered']) || (int) $GLOBALS['authinfogathered'] == 0) { // First time here - get auth info list($userperms, $groupperms) = pnSecGetAuthInfo(); if (count($userperms) == 0 && count($groupperms) == 0) { // No permissions return false; } } // Get user access level $userlevel = pnSecGetLevel($userperms, $testrealm, $testcomponent, $testinstance); // User access level is override, so return that if it exists if ($userlevel > ACCESS_INVALID) { // user has explicitly defined access level for this // realm/component/instance combination return $userlevel >= $testlevel; } return pnSecGetLevel($groupperms, $testrealm, $testcomponent, $testinstance) >= $testlevel; }
/** * see if a user is authorised to carry out a particular task * @public * @param realm the realm under test * @param component the component under test * @param instance the instance under test * @param level the level of access required * @returns bool * @return true if authorised, false if not */ function pnSecAuthAction($testrealm, $testcomponent, $testinstance, $testlevel) { static $authinfogathered = 0; static $userperms, $groupperms; list($dbconn) = pnDBGetConn(); $pntable = pnDBGetTables(); if ($authinfogathered == 0) { // First time here - get auth info list($userperms, $groupperms) = pnSecGetAuthInfo(); if (count($userperms) == 0 && count($groupperms) == 0) { // No permissions return; } $authinfogathered = 1; } // Get user access level $userlevel = pnSecGetLevel($userperms, $testrealm, $testcomponent, $testinstance); // User access level is override, so return that if it exists if ($userlevel > ACCESS_INVALID) { // user has explicitly defined access level for this // realm/component/instance combination if ($userlevel >= $testlevel) { // permission is granted to user return true; } else { // permission is prohibited to user, so group perm // doesn't matter return false; } } // User access level not defined. Now check group access level $grouplevel = pnSecGetLevel($groupperms, $testrealm, $testcomponent, $testinstance); if ($grouplevel >= $testlevel) { // permission is granted to associated group return true; } // No access granted return false; }