2014-12-15 6 views
3

Я ищу способ настроить логины, чтобы администратор мог предоставить пользователю учетную запись и одноразовый временный пароль (по электронной почте), который позволяет пользователю входить в систему сайта (пользователь не может самостоятельно создать учетную запись).Регистрация регистрации в Meteor

При первом входе в систему им предоставляется указание изменить временный пароль, указанный администратором.

У меня есть учетные записи - учетные записи и учетные записи - пароль, но пользователь может создать новую учетную запись по своему усмотрению.

Если это имеет значение, я планирую использовать Autoform и Iron Router для этого.

Я ищу документы Метеор для «регистрации», но информация разрежена ИМО. Есть ли где-то полностью рабочий пример, чтобы помочь мне начать?

ответ

2

Чтобы отключить обычный способ создания учетной записи, используйте Accounts.config:

forbidClientAccountCreation булевы

вызовов на CreateUser от клиента будет отклонена. Кроме того, если вы используете учетные записи 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); 
    } 
    } 
}); 
+0

Отличный ответ, это работает и именно то, что мне нужно! Прости, мне потребовалось некоторое время, чтобы вернуться к этому. – Aaron

0

Что вы можете сделать, это

  • позволяют администратору создать пользователя (Accounts.createUser)
  • добавить маркер (например 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; 
}); 
Смежные вопросы