2016-01-25 6 views
5

Meteorアプリケーションのユーザーを管理したいと思うので、現在の役割を知る必要があります。管理者ユーザーのみがアクセス可能なページ設定があり、そのページはユーザーコレクションに登録されています。ユーザーがMeteorで特定の役割を果たしているかどうかを確認する方法

私は、次のしているこのページの私のテンプレートで

{{#each user}} 
    <p> 
    <a href="/@{{username}}">{{username}}</a> 
    {{#if isInRole 'admin'}} Admin{{/if}} 
    </p> 
{{/each}} 

残念ながら、これは、ユーザの(管理者である)にログインしたロールが{{#if isInRole 'admin'}}ブロックで比較されているものであるという問題を私に残します。これにより、すべてのユーザーが管理者ステータスを取得します(これは該当しません)。

eachブロックから表示されるユーザーが特定の役割を果たしているかどうかを確認するにはどうすればよいですか?

編集注:私は、データベース内のすべてのユーザのリストがありますalanning /流星-役割パッケージ

を使用しています、と私は彼らの管理ステータスを見てみたいです。

答えて

3

今後この問題に遭遇する人には、以下の解決策があります。

はJavaScript:

Template.registerHelper('isUserInRole', function(userId, role) { 
    return Roles.userIsInRole(userId, role); 
}); 

テンプレート:私は、ログインしているユーザーが管理者であるかどうかを確認するつもりはないよ

<p> 
    Roles: {{#if isUserInRole _id 'webmaster'}}Webmaster {{/if}} 
    {{#if isUserInRole _id 'admin'}}Admin {{/if}} 
</p> 
1

あなたはそうのような独自の役割チェック機能を作成することができます。

isAdmin = function(){ 
    var loggedInUser = Meteor.user(); 
    var result = false; 
    if(loggedInUser){ 
    if (Roles.userIsInRole(loggedInUser, ['Admin'])){ 
     result = true; 
    } 
    } 
    return result; 
}; 

したがって、たとえば./lib/roles.jsでこれを保存します。

これを使用するには、alanning:rolesパッケージをインストールする必要があります。

+0

、私は、ユーザーのコレクション内のすべてのユーザーのリストを持っており、私は彼らが管理者であるかどうかを見たいと思う。 –

+0

正確には、isAdmin === trueに基づいてリストを表示するだけです。 –

+0

テンプレートヘルパーにこの機能を追加する方法はありますか?私はそれを実装しようとしたので、それは動作していません。 –

関連する問題