---
title: "Trait HasRoles — Permissions for Laravel | Roundly"
description: "Pridajte HasRoles do ľubovoľného autentifikovateľného modelu a získa roly, priame oprávnenia a výpočet efektívnych oprávnení."
url: https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel/trait-has-roles
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)

# Trait HasRoles

Pridajte HasRoles do ľubovoľného autentifikovateľného modelu. Žiadny $guard\_name nenastavujete:

```php
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Permissions\Concerns\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
}
```

HasRoles už obsahuje HasPermissions, takže tento jediný trait dá modelu priraďovanie rolí, priame udeľovanie oprávnení aj výpočet efektívnych oprávnení.

## Relácie

Trait pridáva dve polymorfné relácie. Každá kontrola rešpektuje eager loading — ak je relácia načítaná, použije ju, inak ju načíta lenivo:

```php
$user->roles();        // MorphToMany<Role> — the relation
$user->roles;          // Collection<Role> assigned to this model
$user->permissions();  // MorphToMany<Permission> — direct grants
$user->permissions;    // Collection<Permission>, direct grants only
```

## Čo trait pridáva

- assignRole(), removeRole(), syncRoles() — správa rolí modelu.
- givePermissionTo(), revokePermissionTo(), syncPermissions() — správa jeho priamych oprávnení.
- hasRole(), hasPermissionTo() — overenie prístupu.
- getRoleNames(), getPermissionNames(), getDirectPermissions(), getAllPermissions() — čo model drží.
- forgetAllAuthorization() — odpojí všetky roly a priame oprávnenia, napríklad pred zmazaním modelu.
- role() — query scope, ktorý filtruje modely podľa roly.

Zapisujúce metódy sú len skratkou pre Permissions::for($model) — delegujú na ten istý PermissionsManager, takže sa uplatní aj vaše prepísanie v kontajneri a Permissions::fake() ich zaznamená. Čítanie zostáva na modeli.

## Nielen používatelia

Roly a oprávnenia môže držať akýkoľvek Eloquent model — tímy, organizácie, API klienti. Gate v Laraveli autorizuje autentifikovateľných používateľov, preto sa integrácia can: týka vášho modelu používateľa; ostatných držiteľov overujte cez hasRole() a hasPermissionTo():

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Permissions\Concerns\HasRoles;

class Team extends Model
{
    use HasRoles;
}

$team->assignRole('enterprise');
$team->givePermissionTo('billing.invoices.export');

$team->hasRole('enterprise');                         // true
$team->hasPermissionTo('billing.invoices.export');    // true
```

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