---
title: "Roly definované tenantom — Permissions for Laravel | Roundly"
description: "Každý tenant či tím si cez Permissions::owner() zadefinuje vlastné roly — priraditeľné len v rozsahu vlastníka, bez kolízie s globálnymi rolami."
url: https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel/roly-tenanta
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)

# Roly definované tenantom

Pri zapnutých priradeniach môže rola patriť jednému vlastníkovi — tenantovi, tímu —, takže dvaja tenanti si môžu každý zadefinovať rolu reviewer bez kolízie navzájom aj s globálnou rolou reviewer. Oprávnenia zostávajú globálnymi konštantami v kóde; vlastníka majú len roly:

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

Permissions::owner($tenant)->role('reviewer')->givePermissionTo('posts.review'); // find or create
Permissions::owner($tenant)->findRole('reviewer');              // ?Role
Permissions::owner($tenant)->roles();                           // Collection<int, Role>, by name
Permissions::owner($tenant)->syncRolesFrom(TenantRole::class);  // SyncResult, additive

Permissions::for($user)->in($tenant)->assignRole('reviewer');   // the tenant's own reviewer
```

owner()->role() rolu nájde alebo vytvorí bezpečne aj pri súbehu vďaka unikátnemu indexu (owner\_key, name), a to cez váš nastavený model roly. syncRolesFrom() zaregistruje jednu rolu vlastníka za každý prípad enumu, aditívne, rovnako ako globálna verzia.

## Ktorú rolu názov znamená

V rámci rozsahu sa názov roly vyhodnotí najprv ako vlastná rola rozsahu, potom ako rola ďalšieho vlastníka, ktorého pre tento rozsah zaregistrujete, a nakoniec ako globálna rola; neznámy názov vyhodí RoleDoesNotExist. Rolu s vlastníkom možno priradiť len v rozsahu jej vlastníka — model Role s vlastníkom odovzdaný kdekoľvek inde, v inom rozsahu, pri zápise bez rozsahu či v assignRole() z 2.0, vyhodí PermissionException. Rozšíriť to môžete resolverom:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Permissions\Facades\Permissions;

// A project uses the roles its tenant defined
Permissions::resolveRoleOwnerUsing(
    fn (Model $scope): ?Model => $scope instanceof Project ? $scope->tenant : null,
);

Permissions::for($user)->in($project)->assignRole('reviewer'); // the tenant's reviewer
```

## Globálne slovesá vidia globálne roly

Pri zapnutom prepínači pracujú slovesá katalógu z 2.0 len s globálnymi rolami: role(), findRole(), roles(), syncRolesFrom(), Role::findOrCreate(), vyhodnotenie názvu v assignRole() bez rozsahu aj query scope role() roly s vlastníkom ignorujú. Rola pozná svojho vlastníka:

```php
$role->owner;      // the owning model (MorphTo), null for a global role
$role->isOwned();  // bool
```

owner\_type a owner\_key sú pri serializácii roly skryté, pretože nesú názov triedy; owner\_id nie. Permissions::forgetScope($tenant) zmaže roly, ktoré tenant vlastní, spolu s jeho priradeniami, a pruneOrphans() prečistí roly, ktorých vlastník už neexistuje.

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