我似乎在确定如何将 Joomla 2.5 后端用户限制为我正在编写的自定义组件中的特定功能/视图时遇到问题。根据我的理解,我应该能够将我的视图添加为 access.xml 文件中的一个部分。我尝试通过将一个部分命名为与我的视图相同的名称来尝试此操作,但我似乎无法独立于整个组件更改对该视图的访问。有人有更深入的示例我可以查看或提示吗?这甚至可能吗?
问问题
702 次
1 回答
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'));
}
如果您有任何疑问,请随时发表评论。
于 2013-03-27T11:35:16.877 回答