用户确认后是否有钩子?


8

我想在用户注册到站点后添加内容类型。

我尝试过,hook_user_save()但是它在用户确认电子邮件之前保存了内容类型。

邮件确认后有钩子吗?

Answers:


11

尽管此方法使用模块,但我在用户使用LogintobogganRules确认电子邮件后添加节点。Logintoboggan规则集成添加了一个新事件,When the user account is validated使您可以在确认电子邮件后执行操作。


确保从LoginToboggan项目安装LoginToboggan规则集成模块。
Batandwa 2014年

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 '16

2

如果您使用LoginToboggan模块进行电子邮件验证,并且不想使用rules模块,则可以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(这只是您选择的“预授权”中的角色州)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.