---
title: "Riadenie prístupu — Options for Laravel | Roundly"
description: "Voliteľné pravidlá čítania a zápisu pre každé nastavenie, Gate abilities, konanie za používateľa, obídenie pre systémové joby a autorizácia v CLI."
url: https://roundly-consulting.com/sk/open-source/navody/options-for-laravel/riadenie-pristupu
language: sk
---

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

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

# Riadenie prístupu

Autorizácia jednotlivých nastavení je voliteľná a predvolene vypnutá, takže existujúce nastavenia sa nikdy neobmedzia. Zapnite ju:

```bash
OPTIONS_AUTHORIZATION=true
OPTIONS_AUTHORIZATION_GATE=true   # optional: also consult option.read / option.write
```

Potom na nastavení deklarujte pravidlá. authorizeRead() aj authorizeWrite() predvolene vracajú true:

```php
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Options\BaseOption;

final class MaintenanceModeOption extends BaseOption
{
    public function authorizeWrite(?Authenticatable $user, ?Model $owner): bool
    {
        return (bool) $user?->is_admin;
    }
}
```

```php
Options::set(MaintenanceModeOption::class, true);   // throws UnauthorizedOption for non-admins

// Act on behalf of a user, or bypass entirely (e.g. system jobs):
Options::actingAs($user, fn () => Options::set(MaintenanceModeOption::class, true));
Options::withoutAuthorization(fn () => Options::set(MaintenanceModeOption::class, true));
```

## Čo sa vynucuje

- Čítania — get(), has(), many(), fluent API, helpery, HasOptions, skupiny a direktíva @option — overujú authorizeRead().
- Zápisy — set(), setMany(), set() skupiny, remember() pri ukladaní, forget() a reset() — overujú authorizeWrite().
- Zamietnutie vyhodí UnauthorizedOption s kľúčom nastavenia.
- Options::all() výnimku nevyhodí: vynechá každé nastavenie, ktoré aktuálny používateľ čítať nesmie — a keďže overiť vie len nastavenie, ktoré pozná, aj každý uložený kľúč, ktorý nie je v registri textových kľúčov.
- export(), exportJson() aj for($owner)->export() filtrujú rovnako: vynechajú riadok, ktorý aktuálny používateľ čítať nesmie — alebo ktorého kľúču nezodpovedá žiadne registrované nastavenie, či ktorého vlastník už neexistuje. Každý riadok s vlastníkom sa overuje voči svojmu vlastníkovi.
- import() pred prvým zápisom overí každý riadok a pri riadku, ktorý používateľ zapisovať nesmie, neregistrovanom kľúči alebo neexistujúcom vlastníkovi vyhodí UnauthorizedOption — neimportuje sa nič.
- Testovací fake pri zapnutej autorizácii vynucuje tie isté pravidlá.

## Aktuálny používateľ

Hooky dostanú prihláseného používateľa (Auth::user(), pre hosťa null) a vlastníka rozsahu, ku ktorému sa pristupuje. actingAs() počas callbacku podstrčí iného používateľa a withoutAuthorization() vynucovanie úplne vynechá — obe potom obnovia predchádzajúci stav, aj keď callback vyhodí výnimku.

## Gate abilities

Pri zapnutom authorization.use\_gate sa overujú aj Gate abilities option.read a option.write — ale iba ak ich definujete. Dostanú inštanciu nastavenia a vlastníka a povoliť musí hook aj ability:

```php
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Gate;
use RoundlyConsulting\Options\BaseOption;

Gate::define('option.write', function (?User $user, BaseOption $option, ?Model $owner): bool {
    // a user may change their own settings; only admins change global ones
    return $owner !== null
        ? $owner->is($user)
        : (bool) $user?->is_admin;
});
```

## Systémový kód a konzola

Systémový kód autorizáciu obchádza: prepojenie s konfiguráciou číta svoje nastavenia bez kontroly (beží pri štarte, keď ešte žiadny používateľ neexistuje) a rovnako aj konzolové príkazy options:list, options:get, options:set, options:export a options:import. S --as=<userKey> bežia options:get a options:set podľa pravidiel daného používateľa; ten sa načíta cez user provider predvoleného guardu:

```bash
# maintenance-mode is a registered key
php artisan options:set maintenance-mode 1 --as=1   # authorize as the user with key 1
php artisan options:get maintenance-mode            # default: authorization bypassed
```

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