Beschränken Sie den Benutzer von einer bestimmten Rolle, um seine E-Mail-Adresse zu ändern

10

Gibt es eine Möglichkeit, Benutzer von einer bestimmten Rolle einzuschränken, um ihre E-Mail-Adresse zu ändern? Sobald sie registriert sind, brauche ich sie nicht, um sie auf der Seite mit den Bearbeitungseinstellungen ändern zu können. Ich habe herausgefunden, wie ich den Benutzernamen, aber nicht die E-Mail-Adresse einschränken kann.

Ich benutze Drupal 7. Danke im Voraus :)

Cayerdis
quelle

Antworten:

8

Ein anderer Weg ist programmgesteuert in Ihrem benutzerdefinierten Modul

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;
          }
      }
 }
Yusef
quelle
5

Verwenden Sie das Benutzerschutzmodul :

Dieses Modul ermöglicht eine differenzierte Zugriffssteuerung für Benutzeradministratoren, indem verschiedene Bearbeitungsschutzfunktionen für Benutzer bereitgestellt werden. Der Schutz kann für einen Benutzer spezifisch sein oder auf alle Benutzer in einer Rolle angewendet werden.

Hamid Nikmehr
quelle
Ich habe dieses Modul heruntergeladen, aber es hat nicht das getan, was erforderlich war - es kann einen Benutzer nicht daran hindern, sein eigenes Passwort zu ändern. Vielmehr wird verhindert, dass Administratorrollen die Kennwörter ANDERER Benutzer ändern.
littledynamo
3

zhilevan - danke für den netten Code, mit dem ich dieses Problem schnell lösen kann. Ich habe eine Site, auf der sich eine generische Benutzerrolle "Client" anmeldet, damit Clients Dateien hochladen und herunterladen können. Das Benutzerkonto wird von potenziell vielen Kunden für einen "einmaligen" Upload oder Download freigegeben, und wir möchten nicht, dass sie den Benutzernamen, das Kennwort oder andere Dinge für dieses generische Konto ändern. Ich bin mir sicher, dass es elegantere Möglichkeiten gibt, dies zu tun, aber hier ist mein Code zum "Herunterfahren der Bearbeitungsoption" basierend auf der Benutzerrolle. (Ich habe das Benutzerschutzmodul ausprobiert, konnte es aber nicht zum Laufen bringen.) Hier ist mein Code für den Fall, dass jemand anderes ihn nützlich findet.

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']);
          }
      }
 }
Leanderl
quelle
:). Ihr Willkommen.
Yusef