Nutzerrechte und ACL
Hermeneus hat eine Art Access Control List, in der festgelegt ist, welche Nutzerrollen welche Berechtigungen haben.
Ermittlung der Nutzerrechte
Die Nutzerrechte werden automatisch anhand der zugewiesenen Rolle admin , editor, teacher , tester oder user ermittelt, können aber auch jeweils dynamisch durch irgendwelche Bedingungen festgelegt werden. Das Attribute rights gibt dann ein Array zurück, das beschreibt, welche Zugriffsrechte gewährt sind:
$rights = [
'deleteLerninhalt' => false,
'createLerninhalt' => false,
'importLerneinheitenVocab' => false,
'verifyVocab' => false,
'unverifyVocab' => false,
...
]Abruf der Nutzerrechte im Backend
Die Verwaltung von Nutzerrechten ist in dem Trait App\Traits\Services\hasRights.php festgelegt. Durch den Trait bekommt das User-Objekt das Attribut rights:
$user = auth()->user() // Momentan authentifizierte Nutzer
$user->rights // Gibt obiges Rechte-Array zurückDEPRECATED: Abruf der Nutzerrechte im Frontend
Durch den ViewComposerServiceProvider.php ist in jedem einzelnen Laravel-Blade-View das aktuell authentifizierte Nutzerobjekt (oder false) und die entsprechenden Nutzerrechte verfügbar.
Ist kein Nutzer authentifiziert, wird für $rights im ViewComposerServiceProvider.php ein Array von Gäste-Rechten zurückgegeben.
Beide Variablen sind in allen Laravel-Views aufrufbar:
@section('content')
<!-- Dump des Nutzerobjekts und der Nutzerrechte -->
<div>
{{ dd ($user) }}
{{ dd ($rights) }}
</div>
@endsectionDiese Werte können dann z.B. als data-attribute an Frameworks übergeben werden oder auch in der scripts-section an JavaScript übergeben werden.
Abruf der Nutzerrechte in einer Vue-Komponente
Die Nutzerrechte sind über das (hoffentlich) reaktive Data-Property UserData() einer jeden Vue-Instance erreichbar:
<div v-if="this.$root.UserData().rights['accessAdvancedFeatures'] === true" class='nuke-launcher'>
<button>Atomrakete starten</button>
</div>