正确使用onEnrollmentLink()函数?

时间:2015-07-31 17:24:39

标签: javascript meteor

我想在用户点击注册链接时捕获,做一些事情,然后让正常的注册流程继续。但是当我使用onEnrollmentLink()函数时,它会拖延用户的旅程。

我试过了:

Accounts.onEnrollmentLink(function(token, done){
    Session.set('mySessionVar', 'something');
    done();
});

我已尝试返回完成回调return done();return done;但这也行不通。

文档声明:

  

已完成:注册用户界面流程完成时要调用的函数。正常登录过程将暂停,直到调用此函数为止,即使用户B已登录,也可以注册用户A.

可悲的是,文档中没有任何示例,文字也不清楚。有谁知道实现这个功能的正确方法?

1 个答案:

答案 0 :(得分:0)

对于任何到达这里的人,因为他们对文档有点困惑。

Accounts.onEnrollmentLink(...)

旨在使用flowRouter,因为它是官方的Meteor路由器,(不是唯一的,但是官方的)。

为了完全完成注册过程,只需设计您想要的内容即可。 例如,常见的情况是通过邀请然后用户访问完成入职,用户将在其中输入所需的密码:

  1. 创建用户:

    const user = { username, email, password };
    

    并将其设置为

    let userId = Accounts.createUser({ username, email, password });
    

    接着是

    Accounts.sendEnrollmentEmail(userId);
    
  2. 用户点击该链接并导航到您的网站,在前端您可以使用表单来询问密码。 如果您没有使用Flow路由器,而是使用另一个前端,例如Angular,React或VueJS ,则不会再问Accounts.onEnrollmentLink(...)。你会做下一步。

  3. 按令牌查找用户,该用户应该在网址中设置,可能使用方法代替发布

    function findByEnrollToken(token: string) {
        return Meteor.users.findOne({ "services.password.reset.token": token });
    }
    
  4. 最后,使用前端设置密码的Accounts.resetPassword(token, newPassword, [callback])设置新用户密码。

  5. 就是这样,你可以在同一个提交函数中另外使用Accounts.verifyEmail(token, [callback])Accounts.resetPassword()