¿Cómo verificar si el usuario ha cambiado la contraseña?

9

Quería enviar un correo electrónico de notificación básica al usuario, después de que haya cambiado la contraseña, para informarle sobre el cambio de contraseña.

Estoy usando Rulesmódulos para eso. Pero no encuentro ninguna opción allí, para agregar condición si el usuario ha cambiado la contraseña.

¿Hay alguna manera de verificar si el usuario ha cambiado su contraseña usando reglas o pragmáticamente?

-- Muchas gracias por tu tiempo.

Kalpesh Patel
fuente
1
Comprueba que esto puede ayudarte drupal.stackexchange.com/questions/68380/…
Samuel Beniamin

Respuestas:

7

Lo más fácil sería hacer esto usando Reglas. Siguiendo los siguientes pasos, debería hacer el trabajo.

  1. Asegúrese de haber habilitado el "filtro PHP" en la página de módulos. Esto es necesario para poder usar el código PHP dentro de las Reglas.
  2. Cree una regla que reaccione en el evento de usuario "Después de guardar una nueva cuenta de usuario".
  3. Agregue una condición de tipo "Ejecutar código PHP personalizado" y use el siguiente fragmento:
    return $account_unchanged->pass != $account->pass;
  4. Agregue sus acciones para enviar una notificación por correo electrónico al usuario o cualquier otra cosa que se ajuste a su propósito.
ovi
fuente
¿Lo has probado?
Aboodred1
Sí, probé esto justo antes de escribir la respuesta.
ovi
Gracias, solución simple y eficiente. Funciona como encanto !!
Kalpesh Patel
4

No lo he probado en Reglas antes, pero probablemente sería una cuestión de comparar valores en los objetos $accounty $account->original.

Una forma de hacerlo en código personalizado es 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.
  }
}

Probablemente podrías hacer lo mismo hook_user_update(), pero no lo he intentado antes. Lo anterior está tomado de un proyecto en vivo y funciona perfectamente.

Clive
fuente
1

Usar Reglas puede ser más fácil ya que ya lo está usando, pero debe habilitar el módulo Filtro PHP .

Las instrucciones de la siguiente manera:

  1. Habilitar el módulo de filtro PHP admin/modules
  2. Crear una nueva regla admin/config/workflow/rules
  3. Asegúrese de seleccionar After updating an existing user accountReaccionar en la lista desplegable de eventos.
  4. Agregue una condición y elija Execute custom PHP code
  5. Agregue el siguiente código personalizado de PHP en la sección de valor

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

  6. Luego agregue una acción y seleccione Send mail

  7. En la sección de valor, agregue [account:mail]y complete el campo de asunto y el campo de mensaje.
Aboodred1
fuente