---
title: "Roly — Teams for Laravel | Roundly"
description: "Registrujte roly s oprávneniami v kóde alebo v databáze, používajte zástupný znak * a zapnite cache pre databázový driver."
url: https://roundly-consulting.com/sk/open-source/navody/teams-for-laravel/roly
language: sk
---

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

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

# Roly

Roly sú pomenované balíky oprávnení. Členstvo si ukladá len kľúč roly; samotná rola sa načíta cez role provider, ktorý vráti Teams::roles(). Roly registrujte v metóde boot() service providera — kľúč, zobrazovaný názov, voliteľné oprávnenia (reťazce alebo objekty Permission) a voliteľný popis. Oprávnenie \* udeľuje všetko:

```php
use RoundlyConsulting\Teams\Facades\Teams;
use RoundlyConsulting\Teams\Roles\Permission;

// In a service provider's boot() method:
Teams::roles()->register('owner', 'Owner', ['*']);
Teams::roles()->register('admin', 'Admin', ['*']);
Teams::roles()->register(
    'editor',
    'Editor',
    ['posts.edit', new Permission('posts.publish', 'Publish posts')],
    description: 'Can edit and publish content.',
);
Teams::roles()->register('member', 'Member', ['posts.view']);

Teams::roles()->all();           // array<string, Role>
Teams::roles()->find('editor');  // ?Role
```

Zaregistrujte každý kľúč, ktorý vaša aplikácia prideľuje — vrátane owner, admin a member, ktoré balík sám prideľuje pri vytvorení tímu, prevode vlastníctva a schválení žiadosti (nastaviteľné v roles.\*). Členstvo s nezaregistrovaným kľúčom nemá žiadnu rolu ani oprávnenia.

## Objekt Role

```php
$role = Teams::roles()->find('editor');

$role->key;                 // 'editor'
$role->name;                // 'Editor'
$role->description;         // 'Can edit and publish content.'
$role->permissions;         // ['posts.edit', 'posts.publish']
$role->permissionObjects;   // list<Permission>

$role->hasPermission('posts.publish');                      // '*' grants everything
$role->hasAnyPermission(['posts.delete', 'posts.edit']);    // true
$role->hasAllPermissions(['posts.edit', 'posts.publish']);  // true
```

Prázdny názov oprávnenia neprejde nikdy, ani s \*.

## Drivery rolí

| roles.provider | Trieda | Správanie |
| --- | --- | --- |
| `array` | InMemoryRoleProvider | Predvolené. Roly zaregistrované pri štarte žijú v pamäti počas celého procesu — rýchle a verzované v gite. |
| `database` | DatabaseRoleProvider | Ukladá roly do tabuľky team\_roles (upsert podľa kľúča); mapu rolí načíta najviac raz za request alebo job vo fronte. |
| `database + cache` | CachedRoleProvider | Obalí databázový driver; mapu rolí drží v cache a vyprázdni ju pri každej zmene definície roly. |

## Roly v databáze

Nastavte roles.provider na database a to isté volanie Teams::roles()->register() vytvorí alebo aktualizuje riadok v team\_roles podľa kľúča, takže admini môžu roly spravovať za behu. Overovanie oprávnení sa nemení:

```php
// .env → TEAMS_ROLES_PROVIDER=database
Teams::roles()->register('editor', 'Editor', ['posts.edit', 'posts.publish'], description: 'Writes posts'); // upserts a team_roles row by key
```

register() je pri oboch driveroch upsert podľa kľúča: opätovná registrácia kľúča nahradí názov, oprávnenia aj popis a mäkko zmazaná definícia sa obnoví namiesto nového vloženia. Vrátený objekt Role slúži len na čítanie — rolu zmeníte opätovnou registráciou.

## Cache pre databázový driver

Nastavením roles.cache.enabled uložíte mapu rolí z databázy do cache. Pri každom Teams::roles()->register() sa vyprázdni — úložiská s tagmi podľa tagu, ostatné zmazaním jedného kľúča. Cache obaľuje len databázový driver:

```bash
TEAMS_ROLES_PROVIDER=database
TEAMS_ROLES_CACHE=true
TEAMS_ROLES_CACHE_STORE=redis     # null = the default store
TEAMS_ROLES_CACHE_KEY=teams.roles
TEAMS_ROLES_CACHE_TTL=3600        # seconds
```

## Odobraté oprávnenia v dlho bežiacich procesoch

Role provider je v kontajneri zaregistrovaný ako scoped: mapu rolí načíta najviac raz za request alebo job vo fronte (queue workery aj Octane začínajú každý s novým providerom), takže oprávnenie odobraté v inom procese prestane platiť od nasledujúceho requestu či jobu. Uloženie alebo zmazanie definície roly, či už cez register(), alebo priamo cez model RoleDefinition z administrácie, okamžite vyprázdni mapu aktuálneho procesu aj zdieľanú cache a cache sa vždy plní z tabuľky, nikdy zo staršej kópie niektorého workera.

## Výpis rolí

```bash
php artisan teams:roles         # Key | Name | Permissions
```

## 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/teams-for-laravel.md)
