/** 
* 对资源进行acl校验 
* 
* @param string $rsid 资源标识 
* @param array $user 特定用户,不指定则校验当前用户 
* 
* @return boolean 
*/ 
function aclVerity($rsid ,array $user = null){ 
if (empty($rsid)) return false; 
if (!CoreApp::$defaultAcl) { 
CoreApp::$defaultAcl = new AclFlat(); 
} 
$rsRow = aclGetResource($rsid); 
// 未定义资源的缺省访问策略 
if (!$rsRow) return false; 
CoreApp::writeLog($rsRow,'test'); 
$rsRow['access'] = AclBase::formatAccessValue($rsRow['access']); 
// 允许任何人访问 
if (AclBase::EVERYONE == $rsRow['access']) return true; 
// 不允许任何人访问 
if (AclBase::NOBODY == $rsRow['access']) return false; 
// 获取用户信息 
if (empty($user)) $user = isset($_SESSION['SI-SysUser']) ? $_SESSION['SI-SysUser'] : null; 
// 用户未登录,则当成无访问权限 
if (empty($user)) return false; 
$user['roles'] = empty($user['roles']) ? null : normalize($user['roles'],';'); 
$userHasRoles = !empty($user['roles']); 
/** 
* 允许 不带有角色的用户访问 
*/ 
if (AclBase::NO_ROLE == $rsRow['access']) return $userHasRoles ? false : true; 
/** 
* 允许 带有角色的用户访问 
*/ 
if (AclBase::HAS_ROLE == $rsRow['access']) return $userHasRoles ? true : false; 
// --- 对用户进行 资源 <-> 角色 校验 
if ($userHasRoles){ 
foreach ($user['roles'] as $role_id){ 
if ( aclGetRefResourcesRoles($rsid,$role_id) ) 
return true; 
} 
dump($user); 
} 
return false; 
} 
复制代码 代码如下:
