Ich arbeite an einer Systemsteuerung-App, wo ich mehrere Benutzerrollen wie globadmin, Editoren usw. habe. Jetzt möchte ich diese Rollen mit einer einzigen UserController-Ressource verwenden.
Zum Beispiel sollte globaladmins alle Restful-Methoden ausführen können, während ein Editor nur einen Benutzer anzeigen und aktualisieren kann.
Ich weiß, dass das Vertrauen mit Middleware aus der Box kommt, was perfekt ist für das, was ich brauche. Aber es funktioniert nur auf den Routen (in diesem Fall würde ich für jede Rolle einen separaten Controller benötigen) .
Mein UserController sieht ungefähr so aus.
%Vor%Ich brauche eine Middleware im Konstruktor, die nach einer Benutzerrolle sucht und dann die Methode nur dann zulässt, wenn die Rolle die Berechtigung hat, sie zu verwenden. Aber das sollte auf anständige Weise ohne irgendwelche Hacks getan werden, weil ich es auch auf anderen Controllern verwenden werde.
Ich nehme an, dass Sie Folgendes in Ihrer routes-Datei verwenden:
%Vor%In diesem Fall würde ich vorschlagen, dass Sie eines der von Entrust als Basis bereitgestellten Middlewares verwenden und die aufgerufene Methode, z. wenn Sie EntrustRole verwenden:
%Vor% Natürlich ist dies nur ein Hinweis und Sie sollten einen besseren Weg finden, die aufgerufene Methode zu extrahieren und trotzdem retrieveRequiredRolesForMethod
Ah .. Ich denke, das wird in Ihrem Fall funktionieren.
%Vor%Hier sind user_index, user_create, user_edit usw. die Berechtigungen (Einträge im Feld Name der Berechtigungstabelle) für das Benutzermodul.
Dies überprüft automatisch die angemeldete Benutzerfähigkeit und zeigt die Seite entsprechend an.
Tags und Links php laravel-5 acl user-roles