---
title: "Gate a middleware — Permissions for Laravel | Roundly"
description: "Autorizujte cez middleware can:, $user->can() a Gate — bez toho, aby oprávnenia kedykoľvek prebili vaše policies."
url: https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel/gate-a-middleware
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)

# Gate a middleware

Pri zapnutom register\_gate\_check (predvolene) sa oprávnenia vyhodnocujú cez Gate v Laraveli, takže natívny middleware can: funguje hneď:

```php
Route::get('/users', UsersController::class)->middleware('can:auth.users.view');

$user->can('auth.users.view');           // true when granted directly or via a role
Gate::forUser($user)->allows('auth.users.view');
```

## Ako hook rozhoduje

Balík zaregistruje jediný hook Gate::before. Odpovedá iba vtedy, keď platí všetko nasledujúce — inak vráti null a vaše vlastné gates a policies prebehnú bez zásahu:

- Kontrola nemá argumenty — žiadny model ani ďalšie parametre.
- Model používateľa má metódu hasPermissionTo(), teda používa HasRoles.
- Ability je názov zaregistrovaného oprávnenia.

Ak používateľ oprávnenie drží — priamo alebo cez rolu — hook vráti true. Nikdy nevráti false: používateľ bez oprávnenia prejde na vaše gates, a ak žiadne nie sú, Laravel prístup zamietne, takže middleware can: odpovie kódom 403.

## Posledné slovo majú policies

Kontrola oprávnení nikdy neprebije policy modelu. Hneď ako kontrola nesie model alebo akýkoľvek argument — $user->can('update', $post) či middleware can:update,post — hook prenechá rozhodnutie vašej gate alebo policy. Oprávnenie s názvom update autorizuje $user->can('update'), no o $user->can('update', $post) stále rozhoduje PostPolicy::update():

```php
Permissions::permission('update');
Permissions::for($user)->givePermissionTo('update');

$user->can('update');          // true — argument-less, answered by the permission
$user->can('update', $post);   // PostPolicy::update() decides — ownership, tenancy, …
```

```php
final class PostPolicy
{
    public function update(User $user, Post $post): bool
    {
        return $post->owner_id === $user->getKey();
    }
}
```

Hrubozrnné oprávnenia a policies viazané na model tak fungujú vedľa seba a ani jedno potichu nepohltí druhé.

## Vypnutie hooku

Nastavte register\_gate\_check na false, ak chcete hook úplne vynechať a oprávnenia vyhodnocovať sami:

```php
// config/permissions.php
'register_gate_check' => false,

// then check explicitly where you need it
abort_unless($request->user()->hasPermissionTo('auth.users.view'), 403);
```

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