Drupal 7-ユーザーを管理する権限を与えますが、権限は与えません


11

Drupal 7にサイトをセットアップしました。このサイトでは、特定のユーザーにユーザー管理ページへのアクセスを許可し、新しいユーザーの作成、役割の割り当てなどを行えるようにしていますが、ユーザーにアクセスを許可したくありません。役割と権限のページ。

現在、Drupalには2つの権限Administer PermissionsとしかありませんAdminister users

このAdminister users権限を持つユーザーは、[ユーザー管理]ページにアクセスでき、新しいユーザーを作成できますが、ユーザーに役割を割り当てることはできません。

ユーザーがAdminister permissions権限を持っている場合、ユーザーにロールを割り当てることができ、権限とロールの管理ページにもアクセスできます。

ユーザーに役割を割り当てる権限をユーザーに付与し、許可ページにアクセスできないようにするにはどうすればよいですか?

回答:


16

私はまったく同じ要件を持っていて、Roles Delegationモジュールを使用して完璧に構築することができました:-)

ここにあなたにもっとコンテキストを与える私のシナリオがあります-

  1. 私は、A、B、C、管理、メイントの役割を持つドルプサイトを持っていました
  2. Maintの役割を持つユーザーが新しいユーザーを作成し、その間に役割を割り当てることができるようにしたい
  3. また、MaintユーザーがロールA、B、Cのみを新しいユーザーに割り当て、ロールAdminは割り当てられないように制限したかったのです。
  4. それはすべて、Roles Delegationモジュールで数回クリックするだけでした。

お役に立てれば。


1
役割の委任を使用するユーザーを作成できるユーザーを構成できないようです。それらを編集してロールを割り当てることはできますが、作成することはできません。何か不足していますか?
Johnathan Elmore

2

うーん...これを行う明確な方法がないように見えるのは興味深いことです。これは一般的な機能のようです。私はいくつかの解決策を見つけました:

http://drupal.org/project/protect_permissions-ただし、これはまだ本番環境で使用する準備ができていません。

しかし、私はあなたが望むことを達成できると思います:http : //drupal.org/project/permissions_lock

次も必要です:http : //drupal.org/project/user_permissions

後者はあなたが望むことの逆を行うようですが、前者はあなたが望むことを正確に行うようです。私は自分の開発サイトでこれらのどちらもテストしていませんが、これが100%動作することを確認しています。他に遭遇した場合は、この回答を更新します。


1
私もあなたが提案したのと同じ行で考え始めましたが、それからモジュールRoles Delegation(drupal.org/project/role_delegation)を見つけました。この種の要件については、ぜひご覧ください。それは素晴らしい作品です。
Sumeet Pareek

驚くばかり!私はこれをブックマークしました、良い発見。
Brandon Bearden

2

役割の委任はセキュリティホールを残します。管理ページとその管理ツールを使用できるようにするには、管理ユーザーを割り当てます。

ただし、そうすると、その役割はスーパーアドミンも編集できます。詳細については、Drupalのユーザー管理権限に注意してください。

私の解決策は役割の委任+このフックです


function hook_user_presave(&$edit, $account, $category) {
    if( $account->uid == 1 || in_array('adminrole',$account->roles)){ //trying to edit an admin
        global $user;
        if($user->uid != 1){//only super admin can do that
            drupal_set_message( "You attempted to edit an admin or dev user name and you are not allowed, this attempt was logged." ,'error');
            watchdog('permissions_extra','Logged in user %user tried to edit account %account', array('%user' => $user->uid, '%account' => $account->uid), WATCHDOG_ERROR);
            drupal_goto('/admin/people');
        }
    }
}

0

最近、roleassignモジュールを使用してます。これは、まさにあなたが求めていることを実行します。これは基本的にrole_delegationモジュールと同じですが、少し異なるものが必要な場合の代替手段になる可能性があります。

主な違いの1つは、割り当て可能なロールをどのように決定するかです。roleassignを使用すると、使用可能にする役割を選択するだけで、それらの役割を割り当てるための単一の新しい権限が追加されます。 roleassign

role_delegationモジュールは、サイトに存在する各ロールに新しい権限を与えるように見えます: role_delegationモジュールの権限

role_delegationモジュールは、インストール数がほぼ3倍になり、「推奨」のDrupal 8リリースもあるようです。問題のキューもより良い形になっているようですので、それはおそらくより良いオプションですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.