Priraďovanie rolí
Roly priraďujte cez Permissions::for($holder). assignRole je aditívne a variadické, removeRole rolu odpojí a syncRoles z danej množiny spraví presnú množinu rolí:
use RoundlyConsulting\Permissions\Facades\Permissions;
Permissions::for($user)->assignRole('administrator');
Permissions::for($user)->assignRole('editor', 'reviewer'); // variadic, additive
Permissions::for($user)->assignRole(['editor', $role]); // arrays, Role models, backed enums
Permissions::for($user)->removeRole('administrator');
Permissions::for($user)->syncRoles(['editor']); // exact role set
Permissions::for($user)->forgetAllAuthorization(); // every role and direct grantPrijíma názvy, backed enumy, modely Role, polia aj vnorené iterovateľné štruktúry. Neznámy názov roly vyhodí RoleDoesNotExist; neuložený model Role vyhodí PermissionException. syncRoles beží v transakcii, takže súbežná kontrola nikdy neuvidí prázdnu množinu rolí uprostred synchronizácie.
Zápis rolí vyžaduje držiteľa s HasRoles — Permissions::for($role)->assignRole() vyhodí PermissionException, pretože Role drží oprávnenia, nikdy nie roly. Na modeli sú metódy z HasRoles len skratkou pre tie isté volania:
$user->assignRole('administrator');
$user->removeRole('administrator');
$user->syncRoles(['editor']);
$user->forgetAllAuthorization();Dedenie oprávnení cez roly
Oprávnenia udeľte role raz a zdedí ich každý držiteľ. Zmeníte rolu a zmena sa prejaví u všetkých držiteľov — bez zápisu pre každého používateľa:
use RoundlyConsulting\Permissions\Facades\Permissions;
Permissions::permission('articles.publish');
Permissions::for(Permissions::role('editor'))->givePermissionTo('articles.publish');
Permissions::for($user)->assignRole('editor');
$user->hasPermissionTo('articles.publish'); // true — inherited via the roleOdobratie všetkého
Permissions::for($holder)->forgetAllAuthorization() odpojí všetky roly aj všetky priame oprávnenia v jednej transakcii. Použite ho pri mazaní držiteľa — pozri Mazanie držiteľov.
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.