Como verificar se o usuário alterou a senha?


9

Eu queria enviar um e-mail de notificação básico para o usuário, após a alteração da senha, para informá-lo sobre a alteração da senha.

Eu estou usando Rulesmódulos para isso. Mas não estou encontrando nenhuma opção lá, para adicionar condição se o usuário alterou a senha.

Existe alguma maneira de verificar se o usuário alterou sua senha usando regras ou pragmaticamente.

-- Muito obrigado pelo seu tempo.


Respostas:


7

O mais fácil seria fazer isso usando Regras. Seguindo as próximas etapas, deve fazer o trabalho.

  1. Verifique se você ativou o "filtro PHP" na página de módulos. Isso é necessário para poder usar o código PHP dentro do Rules.
  2. Crie uma regra que reaja ao evento do usuário "Depois de salvar uma nova conta de usuário".
  3. Adicione uma condição do tipo "Executar código PHP personalizado" e use o seguinte snippet:
    return $account_unchanged->pass != $account->pass;
  4. Adicione suas ações para enviar uma notificação por email ao usuário ou qualquer outra coisa que se ajuste ao seu objetivo.


Sim, testei isso antes de escrever a resposta.
Ovi #

Obrigado, solução simples e eficiente. Funciona como charme !!
Kalpesh Patel

4

Eu nunca tentei isso no Rules antes, mas provavelmente seria uma questão de comparar valores nos objetos $accounte $account->original.

Uma maneira de fazer isso no código personalizado é implementar hook_user_presave():

function MYMODULE_user_presave(&$edit, $account, $category) {
  // Don't show message for registering users.
  if (isset($account->is_new) && $account->is_new) {
    return;
  }

  if (!empty($edit['pass']) && $account->pass != $edit['pass']) {
    // Password has been changed.
  }
}

Você provavelmente poderia fazer o mesmo hook_user_update(), mas eu nunca tentei isso antes. O acima é retirado de um projeto ao vivo e funciona perfeitamente.


1

O uso de regras pode ser mais fácil, pois você já o está usando, mas você precisa habilitar o módulo Filtro de PHP .

As instruções a seguir:

  1. Ativar módulo Filtro PHP admin/modules
  2. Crie uma nova regra admin/config/workflow/rules
  3. Certifique-se de selecionar After updating an existing user accountReact na lista suspensa de eventos.
  4. Adicione uma condição e escolha Execute custom PHP code
  5. Adicione o seguinte código customizado PHP na seção value

    if(!empty($account->current_pass)) { return true; }

  6. Em seguida, adicione uma ação e selecione Send mail

  7. Na seção de valor, adicione [account:mail]e preencha o campo do assunto e o campo da mensagem.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.