<?php
/**
* Acl 权限管理接口
*
* @author 色色
*/
interface App_Api_Acl {
/**
* 用户
*/
const __USER__ = 'iwp.acl.users';
/**
* 角色
*/
const __ROLE__ = 'iwp.acl.roles';
/**
* 资源
*/
const __RESOURCE__ = 'iwp.acl.resources';
/**
* 用户-角色
*/
const __USERS_HAS_ROLES__ = 'iwp.acl.users_has_roles';
/**
* 角色-资源
*/
const __ROLES_HAS_RESOURCES__ = 'iwp.acl.roles_has_resources';
/**
* 不允许任何人访问
*/
const NOBODY = 0;
/**
* 允许任何人访问
*/
const EVERYONE = 1;
/**
* 允许 拥有角色的用户访问
*/
const HAS_ROLE = 2;
/**
* 允许 不带有角色的用户访问
*/
const NO_ROLE = 3;
/**
* 在 资源-角色关联 定义的 角色才能访问
*/
const ALLOCATE_ROLES = 4;
/**
* 创建资源,返回资源记录主键
*
* 要检查 $uuid 是否唯一,如果不唯一,则应抛出 Core_Exception_SqlPrimaryKeyExists 异常
*
* @param string $uuid
* @param int $access
* @param string $description
*
* @return int
*/
function createResource($uuid,$access,$description);
/**
* 修改资源,返回成功状态
*
* 修改时不能 修改 资源的 uuid 和 主键编号
*
* @param array $resource
*
* @return int
*/
function updateResource(array $resource);
/**
* 删除资源
*
* 相应的也要解除其与角色的关系
*
* @param string $uuid
*
* @return int
*/
function deleteResource($uuid);
/**
* 创建角色,返回角色记录主键
*
* 要检查 $rolename 是否唯一,如果不唯一,则应抛出 Core_Exception_SqlPrimaryKeyExists 异常
*
* @param string $rolename
* @param string $description
*
* @return int
*/
function createRole($rolename,$description);
/**
* 修改角色,返回成功状态
*
* 修改时不能 修改 角色名 和 主键编号
*
* @param array $role
*
* @return int
*/
function updateRole(array $role);
/**
* 删除角色
*
* 相应的也要解除其与资源的关系
*
* @param int $role_id
*
* @return int
*/
function deleteRole($role_id);
/**
* 为资源指定角色,每次均先全部移除表中相关记录再插入
*
* @param string $uuid
* @param mixed $role_ids
* @param boolean $set_null 是否使用Acl内置的访问授权来设置该资源,此举将会清空该uuid对应的{角色-资源}的关联记录
* @param int $default_access 指定访问授权的值
*
* @return boolean
*/
function allocateRolesForResource($uuid,$role_ids,$set_null=false,$default_access=-1);
/**
* 清除指定资源的角色信息
*
* @param string $uuid
*
* @return int
*/
function cleanRolesForResource($uuid);
/**
* 清除指定角色的资源访问列表
*
* @param int $role_id
*
* @return int
*/
function cleanResourcesForRole($role_id);
/**
* 为角色分配资源,每次均先全部移除表中相关记录再插入
*
* @param int $role_id
* @param mixed $uuid_ids
*
* @return boolean
*/
function allocateResourcesForRole($role_id,$uuid_ids);
/**
* 为用户指派角色,每次均先全部移除表中相关记录再插入
*
* @param int $user_id
* @param mixed $role_ids
*
* @return boolean
*/
function allocateRolesForUser($user_id,$role_ids);
/**
* 清除用户的角色信息
*
* @param int $user_id
*
* @return int
*/
function cleanRolesForUser($user_id);
/**
* 解除指定角色的用户关联
*
* @param int $role_id
*
* @return int
*/
function cleanUsersForRole($role_id);
/**
* 校验资源能否被指定的角色列表访问(只需满足某一个角色能够访问就行)
*
* @param string $uuid 资源标识
* @param array $role_ids
*
* @return boolean
*/
function aclVerity($uuid ,array $role_ids = null);
/**
* 重新生成 角色资源访问控制表
*
* @param string $aclElement ACL元素标识
* @param boolean $return 是否返回重新生成的列表
*
* @return mixed
*/
function aclRebuildACT($aclElement ,$return = false);
/**
* 获取 角色资源访问控制表 数据
*
* @param string $aclElement ACL元素标识
*
* @return mixed
*/
function aclGetACT($aclElement);
/**
* 获取 资源 记录
*
* @param string|array $uuid
*
* @return array
*/
function aclGetResource($uuid);
/**
* 获取 角色 记录
*
* @param int|array $role_id
*
* @return array
*/
function aclGetRole($role_id);
/**
* 如果 角色与资源关联,就返回对应的数据,否则返回空;
*
* 此方法可以校验资源是否可被此角色访问
*
* @param int $role_id
* @param string $uuid
*
* @return array
*/
function aclGetRoleHasResource($role_id,$uuid);
// /**
// * 获取 角色能够访问的资源集合
// *
// * @param int $role_id
// *
// * @return array
// */
// function aclGetResourcesByRoleId($role_id);
/**
* 获取 资源被赋予的角色集合
*
* @param array $resource
*
* @return array
*/
function aclGetRolesByResource(array $resource);
}