如何更改 Loopback.js 中通过 User.verify(...) 发送的电子邮件验证文本

How To Change The Text of The Email Verification Sent Via User.verify(...) in Loopback.js

我很欣赏 Loopback.js 开箱即用的所有必需品,但是可以使用一些灵活性的一个领域是在用户创建时发送的电子邮件验证。 This GitHub project 有助于说明此功能——但在 SO 或 Google 组或文档中的任何位置(是的,我先在那里检查过)它是否显示了如何更改电子邮件验证的实际文本.

我在 "verify.ejs" 中实现了完全相同的代码(在之前提到的 GitHub 项目中找到)...即:

<%= text %>

现在插入的文字是:

Please verify your email by opening this link in a web browser:

我想将此用户交互称为 "account activation"-- 而不是 "email verification"。该项目有其自身的要求,迫使我实施语义上的变化。提前谢谢你。

(你知道开放源码的摇滚有很多原因......现在对我来说最重要的原因是自我记录的代码。)

我查看了 User.verify(...) 的源代码,发现可以传入的选项比记录的要广泛得多。

在以下代码片段(来自 Loopback 的用户模型)中,您会明白我的意思:

options.host = options.host || (app && app.get('host')) || 'localhost';
    options.port = options.port || (app && app.get('port')) || 3000;

// ### (later) ### //

options.text = options.text || 'Please verify your email by opening this link in a web browser:\n\t{href}';

options.text = options.text.replace('{href}', options.verifyHref);

所以,简而言之,在传递给 User.verify() 的选项对象中设置这些参数:

var options = { 
  host: 'http://some.domain.com',
  port: 5000,
  text: 'Please activate your account by clicking on this link or copying and pasting it in a new browser window:\n\t{href}'
}

User.verify(..) 的源代码位于:https://github.com/strongloop/loopback/blob/master/common/models/user.js

tx,这对我有帮助。

展开,验证link选项为

options.verifyHref = options.verifyHref ||
      options.protocol +
      '://' +
      options.host +
      displayPort +
      options.restApiRoot +
      userModel.http.path +
      userModel.sharedClass.find('confirm', true).http.path +
      '?uid=' +
      options.user.id +
      '&redirect=' +
      options.redirect;

所以,那里的所有选项都可以自定义(特别是上面我缺少的 options.restApiRoot)。 或者,您自己设置 options.verifyHref,只有那个会作为验证发送 link

如果您只想要 href:

var options = {
    text: '{href}'
}