7 - Сопоставление нескольких групп LDAP с отдельными ролями Drupal с помощью логических операторов
Я пытаюсь настроить довольно сложные разрешения в D7 на основе членства в группе LDAP, и это очень помогло бы, если бы был способ использовать логические операторы для выполнения сопоставления ролей.
Некоторый контекст:
- Существует несколько похожих отделов: в каждом есть пул сотрудников, и в каждом есть менеджер.
- Группы LDAP сопоставляются с отделами, а также ролями. Менеджер финансового отдела принадлежит две группы: одна, которая обозначает группу Finance_dept, другая, которая обозначает группу Менеджеров.
- Менеджеры должны иметь R/W доступ к частям сайта, которые соответствуют только их соответствующим отделам ; сотрудники должны иметь только R-доступ.
То, что я пробовал (и исключил):
У меня есть модуль LDAP, настроенный для предоставления ролей Drupal на основе членства в группах LDAP - эта часть хорошо работает для сопоставлений один к одному; например:
- Финансовый отдел|финансы
- Менеджеры|менеджеры
Я пробовал различные итерации фильтров поиска LDAP, но безрезультатно:
- Финансовый отдел и менеджеры|финансовые менеджеры
- (&(Финансовый отдел)(Менеджеры))|финансовые менеджеры
Кто-нибудь заставил это работать?
1 answers
Пока я не найду (или кто-то другой не опубликует) лучший способ сделать это, мое промежуточное решение:
- Настройте группу LDAP ->Предоставление ролей Drupal в обычном режиме.
- Используйте модуль Правил, чтобы программно назначить/отменить другую роль в событиях Пользователь вошел в систему и Перед сохранением учетной записи пользователя.
Пример (ссылаясь на мой вопрос выше):
LDAP-сервер Подготовка:
Finance_dept|финансы
Менеджеры|менеджеры
Создайте роли вручную:
- финансовые менеджеры
Правила:
Finance_dept + Менеджеры = Финансовые менеджеры
- События: Пользователь вошел в систему, прежде чем сохранить учетную запись пользователя
- Элементы: У пользователя есть роли: финансы, менеджеры
- Действия: Добавление роли пользователя: финансовые менеджеры
Отстранен от работы либо с Финансами, либо с Менеджерами
- События: Пользователь вошел в систему, прежде чем сохранить учетную запись пользователя
-
Элементы:
- У пользователя НЕТ роли(ролей): финансы
- ИЛИ
- У пользователя нет ролей: менеджеры
- Действия: Удалить роль пользователя: финансовые менеджеры
Пока работает, но он не будет масштабироваться дальше нескольких комбинаций ролей.