如何为特定节点提供特定用户编辑权限?

时间:2010-02-18 13:51:08

标签: drupal drupal-permissions drupal-roles

如何为特定节点授予特定用户编辑权限?

我有一个名为“Student”的用户角色。多个用户具有该角色,其中只有少数用户可以编辑节点。我怎么能意识到这一点?

5 个答案:

答案 0 :(得分:13)

我将尝试涵盖一些用例,以及如何解决它们:

  1. 如果某类用户的所有成员都可以编辑某种类型的任何节点
    • 为该用户子集创建一个新角色(“超级学生”,如Emyr建议的那样)并通过Drupal的核心权限系统授予他们“编辑类型内容”权限(无需节点访问模块)
  2. 如果某类用户的所有成员都可以编辑特定节点
    • 为该用户子集创建新角色,并授予他们特定节点的编辑权限(需要节点访问模块,例如Node AccessContent Access)。这还需要有人拥有权限(和时间),以便在创建新节点时授予对角色的访问权。
  3. 有些用户可以编辑一些节点;没有“精英”用户组可以编辑所有节点,并非所有成员都可以编辑相同的节点
    • 这将需要节点访问模块,例如节点访问或带ACL的内容访问。还需要有权授予其他用户访问权限的管理用户来编辑节点。
  4. 允许用户授予其他人访问权限以编辑他们已创建的节点。
    • 我最近使用用户参考CCK字段和Node Access User Reference实现了这一点。您可以授予用户通过核心权限系统编辑自己的节点的权限,然后他们可以将其他用户添加到用户参考字段。在我的情况下,创作者没有获得该权限,我将该字段的默认值设置为创建者的用户ID,这允许用户将自己从能够编辑节点中删除。
  5. 这些都假设您的内容没有分类。如果您的内容和用户组织得足够充分,您可以使用基于分类法或有机组的节点访问模块。

答案 1 :(得分:3)

对于像这样的异常权限,我总是发现一个小的自定义模块是要走的路。一般节点访问模块必须足够通用,以便对许多不同的情况有用,这通常会使它们变得混乱和混乱。

对于这个特定的模块,您可以创建一个实现hook_nodeapi的模块,并在$ op == prepare上,根据您的用户引用检查用户的ID,如果它们不匹配则执行drupal_goto访问被拒绝页面。

答案 2 :(得分:2)

您可以使用Flexi Access执行此操作。为特定用户授予节点上的“更新”权限将允许他编辑节点。

有关更多选项,请参阅页面:Overview of Node Access modules @ Drupal.org。

答案 3 :(得分:1)

您是否尝试过Node AccessContent Access

答案 4 :(得分:0)

如果只有一个子集应该能够编辑节点,则需要额外的“超级学生”角色。

Node Access模块可以帮助您在节点上设置适当的权限。以下是项目页面的摘录:

  

...为管理和帮助系统提供菜单,菜单项,节点和安全集成的角色和用户特定安全权限。我们希望将这套模块提供给社区,以分享套件的有用性,并让社区参与提供额外的支持,测试和审核。   特别注意确保权限管理的可用性在系统的所有部分(节点,菜单,菜单项)中保持一致。此外,每个安全模块都使用级联安全方案来允许全局安全性,并使用该选项覆盖或定义单个项目的安全模型的例外。