团队管理

Drupal Team management

我是 drupal 的新手(但不是编程人员) 我正在开发一个具有 3 个用户级别的网站。

  1. 一位能够更改任何用户内容的大师。
  2. 能够更改其内容和注册为其雇员的用户的内容的媒体人。
  3. 一个只能改变自己内容的普通人。

中级用户不能更改在另一个中级用户下注册的基本用户的内容。

研究 google 我找到了 Organic Group 模块。然而,这个模块似乎根据内容类型对用户进行分组。这不是我想要的。它更像是有领导者和成员的团队,团队会发布相同的内容类型。

谁能帮帮我?

用户层级

您可以使用用户字段 (/admin/config/people/accounts/fields) 来创建用户层次结构。你可以:

  1. 创建对经理的引用
  2. 或为团队创建许多引用

版本安全

您可以使用 hook_form_alter()。在您的模块中实现此挂钩时,您将能够检查用户是否可以编辑内容。

这是一个示例代码:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
    global $user;
    if ($form_id == 'TYPE_node_form') {
    // or if (strpos($form_id, '_node_form') !== false) {

        $node = $form_state['build_info']['args'][0] ;

        if (! check_if_user_can_edit($user, $node)) {

            drupal_set_message(t('Restricted'), 'error');
            drupal_goto('<front>');
        }
    }
}

check_if_user_can_edit() 函数,应该检查 $user 字段(团队或其他),并检查 $node 的所有者($node->uid),以及return TRUE 如果用户能够编辑,或者 FALSE 二者之一。

您还可以实施 hook_node_presave() 以确保无法使用相同的 check_if_user_can_edit() 功能以其他方式编辑任何节点。