如何在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;
});
答案 0 :(得分:0)
您可以使用AccountsServer#validateLoginAttempt(func)
方法来测试传递给回调的对象的user
是否为访客,如果是,则返回虚假值。
这是在服务器端完成的。
此answer根据用户是否拥有经过验证的电子邮件提供了示例实现。