---
title: "Backed enumy — Permissions for Laravel | Roundly"
description: "Odovzdávajte vlastné backed enumy všade, kde sa očakáva názov roly či oprávnenia — uloží sa hodnota enumu."
url: https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel/enumy
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Permissions for Laravel](https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel.md)

# Backed enumy

Každá metóda, ktorá prijíma názov, akceptuje reťazec alebo BackedEnum, takže môžete používať vlastné enumy oprávnení a rolí (ukladá sa ->value):

```php
use RoundlyConsulting\Enums\Helpers;

enum PermissionName: string
{
    use Helpers;

    case ViewUsers = 'auth.users.view';
    case EditUsers = 'auth.users.edit';
}

Permissions::for($role)->givePermissionTo(PermissionName::ViewUsers);
Permissions::exists(PermissionName::ViewUsers);
$user->hasPermissionTo(PermissionName::ViewUsers);
```

Trait Helpers z balíka enums-for-laravel je voliteľný — funguje akýkoľvek backed enum v PHP.

## Roly a oprávnenia ako enumy

Prípady enumu prijímajú Permissions::role() a permission(), každá metóda na udeľovanie a priraďovanie, kontroly aj Permissions::exists():

```php
use RoundlyConsulting\Permissions\Facades\Permissions;

enum RoleName: string
{
    case Administrator = 'administrator';
    case Editor = 'editor';
}

Permissions::permission(PermissionName::ViewUsers);
Permissions::for(Permissions::role(RoleName::Editor))->givePermissionTo(PermissionName::ViewUsers);

Permissions::for($user)->assignRole(RoleName::Editor);
$user->hasRole(RoleName::Editor);                   // true
$user->hasPermissionTo(PermissionName::ViewUsers);  // true
Permissions::exists(PermissionName::ViewUsers);     // true
```

## V middlewari rout

Do reťazca middlewaru vložte hodnotu enumu:

```php
Route::get('/users', UsersController::class)
    ->middleware('can:'.PermissionName::ViewUsers->value);
```

## Seedovanie z enumu

Enum nech je jediným zdrojom pravdy — všetky jeho prípady zaregistrujete jedným volaním zo seedera, kroku nasadenia či service providera. syncFrom() registruje oprávnenia, syncRolesFrom() roly a obe vrátia SyncResult:

```php
use RoundlyConsulting\Permissions\Facades\Permissions;

$result = Permissions::syncFrom(PermissionName::class);
$result->created;   // ['auth.users.edit'] — names registered now
$result->existing;  // ['auth.users.view'] — names that were already there
$result->changed(); // true

Permissions::syncRolesFrom(RoleName::class); // the same, for roles
```

Synchronizácia je aditívna: nikdy nezmaže ani nepremenuje riadok, ktorý enum neobsahuje, pretože v tých istých tabuľkách si môžu registrovať oprávnenia aj iné služby. Riadky vznikajú cez vaše nastavené modely, takže sa cache invaliduje sama. Čokoľvek iné než backed enum vyhodí PermissionException.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

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

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel.md)
