Drupal如何让某些管理员只看到他们创建的用户

时间:2014-10-11 03:03:24

标签: drupal drupal-7 drupal-6 profiles

我使用Drupal 7并且更愿意这样做但是如果我需要使用Drupal 6我会的。我有一个Drupal 7站点,我允许“顾问”创建经过身份验证的用户。我是该网站的管理员,所以我看到并且可以做任何事情。 “顾问”可以做的就是创建和编辑经过身份验证的用户。有没有办法在顾问程序登录时创建一个显示特定顾问创建的用户的视图?

如果你不明白我在说什么,请让我这样说吧。我是该网站的管理员,所以我可以做任何事情。我创建了一个名为advisor的用户角色。用户还有一个经过身份验证的角色。顾问可以创建经过身份验证的用户。所以我有顾问1.顾问1创建了10个用户。我也有Advisor 2. Advisor 2创建了3个用户。我想要一个页面(很可能是用视图构建的 - 我以前在其他网站上使用了视图,所以我对它们很熟悉) - 我想要一个Advisor 1登录后可以访问的页面将显示他们创建的所有10个用户。顾问1不会看到Advisor 2创建的用户。

这可能吗?任何有关这方面的帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我已经实现了类似的东西,我可以给你一些指导。 首先,drupal 7不存储用户创建者的信息。 因此,为了跟踪此情况,您需要将自定义字段附加到用户以保留此信息。

在这种情况下,您必须确保每个创作者只能在此字段中插入自己而不是其他任何人,否则您将不得不找到一种自动填充方式。 我建议您使用field permission module来设置此字段的权限(用户可能甚至不应该有视图,创建者不应该更改它等)和computed field module以自动填充字段(例如creator_field)例如,使用创建者的uid创建。

最后,在创建视图时,您可以使用creator_field上的登录用户添加上下文过滤。

您还应该查看有机组。我没有使用它,但可能会有所帮助

希望它有所帮助。

更新

添加

  global $user;
  $entity_field[0]['value'] = $user -> uid;

到计算字段设置中的计算代码(PHP),并将值存储为“数据库存储设置”中的整数。然后在您的视图中,您应该添加一个用户视图,其中包含creator_field的上下文过滤器。在上下文过滤器设置中,您必须设置“提供默认值” - > “当过滤器值不在URL中时”部分中的“登录用户的用户ID”。

答案 1 :(得分:0)

这可以通过在用户配置文件中添加一个指向用户创建者的字段(使用Entity Reference模块)在Drupal 7中相对容易地完成。 Profile2可以提供在配置文件中使此字段可用的快捷方式,但如果这是您需要添加到配置文件的唯一自定义项,则在自定义模块中执行此操作会更加清晰。

视图(Views module)可以配置为输出当前登录用户作为创建者的用户列表。

您还需要为user_access添加类似的逻辑以允许/限制配置文件编辑(如果当前用户是配置文件中引用的用户)。如果您计划拥有不同的管理级别,权限挂钩也可能很有用。

Tokens模块应该通过将当前用户插入到字段中来为新用户插入此值。或者您可以在保存用户之前执行此操作。它会有点像这样:

function mymodule_user_presave(&$edit, $account, $category) {
  if ($account->is_new) {
    global $user; 
    $created_by = $user->uid; 
    $edit['created_by'] = $created_by;
  }
}
祝你好运。