0

我可以设置权限以允许经过身份验证的用户添加自定义类型的节点吗?我需要在我尝试创建的模块中执行此操作。正如我所看到的 hook_permission 它实际上只是用于创建新权限。

4

1 回答 1

0

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

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

/**
 * 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_node_access()

于 2013-07-30T23:14:34.800 回答