2016-09-26 9 views
0

私たちは流星[email protected]を使用していて、役割を管理するためにalanning:rolesを追加しました。適用ロールに使用するコードの下の meteor-rolesが期待どおりに動作しないfalseを返す

Accounts.onCreateUser(function(options, user) { 
    console.log("on account create"); 
    Roles.addUsersToRoles(user._id,'admin') 
    console.log(Roles.userIsInRole(Meteor.userId(),'admin')); 
    return user; 
}); 

Roles.userIsInRole(Meteor.userId(),'admin') return false 

私たちに間違ったことを教えてください。

+0

ちょうどタイミングの問題かもしれません。addUsersToRolesを呼び出すと、データベースへの更新が行われることに注意してください。これは即時ではありません。データベースを手動でチェックすると、ロールを追加する作業が完了していますか? – Mikkel

+0

@Mike King - 私はコンソールからRoles.userIsInRole(Meteor.userId()、 'admin')のステータスをチェックしようとしていましたが、falseを返すと同時に、ロールが購読していてすべての利用可能なロールを返すことを確認しました – jayesh

答えて

1

alanning-rolesの場合、Accounts.onCreateUserにその値を含める必要はありません。

新しい文書を挿入した後でRoles.addUserToRoles()を使用するだけで済みます。 Roles.addUsersToRolesがAccounts.createUserまたはAccounts.onCreate後に来てニーズを呼び出すか、他のロールパッケージはならないこと

注:彼らのREADME.mdに基づいて

const id = Accounts.createUser({ email: user.email, password: "apple1", profile: { name: user.name } }); Roles.addUsersToRoles(id,'whateverRole')

:そうのように(まだ作成されていないので)ユーザーレコードを見つけることができます。

+0

[email protected] – jayesh

+0

でテストしました。はい、うまく動作します。 – ickyrr

+0

あなたの発見に感謝します。私は問題流星口座を見つけました。ログインとパッケージアカウント - パスワードでの作業を開始しましたが、役割のためには、アカウントベースパッケージが必要です。 – jayesh

関連する問題