2017-11-18 6 views
0

Ich habe in meinem Projekt feathers-authentication-hooks implementiert und es funktioniert Überprüfung gegen eine benutzerdefinierte Benutzerspalte, die eine Rolle enthält. Jetzt möchte ich es mit mehr als einer Rolle pro Benutzer arbeiten lassen. Ich habe versucht, mehrere Formate in der Datenbankspalte, aber alle sind gescheitert:feathers-authentication-hooks: restrictToRoles für einen Benutzer mit mehr als einer Rolle

Datenformate (genaues Format pro Zeile): role1, role2 role1; role2 [role1,role2] {"column_name": ["role1","role2"]}

weiß jemand, was ich tun muß?

Antwort

0

Die meisten Hooks in diesem Paket können manuell implementiert werden, oft mit der gleichen Menge Code und weniger Zeit als zum Lesen der Dokumentation. In diesem Fall für Ihr Beispiel mit einem benutzerdefinierten Haken wie folgt:

const { Unauthorized } = require('feathers-errors'); 

return function() { 
    return function(context) { 
    if(context.params.user.roles.indexOf('admin') === -1) { 
     throw new Unauthorized('You are not allowed to access this'); 
    } 
    } 
} 
+0

Hallo Daff. Das funktioniert, aber ich muss es genau abstimmen, denn es prüft keinen vollständigen Rollennamen, wenn die Liste zum Beispiel durch Komma getrennt wäre. Der Index von wird auch zurückgegeben, wenn eine andere Rolle diesen Text enthält. Ich habe festgestellt, dass die Federn-Authention-Hooks auch auf Rollen beschränkt sind (das gleiche Code-Snippit). Ich denke, es wird wie 'context.params.user.roles.split (','). IndexOf ('admin')' wird besser – Edgar

+0

Sicher, mein Punkt war, dass es viel einfacher ist, sich an das anzupassen, was Sie brauchen, anstatt Durchforschen von Dokumenten und Code von jemand anderem. – Daff

Verwandte Themen