---
title: "Gate, Blade a policies — Teams for Laravel | Roundly"
description: "Autorizujte cez $user->can('teams.<oprávnenie>', $team), @teamPermission / @teamRole / @teamOwner a vygenerované tímové policies."
url: https://roundly-consulting.com/sk/open-source/navody/teams-for-laravel/autorizacia
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)

# Gate, Blade a policies

Pri zapnutom gate.register (predvolene) autorizujete tak, ako je v Laraveli zvykom. Ability má tvar <prefix>.<oprávnenie> a tím je argument pre Gate:

```php
if ($user->can('teams.manage-billing', $team)) {
    // ...
}

$user->can('teams.posts.publish', $team);     // a permission ability
$user->can('teams.owner', $team);              // the owner ability
Gate::authorize('teams.team.update', $team);   // throws a 403 when denied
```

## Ako Gate rozhoduje

- Balík registruje hook Gate::before, nie pomenované ability. Odpovedá len na ability s prefixom (predvolene teams.), ktorých prvým argumentom je Team.
- teams.owner sa vyhodnotí ako $team->isOwnedBy($user); každé iné teams.<oprávnenie> ako memberHasPermission().
- Pri nezhode vráti null, nie false, takže rozhodnú vaše vlastné gates a policies — hook nikdy neblokuje nesúvisiace ability.
- Názvy zmeníte cez gate.prefix a gate.owner\_ability; s TEAMS\_REGISTER\_GATE=false sa nezaregistruje hook ani Blade direktívy.

## Blade direktívy

```blade
@teamPermission($team, 'manage-billing')
    <a href="/billing">Billing</a>
@endteamPermission

@teamRole($team, 'admin')
    <button>Manage team</button>
@endteamRole

@teamOwner($team)
    <button>Delete team</button>
@endteamOwner

{{-- Check a specific member instead of the signed-in user --}}
@teamPermission($team, 'posts.publish', $otherUser)
    <span>Can publish</span>
@endteamPermission
```

Každá direktíva predvolene overuje prihláseného používateľa; ak chcete overiť niekoho iného, odovzdajte člena ako posledný argument. Pri expirovanom členstve zlyhá @teamRole aj @teamPermission.

## Tímové policies

teams:policy vygeneruje policy rozširujúcu AbstractTeamPolicy, ktorej before() povolí vlastníkovi tímu všetko nad jeho tímom a inak rozhodnú vaše metódy. Ability na úrovni triedy — $user->can('create', Team::class), viewAny — žiadny tím nenesú, takže ich before() pustí ďalej do vašej metódy:

```bash
php artisan teams:policy TeamPolicy           # writes app/Policies/TeamPolicy.php
php artisan teams:policy TeamPolicy --force   # overwrite an existing file
```

```php
namespace App\Policies;

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Teams\Models\Team;
use RoundlyConsulting\Teams\Policies\AbstractTeamPolicy;

class TeamPolicy extends AbstractTeamPolicy
{
    public function view(Model $user, Team $team): bool
    {
        return $this->allows($user, $team, 'team.view');
    }

    public function update(Model $user, Team $team): bool
    {
        return $this->allows($user, $team, 'team.update');
    }

    public function delete(Model $user, Team $team): bool
    {
        return $this->allows($user, $team, 'team.delete');
    }
}
```

Zaregistrujte ju ako obvykle (automatické objavovanie policies alebo Gate::policy()). Ručne písaným policies dá tie isté pomocné metódy owns() a allows() trait HasTeamPolicies:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Teams\Concerns\HasTeamPolicies;
use RoundlyConsulting\Teams\Models\Team;

class PostPolicy
{
    use HasTeamPolicies;

    public function update(Model $user, Team $team): bool
    {
        return $this->owns($user, $team) || $this->allows($user, $team, 'posts.update');
    }
}
```

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