我假设您已经实现了完整的 ACL,即表中有一个资产列documents
,并且您access.xml
定义了一些 ACL 规则,即
<section name="component">
<action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
...
您要在其中添加core.view
ACLcore.view.own
规则access.xml
(通常在您的管理员组件根目录中)。
<action name="core.view" title="View all documents"
<action name="core.view.own" title="View own documents"
在组件配置中,为用户分配权限,以便超级用户可以查看所有(管理员有core.view
权限)并且每个注册用户都有core.view.own
在 view.html 甚至更好的模型中,在加载任何数据之前测试权限:
$user = JFactory::getUser();
$id = $app->input->getInt('id') // load the document id
$canView = false;
if($id){
$canView = $user->authorise('core.view', 'com_yourcomponent.document') ||
$user->authorise('core.view.own', 'com_yourcomponent.document.'.$id);
}