Laravel 5.2 ACL

Ich habe mit Laravel 5.2 eine Zugriffskontrollliste (ACL) mit Rollen und Berechtigungen erstellt.

Die Zugriffskontrollliste funktioniert so, der Benutzer (User) erhält eine Rolle (Role), dieser Rolle lassen sich Berechtigungen (Permissions) zuweisen und diese Berechtigungen bestimmen mittels Middleware den Zugang zu den verschiedenen Seiten. 

Der Code ist auf Github zu sehen, daher erkläre ich hier nur auf was man achten muss.

Bei der Registration erhält der Benutzer eine Rolle (role_id = 1), darum sollte schon, bevor sich ein Benutzer registriert oder erstellt wird, eine Rolle mit dieser Id erstellt worden sein. Will man die Rolle bei der Registration ändern einfach auf die Datei: app\Services\Registrar.php gehen und dort dem Benutzer eine andere role_id vergeben.

In der Datei: app\Http\routes.php kann man die Berechtigungen für die verschiedenen Routen bestimmen.

Erklärung zu den Begriffen:

  • middleware = Name der Middleware wird in der Datei: app\Http\Kernel.php definiert, in meinen Beispiel acl für die Middleware CheckPermission.
  • permission = Name der Berechtigung, sollte der Benutzer eine Rolle mit dieser Berechtigung haben, hat er Zugang zur Seite.
  • uses = Name des Controllers mit der entsprechenden Funktion.

Als kleines Beispiel für die Seite About, der Benutzer braucht die Berechtigung view (muss noch erstellt werden) um diese Seite zu sehen, daher muss der Benutzer eine Rolle mit der Berechtigung view haben sonst kann er diese Seite nicht sehen.

Route::get('about', [
    'middleware' => 'acl', 
    'permission' => 'view',
    'uses' => 'PagesController@about',
]);

Kommentar eingeben