3

ログインをカスタマイズして、管理者がユーザーにアカウントと 1 回限りの一時パスワードを (電子メール経由で) 提供できるようにする方法を探しています。これにより、ユーザーはサイトにログインできるようになります (ユーザーは「自分でアカウントを作成しないでください)。

ユーザーが初めてログインすると、管理者から提供された一時パスワードを変更するように指示されます。

accounts-ui と accounts-password が機能していますが、ユーザーは自由に新しいアカウントを作成できます。

問題があれば、Autoform と Iron Router を使用する予定です。

Meteor ドキュメントで「登録」を検索しましたが、情報はまばらです。私が始めるのに役立つ完全に機能する例はどこかにありますか?

4

2 に答える 2

2

アカウントを作成する通常の方法を無効にするには、Accounts.config を使用します。

forbidClientAccountCreationブール値

クライアントからの createUser の呼び出しは拒否されます。また、accounts-ui を使用している場合、「アカウントの作成」リンクは使用できません。

次に、一時的なパスワードを使用する代わりに、パスワードなしでアカウントを作成し、使用Accounts.sendEnrollmentEmailしてユーザーにメールを送信してパスワードを選択する必要があると思います。

サーバー上にパスワードなしでアカウントを作成し、ユーザーが独自のパスワードを選択できるようにするには、createUser を email オプションで呼び出してから、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);
    }
  }
});
于 2014-12-15T18:25:35.757 に答える
0

あなたができることは

  • 管理者にユーザーを作成させます (Accounts.createUser)
  • user.profile.changedInitialPwdユーザーが pwd を変更したときに設定されるマーカー (例) を追加します)
  • いくつかの検証ロジックを使用して、ユーザーがサインインを許可される前にパスワードを変更したことを確認します

例えば

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;
});
于 2014-12-15T18:51:25.240 に答える