---
title: "Autorizácia — Approvals for Laravel | Roundly"
description: "Každú cestu rozhodnutia preveďte cez Gate ability, ktorú definuje vaša aplikácia — odmietnutý aktér dostane výnimku."
url: https://roundly-consulting.com/sk/open-source/navody/approvals-for-laravel/autorizacia
language: sk
---

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

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

# Autorizácia

Nastavte approvals.authorization.enabled na true — alebo env premennú, ktorá prijme aj 1, yes a on (false, 0, no a off ju vypnú, pri prázdnej hodnote zostane vypnutá; čokoľvek iné vyhodí InvalidConfigurationException) — a každá cesta rozhodnutia prejde kontrolou cez Gate ability:

```bash
APPROVALS_AUTHORIZATION=true
```

Balík Gate nikdy nedefinuje sám — urobí to vaša aplikácia:

```php
use Illuminate\Support\Facades\Gate;

Gate::define('decide-approval', fn ($user, $approvable) => $user->can('review', $approvable));
```

Odmietnutie cez Gate vyhodí UnauthorizedApprovalException ešte predtým, než sa čokoľvek zapíše:

```php
use RoundlyConsulting\Approvals\Exceptions\UnauthorizedApprovalException;
use RoundlyConsulting\Approvals\Facades\Approvals;

try {
    Approvals::for($deployment)->as($intern)->approve();
} catch (UnauthorizedApprovalException $e) {
    // the gate denied this actor — nothing was recorded
}
```

## Ako kontrola prebieha

- Stráži approve(), reject(), toggle(), ask() aj cancel() — cez fasádu, traity, testovacích pomocníkov aj akcie. Uzavretie kola cez close() kontrolu cez Gate nespúšťa — autorizujte ho vo vlastnom kóde.
- Ability sa overuje cez Gate::forUser() voči schvaľovanému modelu pre model, ktorý koná, takže aktér nemusí byť prihlásený používateľ. Pri ask() je to vyžiadaný aktér.
- Pri delegovaní sa overuje konajúci zástupca, nie delegujúci.
- Kontrola menovaných schvaľovateľov žiadosti je samostatná a platí vždy.
- Kontrola je vnútornou súčasťou akcií rozhodnutí — neexistuje verejný hook, ktorý by sa Gate opýtal bez toho, aby vzniklo rozhodnutie. Kód, ktorý potrebuje tú istú odpoveď inde, musí logiku skopírovať, ako to robí DecisionGate z requests-for-laravel pre reopen(); ak sa zmení spôsob, akým approvals Gate číta, musí sa zmeniť aj táto kópia.

## Vlastný názov ability

```php
// config/approvals.php
'authorization' => [
    'enabled' => env('APPROVALS_AUTHORIZATION', false),
    'ability' => 'review-deployment',
],

// App\Providers\AppServiceProvider::boot()
Gate::define('review-deployment', fn (User $user, Deployment $deployment) => $user->team_id === $deployment->team_id);
```

Nenastavená hodnota (null alebo prázdna) znamená decide-approval; ability, ktorá nie je reťazcom, vyhodí InvalidConfigurationException namiesto overenia inej ability.

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