2016-01-25 6 views
5

Ich möchte die Benutzer meiner Meteor App verwalten und um das zu tun, muss ich ihre aktuellen Rollen kennen. Ich habe eine Seiteneinrichtung, die nur für Admin-Benutzer zugänglich ist und diese Seite ist für die Benutzersammlung abonniert.Wie überprüfe ich, ob ein Benutzer eine bestimmte Rolle in Meteor hat?

In meiner Vorlage für diese Seite habe ich die folgenden:

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

das lässt mich leider ein Problem, wo die des angemeldeten Benutzers Rolle (die ein Admin ist) ist das, was im {{#if isInRole 'admin'}} Block verglichen wird. Dies führt dazu, dass alle Benutzer den Administratorstatus haben (was nicht der Fall ist).

Wie überprüfe ich, ob ein Benutzer, der aus dem Block each angezeigt wird, in einer bestimmten Rolle ist?

bearbeitet Hinweis: Ich bin mit dem alanning/Meteor-Rollen-Paket

Es gibt eine Liste aller Benutzer in der Datenbank, und ich mag ihren Admin-Status sehen.

Antwort

3

Ich habe die folgende Lösung für alle, die in diesem Problem in Zukunft auftritt.

JavaScript:

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

Vorlage:

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

Sie können Ihre eigene Rolle Prüffunktionen wie so erstellen:

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

So dies zum Beispiel in ./lib/roles.js speichern.

Sie müssen das Paket alanning:roles installieren, um dies zu verwenden.

+0

Ich versuche nicht, zu überprüfen, ob der angemeldete Benutzer ein Administrator ist, ich habe eine Liste aller Benutzer in der Benutzer Sammlung und Ich möchte sehen, ob sie Admins sind oder nicht. –

+0

Genau, rendern Sie Ihre Liste basierend auf isAdmin === true. –

+0

Gibt es eine Möglichkeit, diese Funktion in meine Vorlagenhelfer zu integrieren? Weil ich versucht habe es zu implementieren und es funktioniert nicht. –

Verwandte Themen