Roly a oprávnenia
Permissions::role() a Permissions::permission() sú vďaka unikátnemu indexu na name idempotentné a vytvoria aj vrátia model nastavený v permissions.models.* — vaša podtrieda teda dostane späť vlastnú triedu, vlastné model eventy aj vlastné observery. Role::findOrCreate() a Permission::findOrCreate() sú len skratkou pre tie isté volania:
use RoundlyConsulting\Permissions\Facades\Permissions;
$role = Permissions::role('administrator');
$permission = Permissions::permission('auth.users.view');
// The same thing, from the models:
Role::findOrCreate('administrator');
Permission::findOrCreate('auth.users.view');Obe metódy prijímajú reťazec alebo backed enum — názvom sa stane hodnota enumu. Vytváranie používa createOrFirst, takže ani súbežné volania nevytvoria duplicitu.
Vyhľadávanie
findRole(), findPermission() a roles() sú živé dopyty; permissions() a exists() odpovedajú z katalógu v cache:
Permissions::findRole('administrator'); // ?Role
Permissions::findPermission('auth.users.view'); // ?Permission — the full row
Permissions::roles(); // every role, ordered by name
Permissions::permissions(); // the cached catalog: id + name only
Permissions::exists('auth.users.view'); // bool, from the cache
Permissions::roleModel()::query()->where(...); // a query on your configured modelSeedovanie
Keďže role() a permission() sú idempotentné a givePermissionTo aditívne, ten istý seeder môžete spúšťať pri každom nasadení bez duplicitných riadkov a bez straty oprávnení. Ako zaregistrovať celý enum jedným volaním, nájdete v časti Backed enumy:
use Illuminate\Database\Seeder;
use RoundlyConsulting\Permissions\Facades\Permissions;
final class PermissionSeeder extends Seeder
{
public function run(): void
{
foreach (['auth.users.view', 'auth.users.edit', 'auth.users.delete'] as $name) {
Permissions::permission($name);
}
Permissions::for(Permissions::role('editor'))
->givePermissionTo('auth.users.view', 'auth.users.edit');
Permissions::for(Permissions::role('administrator'))
->givePermissionTo('auth.users.view', 'auth.users.edit', 'auth.users.delete');
}
}Čítanie rolí a oprávnení
$role->permissions; // Collection<Permission> granted to the role
$role->getPermissionNames(); // Collection<string>
$role->hasPermissionTo('auth.users.view'); // bool — the role's own grants
$permission->roles; // Collection<Role> that carry the permissionPopisy
Oba modely majú voliteľný preložiteľný popis — označenie v jednotlivých jazykoch pre administračné obrazovky. Čítanie a pravidlá fallbacku nájdete v časti Preložiteľné popisy:
$role->update(['description' => ['en' => 'Administrator', 'sk' => 'Administrátor']]);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.