我有一个创建多个admin/settings/modname
页面的模块。
我创建了一个新角色。
我希望此角色只能访问一个特定页面,例如admin/setting/modname/custom1
我如何才能将该页面的访问权限分配给此角色?
这会在hook_menu
下的access arguments
下完成吗?
现在,该角色在所有页面上都会被拒绝访问。
答案 0 :(得分:2)
您可以实施hook_perm
为您的模块提供一组自定义权限:
function mymodule_perm() {
return array('my module permission');
}
然后在hook_menu
的菜单项中按照您的建议使用access arguments
:
function mymodule_menu() {
$items['admin/setting/modname/custom1'] = array(
'title' => 'Settings',
'page callback' => 'mymodule_callback',
'access arguments' => array('my module permission')
);
return $items;
}
一旦安装了模块/清除了Drupal的缓存,请转到权限管理页面并授予您对所需角色的新权限,具有该角色的用户(理论上)将能够访问它。
我说“理论上”因为如果您的路径位于admin/
下,那么该角色还需要access administration pages
权限才能查看该页面,这会引入潜在的安全问题。您最好的选择是将路径更改为admin/
以外的其他位置,以避免处理此问题。