在Meteor帐户密码中重置密码后禁用登录

时间:2017-07-26 07:38:55

标签: node.js reactjs meteor react-router meteor-accounts

如何在Meteor帐户密码包中重置密码后禁用登录?

在向客人的电子邮件发送重置链接后,我有此代码重置密码

Accounts.resetPassword(this.props.params.token, this.refs.password.value.trim(),(err) => {
            if(err){
                Bert.alert( err, 'danger', 'growl-top-right');
            } else {
                Bert.alert( "Password is successfully changed.", 'success', 'growl-top-right');
            }
            this.setState({resetPassword:false});
            this.refs.password.value = "";
        });

几秒钟后,它会自动将用户登录到仪表板页面。这里的问题是,我有不同类型的用户,访客(无法登录),管理员(有权管理用户)和员工(应用程序的已验证用户)。 如果访客重置密码,他们会自动登录,这是错误的。

如何禁用自动登录?

顺便说一句,我正在使用Meteor + React JS和React-router。

这是我的验证登录尝试代码,

Accounts.validateLoginAttempt((data)=>{
    if(data.error)
        return data.error;
    if(!data.user.emails[0].verified)
        throw new Meteor.Error(403, 'Verify email account first');
    if((data.user.profile && data.user.profile.retired) || (data.user.roles.company.includes("guest")))
        throw new Meteor.Error(403, 'Account must be accepted by an admin');
    else
        return true;
});

1 个答案:

答案 0 :(得分:0)

您可以使用AccountsServer#validateLoginAttempt(func)方法来测试传递给回调的对象的user是否为访客,如果是,则返回虚假值。

这是在服务器端完成的。

answer根据用户是否拥有经过验证的电子邮件提供了示例实现。