NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Permissions for Laravel

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();                       // PermissionsFake

Metódy

MetódaVraciaÚčel
role($name)RoleNájde alebo vytvorí rolu ako váš nastavený model.
permission($name)PermissionNájde alebo vytvorí oprávnenie ako váš nastavený model.
findRole($name)?RoleVyhľadá rolu podľa názvu; ak neexistuje, vráti null. Živý dopyt.
findPermission($name)?PermissionVyhľ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)SyncResultZaregistruje jedno oprávnenie za každý prípad backed enumu. Aditívne.
syncRolesFrom(Enum::class)SyncResultZaregistruje jednu rolu za každý prípad backed enumu. Aditívne.
for($holder)HolderGrantsZápisy rolí a oprávnení pre jedného držiteľa.
cache()PermissionCacheforget() zahodí katalóg v cache; flushMemo() iba memo aktuálneho procesu.
pruneOrphans()intZmaže priradenia, ktorých držiteľ už neexistuje; vráti ich počet.
roleModel() / permissionModel()class-stringVaše nastavené triedy modelov.
fake()PermissionsFakeNahradí 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 kryptomien

Odoslaní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.