web-dev-qa-db-ja.com

7-ブール演算子を使用して複数のLDAPグループを単一のDrupalロールにマッピングする

LDAPグループメンバーシップに基づいてD7でかなり複雑な権限を設定しようとしています。ブール演算子を使用してロールマッピングを実行する方法があれば、非常に役立ちます。

一部のコンテキスト:

  1. 複数の類似した部門があります:それぞれに従業員のプールがあり、それぞれにマネージャーがいます。
  2. LDAPグループは部門とロールにマップされます。財務部門のマネージャーは2つのグループに属しています。1つはグループを指定しますFinance_dept、もう1つはグループを指定しますマネージャー
  3. 管理者は、サイトの一部にR/Wアクセスできる必要がありますそれぞれの部門にのみ対応;従業員はRアクセスのみを持つべきです。

私が試した(そして除外した):

LDAPモジュールメンバーシップに基づいてDrupalロールをプロビジョニングするように構成されたLDAPモジュールを持っています-そのピースは1対1のマッピングで適切に機能します。例:

  • Finance_dept |金融
  • マネージャー|マネージャー

LDAP検索フィルターのさまざまな反復を試みましたが、効果はありませんでした。

  • Finance_dept&Managers | finance_managers
  • (&(Finance_dept)(Managers))| finance_managers

誰かがこれを機能させましたか?

3
Jesse Glacken

私がこれを行うより良い方法を見つけることができるまで(または他の誰かが投稿するまで)、私の暫定的な解決策は次のとおりです:

  1. LDAPグループをセットアップします-> Drupalロールプロビジョニングは通常どおりです。
  2. ルールモジュールを使用して、イベントに対してプログラムで別の役割を割り当て/取り消すユーザーがログインした、およびユーザーを保存する前にアカウント

(上記の私の質問を参照):

LDAPプロビジョニング:

  • Finance_dept |金融

  • マネージャー|マネージャー

手動で役割を作成します。

  • ファイナンス

ルール:

Finance_dept + Managers = FinanceManagers

  • イベント:ユーザーがログインしました、ユーザーアカウントを保存する前に
  • 要素:ユーザーは役割を持っています:財務、マネージャー
  • アクション:ユーザーロールを追加:financemanagers

FinanceまたはManagersから削除

  • イベント:ユーザーがログインしました。ユーザーアカウントを保存する前に
  • 要素:
    • NOTユーザーには役割があります:財務
    • OR
    • NOTユーザーには役割があります:管理者
  • アクション:ユーザーの役割を削除します:financemanagers

現時点では機能しますが、少数の役割の組み合わせを超えて拡張することはできません。

0
Jesse Glacken