私はアプリケーションの登録部分に取り組んでいます。サーバー側で新しいユーザーを作成した後、Accounts.sendEnrollmentEmail()
. 次のようなリンクが記載されたメールを受け取ります。
http://localhost:3000/enroll-account/XqMb6mqZQ3cGfyOgQgtWvLPqzVJ-qJeBYJ_I46mNE9c
Iron Router でルートを作成して処理し、次のように「Choose Password」フォームを表示します。
ルート:
...
this.route('enrollAccount', {
path: '/enroll-account/:token',
data: function() { return this.params.token; }
});
...
登録テンプレート:
<template name="enrollAccount">
<div class="panel panel-default">
<div class="panel-body">
<p>Please enter a password and click 'Enroll Account'</p>
<div class="form-control">
<label for="password">Enter Password</label>
<input type="password" id="password" name="password" />
</div>
<div class="form-control">
<label for="reenterPassword">Re-enter Password</label>
<input type="password" id="reenterPassword" name="reenterPassword" />
</div>
<button class="btn btn-primary" id="btnEnroll">Enroll Account</button>
</div>
</div>
</template>
そしてJS:
Template.enrollAccount.events({
'click #btnEnroll': function(event, tmpl) {
event.preventDefault();
console.log('Enrolling with token ', this);
Accounts.resetPassword(this, tmpl.$('#password').val(), function(err) {
if (err) {
// TODO Toss some error
console.log('Error: ', err);
} else {
console.log('Enrollment successful, going home...');
Router.go('home');
}
});
}
});
登録 URL を入力すると、フォームが正常に表示されます。フォームに入力し、ボタンをクリックすると、送信中であることを示す console.log が表示されます。また、トークンが DB にあるものと一致することも確認しました。ただし、 への呼び出しAccounts.resetPassword()
はコールバック関数を実行しません。ブラウザ コンソールにエラーも else ログもありません。MongoDB でユーザーを選択すると、まだパスワードが設定されておらず、サービス -> パスワード -> 同じトークンでリセットされていることが示されます。私はステップを逃していると確信していますが、何がわかりません。