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 :)

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

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.


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

:). vous êtes le bienvenu.
Yusef
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.