ユーザーを特定の役割に制限してメールを変更する


10

ユーザーに特定の役割を制限してメールアドレスを変更する方法はありますか?いったん登録したら、編集設定ページで変更できないようにする必要があります。メールアドレスではなく、ユーザー名の変更を制限する方法を見つけました。

私はDrupal 7を使用しています。よろしくお願いします:)

回答:


8

別の方法は、カスタムモジュールでプログラム的に行うことです

function mymodule_form_alter(&$form,$form_state,$form_id) {
   global $user;
    if ($form_id == "user_profile_form") {
       if(in_array('your role',$user->roles) && isset($form['account'])) {
           $form['account']['mail']['#disabled']=TRUE;
          }
      }
 }

5

ユーザー保護モジュールを使用します。

このモジュールは、ユーザーにさまざまな編集保護を提供することにより、ユーザー管理者のきめ細かなアクセス制御を可能にします。保護はユーザーに固有にすることも、役割のすべてのユーザーに適用することもできます。


このモジュールをダウンロードしましたが、必要な機能を実行できませんでした。ユーザーが自分のパスワードを変更できないようにすることはできません。むしろ、管理者の役割が他のユーザーのパスワードを変更することを防ぎます。
littledynamo 2013年

3

zhilevan –この問題をすばやく解決できるようにしてくれた素晴らしいコードに感謝します。クライアントがファイルをアップロードおよびダウンロードできるように、一般的なユーザーロール「クライアント」ログインがあるサイトがあります。ユーザーアカウントは、「1回限り」のアップロードまたはダウンロードのために潜在的に多くのクライアント間で共有され、この一般的なアカウントのユーザー名、パスワード、またはその他のものを変更することは望ましくありません。これを行うにはもっとエレガントな方法があると思いますが、ユーザーの役割に基づいて「編集オプションを停止する」ための私のコードを次に示します。(ユーザー保護モジュールを試しましたが、機能しませんでした)。他の誰かが便利だと思った場合の私のコードを以下に示します。

function mymodule_form_alter(&$form,$form_state,$form_id) {
   global $user;
    if ($form_id == "user_profile_form") {
       if(in_array('Client',$user->roles) && isset($form['account'])) {

           $form['account']['name']['#disabled']=TRUE;
           $form['account']['current_pass']['#disabled']=TRUE;
           $form['account']['current_pass']['#description']='';
           $form['account']['mail']['#disabled']=TRUE;

           unset($form['picture']);
           unset($form['overlay_control']);
          }
      }
 }

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