我正在寻找一种自定义登录的方法,以允许管理员为用户提供帐户和一次性临时密码(通过电子邮件),使用户能够登录网站(用户无法自行创建帐户)。
用户首次登录时,会指示他们更改管理员提供的临时密码。
我的帐户-ui和帐户密码有效,但用户可以随意创建新帐户。
如果重要,我计划使用Autoform和Iron Router。
我搜索Meteor文档以“注册”,但信息是稀疏的IMO。是否有一个完全有效的例子来帮助我开始?
答案 0 :(得分:2)
要禁用创建帐户的常用方法,请使用Accounts.config:
将拒绝从客户端调用createUser。此外,如果您使用的是account-ui,则“创建帐户”链接不会 可用。
然后,我认为您应该create the account没有密码,然后use Accounts.sendEnrollmentEmail
向用户发送电子邮件以选择一个密码,而不是使用临时密码。
要在服务器上创建没有密码的帐户,仍然允许 用户选择自己的密码,用电子邮件调用createUser 选项然后调用Accounts.sendEnrollmentEmail。这将发送 用户一封电子邮件,其中包含设置初始密码的链接。
所以,就像这样:
Accounts.config({forbidClientAccountCreation: true});
Meteor.methods({
adminCreateAccount: function (accountAttributes) {
if(Meteor.user() && Meteor.user().role == "admin") {
var accountId = Accounts.createUser({
'username': accountAttributes.username,
'email': accountAttributes.emailAddress
});
Accounts.sendEnrollmentEmail(accountId);
}
}
});
答案 1 :(得分:0)
你能做的是
user.profile.changedInitialPwd
),该标记将在用户时设置
改变了他的pwd)E.g。
Accounts.validateLoginAttempt(function(attempt){
if (attempt.user && !attempt.user.profile.changedInitialPwd ) {
console.log('Initial password not changed');
return false; // the login is aborted
}
return true;
});