Open source
Permissions for Laravel
composer require roundly-consulting/permissions-for-laravelPrehľad
Natívne roly a oprávnenia pre Laravel. Priraďte akémukoľvek Eloquent modelu roly aj priame oprávnenia, vypočítajte efektívne oprávnenia (priame ∪ z rolí) a nechajte Gate, middleware can: a $user->can() v Laraveli autorizovať priamo podľa nich — bez toho, aby kedykoľvek prebili policies vašich modelov. Jeden guard, cache s automatickou invalidáciou a predvolene aditívne udeľovanie, takže nezávislé moduly si môžu bezpečne registrovať vlastné oprávnenia. Katalóg aj všetky priradenia obslúži jedna fasáda Permissions a Permissions::fake() vo vašich testoch zaznamená každý zápis. Licencia MIT, bez akýchkoľvek runtime závislostí tretích strán.
Čo získate
Roly a priame oprávnenia
Priraďte akémukoľvek Eloquent modelu roly aj priame oprávnenia. Efektívne oprávnenia sú priame ∪ z rolí, bez duplicít.
Natívne napojenie na Gate
Middleware can:, $user->can() aj Gate vyhodnocujú oprávnenia hneď po inštalácii — posledné slovo majú vaše policies.
Predvolene aditívne
givePermissionTo() nikdy neodoberie oprávnenia udelené inou časťou aplikácie; presnú množinu nastavíte cez syncPermissions().
Cache, ktorá sa sama invaliduje
Katalóg oprávnení je v cache a vyprázdni sa po potvrdení každej zmeny oprávnení, rolí či priradení — bezpečne aj pre Octane a fronty.
Enumy a ľubovoľný typ kľúča
Všade odovzdávajte reťazce alebo backed enumy a katalóg naplňte cez syncFrom(); držitelia môžu mať kľúče bigint, UUID alebo ULID.
Fasáda, DI alebo akcie
Použite fasádu Permissions, injektujte PermissionsManager alebo zavolajte akciu; Permissions::fake() v testoch zaznamená každý zápis.
Preložiteľné popisy
Popisy rolí a oprávnení v jednotlivých jazykoch s premysleným fallbackom, ktorý neprezrádza obsah iných jazykov.
Bezpečné upratovanie
forgetAllAuthorization() a pruneOrphans() zabránia, aby nový záznam zdedil oprávnenia zmazaného držiteľa.
Dokumentácia
Inštalácia
Inštalácia cez Composer, najprv publikovanie konfigurácie, potom publikovanie a spustenie migrácií.
Konfigurácia
Každý konfiguračný kľúč a jeho predvolená hodnota — modely, tabuľky, typ kľúča držiteľov, Gate hook, fallback popisov a cache.
Databázová schéma a typy kľúčov
Päť tabuliek, ich pevné stĺpce a ako key_type určuje typ model_id pre držiteľov s kľúčmi bigint, UUID alebo ULID.
Trait HasRoles
Pridajte HasRoles do ľubovoľného autentifikovateľného modelu a získa roly, priame oprávnenia a výpočet efektívnych oprávnení.
Fasáda Permissions
Všetky vstupné body na jednej fasáde: katalóg rolí a oprávnení, synchronizácia z enumov, priradenia držiteľov, cache, prečistenie a fake.
DI a akcie
Namiesto fasády injektujte PermissionsManager alebo volajte jednoúčelové akcie priamo — s mapou metód fasády na akcie.
Roly a oprávnenia
Vytvárajte roly a oprávnenia idempotentne cez fasádu, vyhľadávajte ich, bezpečne ich seedujte pri každom nasadení a čítajte ich relácie.
Udeľovanie oprávnení
Udeľujte, odoberajte a synchronizujte oprávnenia na rolách aj priamo na modeli — predvolene aditívne, na požiadanie autoritatívne.
Priraďovanie rolí
Priraďujte, odoberajte a synchronizujte roly na ľubovoľnom držiteľovi; oprávnenia roly prejdú na každý model, ktorý ju drží.
Overovanie prístupu
Overujte roly a efektívne oprávnenia, vypisujte názvy a priradenia, načítajte ich hromadne a filtrujte držiteľov podľa roly.
Backed enumy
Odovzdávajte vlastné backed enumy všade, kde sa očakáva názov roly či oprávnenia — uloží sa hodnota enumu.
Gate a middleware
Autorizujte cez middleware can:, $user->can() a Gate — bez toho, aby oprávnenia kedykoľvek prebili vaše policies.
Preložiteľné popisy
Popisy rolí a oprávnení v jednotlivých jazykoch cez translatable-for-laravel, s premysleným a konfigurovateľným fallbackom.
Kešovanie
Katalóg oprávnení v cache, jeho invalidácia po potvrdení transakcie, úskalia hromadných zápisov a správanie v Octane a queue workeroch.
Mazanie držiteľov
Zabráňte, aby nový záznam zdedil oprávnenia zmazaného držiteľa — odpojte ich pri mazaní alebo prečistite osirotené riadky.
Vlastné modely a tabuľky
Nahraďte modely Role a Permission vlastnými podtriedami, premenujte tabuľky a zistite nastavenie priamo v kóde.
Artisan príkazy
Vyprázdnite cache oprávnení, prečistite osirotené priradenia a skontrolujte nastavenie balíka cez php artisan about.
Výnimky
Jedna rodina výnimiek — PermissionException, RoleDoesNotExist a PermissionDoesNotExist — s preložiteľnými správami.
Testovanie
Zaznamenajte každý zápis rolí a oprávnení cez Permissions::fake() a 26 asercií, potom testujte celý tok s factories a HTTP.
Požiadavky
PHP 8.4+, Laravel 12 alebo 13 a tri balíky Roundly, ktoré Composer nainštaluje za vás.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.