Есть ли хук после подтверждения пользователя?

8

Я хочу добавить тип контента после регистрации пользователя на сайте.

Я пытался, hook_user_save()но он сохраняет тип контента, прежде чем пользователь подтвердит свою электронную почту.

Есть ли хук после подтверждения по электронной почте?

Ahmed
источник

Ответы:

11

Хотя в этом подходе используются модули, я добавляю узлы после того, как пользователи подтверждают свою электронную почту, используя Logintoboggan и Rules . Интеграция правил Logintoboggan добавляет новое событие, When the user account is validatedкоторое позволит вам выполнить действия после подтверждения по электронной почте.

Патрик Кенни
источник
Обязательно установите модуль интеграции правил LoginToboggan из проекта LoginToboggan .
Батандва
8

Это делает работу для меня:

/**
 * 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
  }
}
Лукаш Франковски
источник
Я должен был использоватьif($account->uid && $account->original->status == 0 && $account->status == 1)
user2534880
2

Если вы используете модуль LoginToboggan для проверки электронной почты и не хотите использовать модуль правил, вы можете просто имитировать ответ проверки модуля (используя logintoboggan_email_validated = TRUEсвойство временного аккаунта, которое передается hook_user_update) в коде:

 /**
 * 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

  }
}

Поскольку основные и другие модули также будут вызывать hook_user_update, вы захотите реализовать что-то, чтобы избежать повторных действий. В этом примере я установил другое свойство в $ account после начала действия, но при необходимости вы можете установить более точное управление.

Обратите внимание, что если использовать LoginToboggan для автоматической проверки электронной почты, метод IOco не будет работать (среди многих причин - во время hook_user_presave, $ account-> status == 1 (это просто роль в выбранной вами «предварительно авторизованной»). штат).

Вишнар Таделератха
источник