web-dev-qa-db-ja.com

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

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

私はDrupal 7.を使用しています。ありがとうございます:)

10
cayerdis

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

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;
          }
      }
 }
8
Yusef

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

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

5
Hamid Nikmehr

zhilevan –この問題の迅速な解決を開始してくれたNiceコードに感謝します。クライアントがファイルをアップロードおよびダウンロードできるように、一般的なユーザーロール「クライアント」ログインがあるサイトがあります。ユーザーアカウントは、「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']);
          }
      }
 }
3
leanderl