设置在代码中创建节点的权限

时间:2013-07-30 11:50:34

标签: drupal drupal-7 drupal-modules

我是否可以设置权限以允许经过身份验证的用户添加自定义类型的节点?我需要在我试图创建的模块中这样做。正如我所见,hook_permission实际上只是用于创建新权限。

1 个答案:

答案 0 :(得分:0)

如果你的模块名称是mymodule,那么在hook_permission中定义你的“创建节点”权限。然后实现hook_node_access以检查并返回您已实现的内容类型的权限。

示例代码。 注意:它不会开箱即用,您必须替换您的模块名称,权限名称和内容类型名称才能使其正常工作。并且不要忘记清除缓存,TWICE!。     

/**
 * Implements hook_permission().
 *
 */
function mymodule_permission() {
  // define your add permission.
  // Naming of "array key" is important. We use that later.
  return array(
    'YOUR CONTENT NAME: add' => array(
    'title' => t('Add Project Management Team'),
    ),
   );
}

/**
 * Implements hook_node_access().
 */
function mymodule_node_access($node, $op, $account = NULL) {
  $type = is_string($node) ? $node : $node->type;
  // make sure you are responding to content type defined by your module only.
  if ($type == 'YOUR_CONTENT_TYPE_NAME_HERE') {
    // If no account is specified, assume that the check is against the current logged in user
    if (is_null($account)) {
      global $user;
      $account = $user;
    }
    if ($op == 'create' AND user_access('YOUR CONTENT NAME: add', $account)) {
      return NODE_ACCESS_ALLOW;
    }
  }
  return NODE_ACCESS_IGNORE;
}

参考文献:

hook_permission()hook_node_access()