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

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 model

Seedovanie

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 permission

Popisy

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