0

我已经为 Joomla 2.5 编写了一个组件。它工作得很好。但是我遇到了访问控制问题。该组件管理文档。它允许客户上传它们、标记它们、搜索等。所有这些都很好。用户需要登录系统才能查看、编辑和删除文档。

不幸的是,虽然系统限制了编辑和删除,但它似乎并没有限制查看。它不会将视图限制为仅登录用户。如果您直接在浏览器栏中键入文档的组件 url,它会加载视图:

http://www.mydomain.com/component/document_managment/1.html?view=document

我四处搜寻,找不到任何有用的东西。关于我可能做错了什么的任何想法?

4

1 回答 1

0

我假设您已经实现了完整的 ACL,即表中有一个资产列documents,并且您access.xml定义了一些 ACL 规则,即

<section name="component">
  <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
...
  1. 您要在其中添加core.viewACLcore.view.own规则access.xml(通常在您的管理员组件根目录中)。

    <action name="core.view" title="View all documents"
    <action name="core.view.own" title="View own documents"
    
  2. 在组件配置中,为用户分配权限,以便超级用户可以查看所有(管理员有core.view权限)并且每个注册用户都有core.view.own

  3. 在 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);
    }
    
于 2013-09-21T07:55:42.303 回答