restringir o usuário de determinada função a alterar seu email

10

Existe alguma maneira de restringir os usuários de determinada função para alterar o endereço de email. Uma vez registrados, eu preciso deles não para poder alterá-lo na página de configurações de edição. Eu descobri como restringir a alteração do nome de usuário, mas não do email.

Estou usando o Drupal 7. Obrigado em avançado :)

cayerdis
fonte

Respostas:

8

Outra maneira é programaticamente em seu módulo personalizado

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
fonte
5

Use o módulo de proteção do usuário :

Este módulo permite controle de acesso refinado dos administradores de usuários, fornecendo várias proteções de edição para os usuários. As proteções podem ser específicas para um usuário ou aplicadas a todos os usuários em uma função.

Hamid Nikmehr
fonte
Fiz o download deste módulo, mas ele não fez o que era necessário - não é possível impedir que um usuário altere sua própria senha. Em vez disso, impede que as funções de administrador alterem as senhas de OUTROS usuários.
Littledynamo
3

zhilevan - obrigado pelo bom código para me ajudar a resolver esse problema rapidamente. Eu tenho um site no qual existe um login genérico de "cliente" da função de usuário para que os clientes possam carregar e baixar arquivos. A conta do usuário será compartilhada entre potencialmente muitos clientes para um upload ou download "único" e não queremos que eles alterem o nome do usuário, a senha ou qualquer outro material dessa conta genérica. Tenho certeza de que existem maneiras mais elegantes de fazer isso, mas aqui está o meu código para "desligar a opção de edição" com base na função do usuário. (Tentei o módulo de proteção do usuário, mas não consegui fazê-lo funcionar). Aqui está o meu código, caso alguém ache útil.

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
fonte
:). não há de quê.
Yusef