Fasáda Permissions
Všetko ide cez fasádu Permissions (alias Permissions sa zaregistruje automaticky). Jej koreňom je RoundlyConsulting\Permissions\PermissionsManager — singleton, ktorý môžete aj injektovať. Každá metóda, ktorá prijíma názov, akceptuje reťazec alebo BackedEnum:
use RoundlyConsulting\Permissions\Facades\Permissions;
// Catalog
Permissions::role('editor'); // find or create — Role
Permissions::permission('posts.edit'); // find or create — Permission
Permissions::findRole('editor'); // ?Role
Permissions::findPermission('posts.edit'); // ?Permission — the full row
Permissions::roles(); // Collection<Role>, ordered by name
Permissions::permissions(); // the cached catalog: id + name
Permissions::exists('posts.edit'); // bool, from the cache
Permissions::syncFrom(PostPermission::class); // SyncResult
Permissions::syncRolesFrom(RoleName::class); // SyncResult
// Grants for one holder — every verb returns the holder
Permissions::for($user)->assignRole('editor');
Permissions::for($user)->removeRole('editor');
Permissions::for($user)->syncRoles(['editor']);
Permissions::for($user)->givePermissionTo('posts.edit');
Permissions::for($user)->revokePermissionTo('posts.edit');
Permissions::for($user)->syncPermissions([PostPermission::Edit]);
Permissions::for($user)->forgetAllAuthorization();
// Housekeeping and configuration
Permissions::cache()->forget();
Permissions::cache()->flushMemo();
Permissions::pruneOrphans(); // int — rows deleted
Permissions::roleModel(); // class-string<Role>
Permissions::permissionModel(); // class-string<Permission>
// Tests
$fake = Permissions::fake(); // PermissionsFakeMetódy
| Metóda | Vracia | Účel |
|---|---|---|
role($name) | Role | Nájde alebo vytvorí rolu ako váš nastavený model. |
permission($name) | Permission | Nájde alebo vytvorí oprávnenie ako váš nastavený model. |
findRole($name) | ?Role | Vyhľadá rolu podľa názvu; ak neexistuje, vráti null. Živý dopyt. |
findPermission($name) | ?Permission | Vyhľadá oprávnenie podľa názvu — celý riadok vrátane popisu. |
roles() | Collection<Role> | Všetky roly zoradené podľa názvu. Živý dopyt. |
permissions() | Collection<Permission> | Katalóg oprávnení z cache — iba id a name. |
exists($name) | bool | Či je oprávnenie zaregistrované; odpoveď ide z cache. |
syncFrom(Enum::class) | SyncResult | Zaregistruje jedno oprávnenie za každý prípad backed enumu. Aditívne. |
syncRolesFrom(Enum::class) | SyncResult | Zaregistruje jednu rolu za každý prípad backed enumu. Aditívne. |
for($holder) | HolderGrants | Zápisy rolí a oprávnení pre jedného držiteľa. |
cache() | PermissionCache | forget() zahodí katalóg v cache; flushMemo() iba memo aktuálneho procesu. |
pruneOrphans() | int | Zmaže priradenia, ktorých držiteľ už neexistuje; vráti ich počet. |
roleModel() / permissionModel() | class-string | Vaše nastavené triedy modelov. |
fake() | PermissionsFake | Nahradí manažér zaznamenávajúcim fake — iba na fasáde. |
Zápisy pre jedného držiteľa: for()
Permissions::for($holder) vráti handle HolderGrants s rovnakými zapisujúcimi metódami, aké majú traity. Každá metóda vráti držiteľa:
use RoundlyConsulting\Permissions\Facades\Permissions;
Permissions::for($user)->assignRole('editor');
Permissions::for($user)->syncPermissions([PostPermission::Edit]);
$role = Permissions::role('editor');
Permissions::for($role)->givePermissionTo('posts.edit'); // a Role holds permissions
// The trait methods are sugar over the same handle:
$user->assignRole('editor'); // === Permissions::for($user)->assignRole('editor')| Permissions::for($holder)->… | Čo robí | Držiteľ musí |
|---|---|---|
assignRole(...$roles) | Aditívne priradí roly. | používať HasRoles |
removeRole(...$roles) | Odpojí roly. | používať HasRoles |
syncRoles($roles) | Zo zadaných rolí spraví presnú množinu. | používať HasRoles |
givePermissionTo(...$permissions) | Aditívne udelí priame oprávnenia. | používať HasPermissions — Role alebo model s HasRoles |
revokePermissionTo(...$permissions) | Odoberie priame oprávnenia. | používať HasPermissions |
syncPermissions($permissions) | Zo zadaných priamych oprávnení spraví presnú množinu. | používať HasPermissions |
forgetAllAuthorization() | Odpojí všetky roly aj priame oprávnenia. | používať HasRoles |
Rozsah je zároveň hranica. Zápis rolí odmietne model bez HasRoles — vrátane modelu Role, ktorý drží oprávnenia, nikdy nie roly. Zápis oprávnení odmietne model bez HasPermissions a oba odmietnu držiteľa, ktorý ešte nemá kľúč. Každé odmietnutie je PermissionException vyhodená skôr, než sa čokoľvek zapíše; neznáme názvy vyhodia RoleDoesNotExist alebo PermissionDoesNotExist.
Kde nájdete podrobnosti
- role(), permission(), findRole(), findPermission(), roles() — Roly a oprávnenia.
- syncFrom(), syncRolesFrom() — Backed enumy.
- for()->… pre roly — Priraďovanie rolí; pre oprávnenia — Udeľovanie oprávnení.
- permissions(), exists(), cache() — Kešovanie.
- pruneOrphans() — Mazanie držiteľov.
- fake() — Testovanie.
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.