restreindre l'utilisateur d'un certain rôle pour modifier son e-mail

10

Existe-t-il un moyen de restreindre les utilisateurs de certains rôles pour changer leur adresse e-mail? Une fois qu'ils sont enregistrés, je n'ai pas besoin d'eux pour pouvoir le changer dans la page de modification des paramètres. J'ai trouvé comment restreindre pour changer le nom d'utilisateur mais pas l'e-mail.

J'utilise Drupal 7. Merci à l'avance :)

cayerdis
la source

Réponses:

8

Une autre façon est par programmation dans votre module personnalisé

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
la source
5

Utilisez le module de protection des utilisateurs :

Ce module permet un contrôle d'accès précis des administrateurs d'utilisateurs, en offrant diverses protections d'édition aux utilisateurs. Les protections peuvent être spécifiques à un utilisateur ou appliquées à tous les utilisateurs d'un rôle.

Hamid Nikmehr
la source
J'ai téléchargé ce module mais il n'a pas fait ce qui était nécessaire - il ne peut pas empêcher un utilisateur de changer son propre mot de passe. Au contraire, il empêche les rôles d'administrateur de changer les mots de passe des AUTRES utilisateurs.
littledynamo
3

zhilevan - merci pour le bon code pour me permettre de résoudre ce problème rapidement. J'ai un site où il existe une connexion générique "client" au rôle utilisateur afin que les clients puissent télécharger et télécharger des fichiers. Le compte d'utilisateur sera partagé entre potentiellement de nombreux clients pour un téléchargement ou un téléchargement "unique" et nous ne voulons pas qu'ils modifient le nom d'utilisateur, le mot de passe ou tout autre élément pour ce compte générique. Je suis sûr qu'il existe des façons plus élégantes de le faire, mais voici mon code pour "fermer l'option d'édition" en fonction du rôle de l'utilisateur. (J'ai essayé le module de protection des utilisateurs, mais je n'ai pas pu le faire fonctionner). Voici mon code au cas où quelqu'un d'autre le trouverait 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']);
          }
      }
 }
leanderl
la source
:). vous êtes le bienvenu.
Yusef