1

私はアプリケーションの登録部分に取り組んでいます。サーバー側で新しいユーザーを作成した後、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 でユーザーを選択すると、まだパスワードが設定されておらず、サービス -> パスワード -> 同じトークンでリセットされていることが示されます。私はステップを逃していると確信していますが、何がわかりません。

4

1 に答える 1