在 Meteor accounts-password 中重置密码后禁用登录

Disable login after resetting password in Meteor accounts-password

如何在Meteor accounts-password包中重设密码后禁止登录?

将重置 link 发送到客人的电子邮件后,我有这个代码来重置密码,

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;
});

您可以使用AccountsServer#validateLoginAttempt(func)方法来测试传递给回调的对象的user是否是guest,如果是,return一个假值。

这是在服务器端完成的。

answer 提供了一个基于用户是否拥有经过验证的电子邮件的实施示例。