2016-01-25 8 views
5

Voglio gestire gli utenti della mia app Meteor e per farlo ho bisogno di conoscere i loro ruoli attuali. Ho una configurazione di pagina che è accessibile solo agli utenti amministratori e che la pagina è iscritta alla collezione degli utenti.Come verificare se un utente ha un ruolo specifico in Meteor

Nel mio modello per questa pagina Ho il seguente:

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

Purtroppo questo mi lascia con un problema in cui il loggato dell'utente (che è un amministratore) ruolo è quello che viene confrontato nel blocco {{#if isInRole 'admin'}}. Ciò si traduce in tutti gli utenti con stato di amministratore (che non è il caso).

Come si verifica se un utente che viene visualizzato dal blocco each si trova in un ruolo specifico?

Modifica nota: Sto usando il pacchetto alanning/meteora-ruoli

C'è un elenco di tutti gli utenti del database, e voglio vedere il loro status di amministrazione.

risposta

3

Ho la seguente soluzione per chiunque incontri questo problema in futuro.

JavaScript:

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

Template:

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

È possibile creare il proprio ruolo di controllo funzioni in questo modo:

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

Quindi salvare questo ./lib/roles.js per esempio.

Per utilizzare questo pacchetto è necessario installare il pacchetto alanning:roles.

+0

Non sto cercando di verificare se l'utente connesso è un amministratore, ho una lista di tutti gli utenti della collezione utenti e Voglio vedere se sono amministratori o no. –

+0

Precisamente, quindi basta rendere il tuo elenco basato su isAdmin === true. –

+0

C'è un modo per inserire questa funzione nei miei aiutanti di template? Perché ho provato a implementarlo e non funziona. –

Problemi correlati