laravel spatie: autentikacija i upravljanje dozvolama
Laravel Spatie je jedan od najmoćnijih paketa u Laravelu za upravljanje korisničkim ulogama i dozvolama.
Spatie-ova Laravel dozvola čini implementaciju RBAC-a (kontrola pristupa zasnovana na ulogama) lakšom nego ikad.
U ovom članku ćemo vidjeti kako ispravno instalirati i konfigurirati dodatak Shield za brzo i jednostavno korištenje upravljanja dozvolama.
Predviđeno vrijeme čitanja: 4 minute
Laravel dozvola
Laravel dozvola je moćan paket za definiranje uloga, dodjelu dozvola i upravljanje korisničkim pristupom u vašim Laravel aplikacijama. Dolazi sa sintaksom jednostavnom za korištenje i moćnim funkcijama.
U Filamentu postoji dodatak koji se može koristiti za upravljanje dozvolama sredstava, stranica i vidžeta na panelu Filament pomoću spatie / Laravel-dozvole.
Zahtevi
Za bolje razumijevanje sadržaja ovog članka, preporučujemo da prvo pročitate članak u kojem objašnjavam fundamentalni koncepti filamenta, i instalacija od filamenta. Također vam savjetujem da se dublje udubite u projekat na spremištu GitHub i uvijek objašnjeno učlanak o filamentu.
Filament Shield
Filament Shield kreirao Bezhan Salleh, iskusni full-stack programer. Koristeći Filament Shield možete lako upravljati ulogom i dozvolama koje podržavaju najnoviju Laravel prostornu/dozvolu.
Prva stvar koju treba da uradimo ako želimo da instaliramo Filament Shield za naš projekat je da pokrenemo sledeću naredbu:
composer require bezhansalleh/filament-shield
Sada moramo dodati Trait HasRoles
Nel model User
, dakle use Spatie\Permission\Traits\HasRoles
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements FilamentUser
{
use HasFactory, Notifiable, HasRoles;
Na ovaj način vezujemo upravljanje ulogama i dozvolama za model User
.
Zatim objavljujemo fajl config
i postavili smo našu konfiguraciju koristeći sljedeću naredbu:
php artisan vendor:publish --tag=filament-shield-config
I registrujemo dodatak unutarAdminPanelProvider
za željene filament panele, a mi to radimo koristeći ovu sintaksu unutar datoteke app\Providers\Filament\AdminPanelProvider.php
,
-> plugin ([
\BezhanSalleh\FilamentShield\FilamentShieldPlugin :: make ()
])
Instalacija
Hajde da ga sada instaliramo Štit di filament u našem projektu pokrećemo sljedeću naredbu:
php artisan shield:install
Sada imamo novi meni uloga sa tabelom uloga i zadana uloga je Super Admin,
Kada kreiramo ulogu, vidjet ćemo obrazac za kreiranje uloge koji sadrži sve predloške i resurse koje smo kreirali, zajedno s dozvolama za sve uloge i radnje koje mogu i ne mogu izvršiti.
Unutar fajla config/filament-shield.php
postoje različiti parametri konfiguracije za dozvole i uloge.
Laravel Spatie Shield upravlja dozvolama za resurse Filamenta, i to na dva načina: zadani i prilagođeni. U zadanom načinu rada upravlja zadanim dozvolama za izvore filamenta, a prefiksi su unaprijed definirani unutar datoteke config/filament-shield.php
.
Ako trebate dodati jednu dozvolu (npr. zaključavanje) i imati je na raspolaganju za sve svoje resurse, jednostavno je dodajte u konfiguracijski ključ naveden gore.
U slučaju da vam je potrebna posebna dozvola za samo jedan resurs, onda morate koristiti prilagođeni metod. ako imate ovu potrebu, možete saznati više klikom ovdjei.
Politike su definirane za svaki resurs unutar direktorija app/Policies
.
Da bi uloge Filament Shield ispravno funkcionirale, morate odobriti pristup RoleResource
procedure RolePolicy
, a da biste to učinili trebate omogućiti parametar register_role_policy
, u vašem AuthServiceProvider
:
Možete pronaći ovaj primjer sa kompletnom konfiguracijom u spremištu, možete ga vidjeti kliknite na ovu vezu da pristupite spremištu na GitHubu.