ajtarragona / acl
ACL Package for access control
Installs: 1 567
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Requires
- php: >=7.0.0
- adldap2/adldap2-laravel: ^6.0
- genealabs/laravel-model-caching: ^0.7.0
- kyslik/column-sortable: ^6.0
- laravel/framework: ^6.0
- laravel/passport: ^9.3.2
- santigarcor/laratrust: ^6.0
README
Aquest paquet incorpora una capa de Control d'Accés (Acces Control List) que permet definir, usuaris, rols, permisos i grups. Utilitza internament el paquet Laratrust.
També s'inropora un backend d'administració d'aquesta capa ACL. Aquest backend depèn del paquet ajtarragona/web-components per funcionar correctament.
Instal·lació
composer require ajtarragona/acl
Si volem fer servir el backend a més hem de requerir el paquet web-components.
composer require ajtarragona/web-components
Configuració Inicial
A l'arxiu config/auth.php
definim la classe del package al user provider:
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => Ajtarragona\ACL\Models\User::class, ], ]
Si fem servir LDAP, també canviar el model a l'arxiu config/ldap_auth.php
'model' => Ajtarragona\ACL\Models\User::class,
Si no trobem l'arxiu, cal publicar-lo amb la comanda:
php artisan vendor:publish --provider=Adldap\Laravel\AdldapAuthServiceProvider
Publiquem la configuració de Laratrust.
php artisan vendor:publish --tag="laratrust"
A l'arxiu config/laratrust.php
(si volem fer servir grups):
- posem l'atribut
teams.enabled
atrue
:
... 'teams' => [ 'enabled' => true, ] ...
- Definim els models:
'user_models' => [ 'users' => 'Ajtarragona\ACL\Models\User', ], ... 'models' => [ /** * Role model */ 'role' => 'Ajtarragona\ACL\Models\Role', /** * Permission model */ 'permission' => 'Ajtarragona\ACL\Models\Permission', /** * Team model */ 'team' => 'Ajtarragona\ACL\Models\Team', ],
- Finalment, executem la següent comanda:
php artisan ajtarragona:acl-setup
Això prepararà les taules de la base de dades, si no existeixen, executarà la migració i crearà els permisos, rols i usuaris per defecte.
Es poden modificar els rols, permisos i usuaris per defecte a l'arxiu
config/acl_seed.php
, publicant prèviament la configuració del paquet:
php artisan vendor:publish --tag=ajtarragona-acl
Se'ns crearà un usuari acl
amb password acl
amb els rols i permissos necessaris.
Backend
Podem accedir al backend d'administració a través de la ruta ajtarragona/acl
.
Caldrà que introduim un usuari vàlid que tingui el permís de gestió d'autoritzacions.
Es pot deshabilitar el backend configurant la variable ACL_BACKEND
a l'arxiu .env
.
Ús
Mirar la documentació de Laratrust per a més informació.
A grans trets per comprovar si un usuari té un determinat rol o permís, ho podem fer a través d'un middleware a les rutes:
Route::group(['middleware' => ['role:admin']], function() { ... });
Route::group(['middleware' => ['permission:edit-post']], function() { ... });
O bé amb directives blade a les vistes:
@role('admin') <p>This is visible to users with the admin role. Gets translated to \Laratrust::hasRole('admin')</p> @endrole
@permission('manage-admins') <p>This is visible to users with the given permissions. Gets translated to \Laratrust::can('manage-admins'). The @can directive is already taken by core laravel authorization package, hence the @permission directive instead.</p> @endpermission