4

私のアプリケーションでは、データベースにユーザーをシードし、登録リンクを送信してアカウントをアクティブ化 (およびパスワードを選択) したいと考えています。また、一部のプロファイル データを確認/変更してもらいたいと考えています。

サーバーでは、次のようにデータベースをシードします。

Meteor.startup(function () {
  if(Meteor.users.find().count() === 0) {
    var user_id = Accounts.createUser({ email: 'some@email.com', profile: { some: 'profile' } });
    Accounts.sendEnrollmentEmail(user_id);
  }
})

登録リンクは期待どおりに送信されますが、メールの URL がクリックされたときのカスタム テンプレートを作成したいと考えています。アイアンルーターで処理することをお勧めします。(accounts-ui パッケージは使用しません)。

ユーザーを次のようなカスタムルートにリダイレクトするなどのことを試しました:

var doneCallback, token;

Accounts.onEnrollmentLink(function (token, done) {
  doneCallback = done;
  token = token;
  Router.go('MemberEnroll')
});

これは機能していません(URLは変更されますが、テンプレートはレンダリングされません)

また、サーバーの登録 URL を次のように変更しようとしました。

Accounts.urls.enrollAccount = function (token) {
  return Meteor.absoluteUrl('members/enroll/' + token);
};

しかし、これを行うと、Accounts.onEnrollmentLinkコールバックは発生しません。また、URL の変更については文書化されていないため、適切な方法であるかどうかはわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

0

残念ながら、今は不可能です。私がしたことは、「レンダリング」機能を使用してhtmlとcssを変更することですが、遅延を伴ういくつかの問題があります

Meteor.startup(function(){
    Template["_enrollAccountDialog"].rendered = function(){
        document.getElementById('enroll-account-password-label').innerHTML = 'Escolha sua senha';
        $('.accounts-dialog').css('background-color','#f4f5f5');
        $('.accounts-dialog').css('text-align','center');
        $('.accounts-dialog').removeAttr('width');
        document.getElementById('login-buttons-enroll-account-button').className = ' create-account-button'; 
        document.getElementById('login-buttons-enroll-account-button').innerHTML = 'Criar conta';
    }
});
于 2015-02-23T16:22:06.560 に答える