仅允许某些角色访问Drupal

时间:2015-05-11 22:04:23

标签: php drupal drupal-7

我无法正常工作。我为Drupal创建了一个订单表单模块,我需要控制它的访问权限。我注意到,如果我直接浏览http://example.com/orders/order-form我已经环顾四周并且我认为我在正确的轨道上但却遗漏了一些简单的东西,那么这个订单可以在不登录的情况下访问。我在订单表单模块中创建了以下函数:

function order_form_permission() {
  return array(
    'order form permission' => array(
      'title' => t('Order Form Permissions'),
      'description' => t('Deny access to certain users.'),
    ),
  );
}

然后在同一个文件中创建页面我使用这个函数:

function order_form_menu() {
    $items = array();

    $items['orders/order-form'] = array(
        'title' => 'Order Form',
        'descriptions' => 'A form for ordering products',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('order_form_form'),
        'access arguments' => array('order_form_permission')
    );
    return $items;
}

page arguments数组包含对生成的表单的调用。

我已经为admin/people/permissions中的某些用户角色设置了权限。当我未登录时,它显示访问被拒绝这是我想要的。但当我浏览以主管理员身份登录的页面时,我可以看到它,这就是我想要的。

问题是当我尝试以另一个分配了角色的用户或帐户登录时,我希望能够访问订单表单,它会说“拒绝访问”。我一定是想念一些简单的东西,希望有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

实际上你不需要定义访问回调,它默认为user_access()函数,该函数由drupal的hook_permissions提供支持。

钩子菜单中的访问参数应与钩子权限中的数组键相同。 因此,请尝试从

中删除下划线

'access arguments' => array('order_form_permission')