limitare l'utente da un determinato ruolo a cambiare la propria email


10

Esiste un modo per limitare gli utenti da un determinato ruolo a modificare il loro indirizzo e-mail. Una volta registrati, ho bisogno di loro per non poterli modificare nella pagina di modifica delle impostazioni. Ho trovato come limitare la modifica del nome utente ma non dell'email.

Sto usando Drupal 7. Grazie in anticipo :)

Risposte:


8

Un altro modo è programmaticamente nel modulo personalizzato

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

Utilizzare il modulo di protezione utente :

Questo modulo consente un controllo degli accessi accurato degli amministratori degli utenti, fornendo varie protezioni di modifica per gli utenti. Le protezioni possono essere specifiche per un utente o applicate a tutti gli utenti in un ruolo.


Ho scaricato questo modulo ma non ha fatto ciò che era richiesto - non è in grado di impedire a un utente di modificare la propria password. Al contrario, impedisce ai ruoli di amministratore di modificare le password di ALTRI utenti.
littledynamo,

3

zhilevan - grazie per il bel codice per iniziare a risolvere rapidamente questo problema. Ho un sito in cui esiste un ruolo utente generico di accesso "client" in modo che i client possano caricare e scaricare file. L'account utente verrà condiviso tra potenzialmente molti client per un caricamento o download "una tantum" e non vogliamo che modifichino il nome utente, la password o qualsiasi altra cosa per questo account generico. Sono sicuro che ci sono modi più eleganti per farlo, ma ecco il mio codice per "disattivare l'opzione di modifica" in base al ruolo dell'utente. (Ho provato il modulo di protezione dell'utente, ma non sono riuscito a farlo funzionare). Ecco il mio codice nel caso in cui qualcun altro lo trovi utile.

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']);
          }
      }
 }

:). prego.
Yusef,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.