問題

私は流星パッケージ ian:accounts-ui-bootstrap-3 アカウントと alanning:ロールを割り当てるためのロールを使用しています。

サインアップフォームには、Doctor用とAdvisor用の2つのオプションがあります。選択したオプションをそのユーザーの役割として割り当てたいと思います。誰かが私にこれを行う方法を教えてもらえますか?

私は流星を学び始めたばかりで、その流れについてあまり知らない。私はこのように手動でユーザーを作成する場合、ユーザーに役割を割り当てることができます:

 var adminUser = Meteor.users.findOne({roles:{$in:["admin"]}});

if(!adminUser){

    adminUser = Accounts.createUser({
      email: "[email protected]",
      password: "admin",
      profile: { name: "admin" }
    });
    Roles.addUsersToRoles(adminUser, [ROLES.Admin]);
 }
 

しかし、ユーザーがサインアップしてオプションの1つを選択すると、ロールを自動的に割り当て、そのオプションを自分の役割として割り当てる必要があります。

  ベストアンサー

これにはハックは必要ありません。 Accounts.onCreateUserを使用する代わりに、Meteor.usersコレクションの次のフックでそれを行うことができます。次の行に沿った何かがうまくいくはずです:

 Meteor.users.after.insert(function (userId, doc) {
    if (doc.profile.type === "doctor") {
        Roles.addUsersToRoles(doc._id, [ROLES.Doctor])
    } else if (doc.profile.type === "advisor") {
        Roles.addUsersToRoles(doc._id, [ROLES.Advisor])
    }
});
 

  同じタグがついた質問を見る

meteormeteor-accounts