Joomla 2.5 ACL限制为特定功能/视图

时间:2012-10-17 22:29:41

标签: components acl joomla2.5

我似乎在确定如何将Joomla 2.5后端用户限制为我正在编写的自定义组件中的特定功能/视图时出现问题。根据我的理解,我应该能够将我的视图添加为access.xml文件中的一个部分。我通过命名与我的视图同名的部分来尝试这一点,但我似乎无法独立于整个组件更改对该视图的访问。有没有人有更深入的例子我可以查看或提示?这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

我相信Joomla不支持你要做的事情。 我的建议是在access.xml中为视图添加自定义规则

<section name="component">
   <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
   <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
   <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" />
   <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" />
   <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" />
   <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" />
</section>

<section name="views">
   <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
</section>

然后将您的观点保存在#__assets表格中,其名称为com_component.view.playerlist, 在rules字段中,您应该保存规则的JSON编码列表:

{"core.admin":{}}

您可以使用JAccess

检查当前用户是否可以访问确定的部分
$user_id=JFactory::getUser()->id;
$has_permission = JAccess::check($user_id,'core.admin','com_component.view.playerlist');
if($has_permission){
    draw_view();
}else{
    JError::riseError(403,JText::_('PERMISSION_DENIED'));
    // or
    JError::raiseWarning(403,JText::_('PERMISSION_DENIED'));
}

如果您有任何疑问,请随时发表评论。