¿Hay un gancho después de la confirmación del usuario?

8

Quiero agregar un tipo de contenido después de que un usuario se registre en el sitio.

Lo intenté hook_user_save()pero guarda el tipo de contenido antes de que el usuario confirme su correo electrónico.

¿Hay un gancho después de la confirmación por correo electrónico?

Ahmed
fuente

Respuestas:

11

Aunque este enfoque utiliza módulos, agrego nodos después de que los usuarios confirman sus correos electrónicos utilizando Logintoboggan y Reglas . La integración de reglas de Logintoboggan agrega un nuevo evento, When the user account is validatedque le permitirá realizar acciones tras la confirmación por correo electrónico.

Patrick Kenny
fuente
Asegúrese de instalar el módulo de integración de reglas LoginToboggan desde el proyecto LoginToboggan .
Batandwa
8

Esto hace el trabajo para mí:

/**
 * Implements @see hook_user_presave
 */
function hook_user_presave(&$edit, $account, $category) {
  if ($account->uid // user is not new
      && $account->status === "0" && $edit['status']==1) { // user is being activated
  }
}
Lukasz Frankowski
fuente
Tuve que usarif($account->uid && $account->original->status == 0 && $account->status == 1)
user2534880
2

Si está utilizando el módulo LoginToboggan para la validación de correo electrónico y no desea utilizar el módulo de reglas, simplemente puede imitar la respuesta de validación del módulo (explotando una logintoboggan_email_validated = TRUEpropiedad de cuenta temporal que se envía a hook_user_update) usted mismo en el código:

 /**
 * Implement hook_user_update()
 *
 */
function yourcustommodule_user_update(&$edit, $account) {
  if (!empty($account->logintoboggan_email_validated) && !isset($account->your_custom_action)) {
        $account->your_custom_action = TRUE;

        // Do what you want here

  }
}

Dado que los módulos principales y otros también invocarán hook_user_update, querrá implementar algo para evitar acciones repetidas. En este ejemplo, configuro otra propiedad en la cuenta $ una vez que se inicia la acción, pero puede imponer un control más preciso si es necesario.

Tenga en cuenta que si usa LoginToboggan para la validación automática de correo electrónico, el método de IOco no funcionará (entre las muchas razones, durante un hook_user_presave, $ account-> status == 1 (es solo el rol que está en su "autorización previa" elegida) estado).

Vishnar Tadeleratha
fuente