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

Overovanie prístupu

Čítanie patrí modelu, nie fasáde — využije relácie, ktoré ste prípadne načítali vopred. Fasáda odpovedá iba na otázky o katalógu, napríklad Permissions::exists():

$user->hasRole('administrator');                 // bool
$user->hasRole(['administrator', 'editor']);     // any of

$user->hasPermissionTo('auth.users.view');       // effective: direct or via a role

$user->getRoleNames();          // Collection<string>
$user->getPermissionNames();    // Collection<string> — direct grants only
$user->getDirectPermissions();  // direct grants only
$user->getAllPermissions();     // direct ∪ via-roles, de-duped — the JWT claim source
$user->getAllPermissions()->pluck('name');
  • hasRole() — true, ak model drží ktorúkoľvek z uvedených rolí (reťazec, enum alebo iterovateľnú štruktúru názvov, enumov a modelov Role).
  • hasPermissionTo() — na držiteľovi overuje efektívne oprávnenia: priame plus všetko zdedené z rolí. Na modeli Role overuje vlastné oprávnenia roly.
  • getDirectPermissions() / getPermissionNames() — iba priame oprávnenia.
  • getAllPermissions() — priame ∪ z rolí, bez duplicít podľa id.

Kontroly nikdy nevyhadzujú výnimku: pre neznámy názov roly či oprávnenia jednoducho vrátia false.

Eager loading

Kontroly použijú načítané relácie, ak sú k dispozícii. Načítajte vopred roles.permissions a permissions a overíte veľa držiteľov bez N+1 dopytov — výsledok je rovnaký pri eager aj lazy načítaní:

$users = User::query()->with(['roles.permissions', 'permissions'])->get();

foreach ($users as $user) {
    $user->getAllPermissions(); // read from the loaded relations — no extra queries
}

Oprávnenia v tokenoch

V API službe je getAllPermissions() prirodzeným zdrojom pre claim oprávnení v tokene:

$claims = [
    'roles' => $user->getRoleNames()->all(),
    'permissions' => $user->getAllPermissions()->pluck('name')->all(),
];

Query scope

Držiteľov podľa roly vyfiltrujete scopom role() — vráti modely, ktoré držia ktorúkoľvek z uvedených rolí:

User::query()->role('administrator')->count();
User::query()->role(['administrator', 'editor'])->get();

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.