---
title: "Autorizácia — Comments for Laravel | Roundly"
description: "Voliteľne kontrolujte každú zmenu — zápis, úpravu, mazanie, obnovenie, moderovanie, zámky aj presuny — cez policy pre Comment s pribalenou ako základom."
url: https://roundly-consulting.com/sk/open-source/navody/comments-for-laravel/autorizacia
language: sk
---

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

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

# Autorizácia

Autorizácia je predvolene vypnutá, takže existujúci kód sa nezmení. Zapnete ju cez comments.authorization (COMMENTS\_AUTHORIZATION=true) a registráciou policy pre model Comment. Balík obsahuje povoľujúci základ — každá ability vracia true — ktorý rozšírite:

```php
use Illuminate\Support\Facades\Gate;
use RoundlyConsulting\Comments\Models\Comment;
use RoundlyConsulting\Comments\Policies\CommentPolicy;

Gate::policy(Comment::class, CommentPolicy::class);
```

## Abilities

| Ability | Kontroluje ju | Argument |
| --- | --- | --- |
| `create` | Každý zápis — builder, write(), writeComment() — a Comments::transfer() | Subjekt — pri odpovedi pôvodný subjekt, ku ktorému sa pripája; pri presune cieľový subjekt |
| `update` | Comments::update() | Comment |
| `delete` | Comments::delete(), deleteAll() | Comment |
| `restore` | Comments::restore() | Comment |
| `moderate` | Comments::approve() / hide(), approveAll() / hideAll() | Comment |
| `lock / unlock` | Comments::lock() / unlock(), lockThread() / unlockThread(), lockReplies() / unlockReplies() | Subjekt, pri zámku vlákna Comment |

Kontroly bežia voči aktuálne prihlásenému používateľovi (pri hosťovi je $user null) a zamietnutie vyhodí UnauthorizedCommentActionException. Policy zaregistrovaná pre Comment platí aj pre podtriedu nastavenú v comments.model; ak nie je zaregistrovaná žiadna, automatické vyhľadávanie v Laraveli použije pribalenú povoľujúcu CommentPolicy.

## Vlastná policy

create dostane komentovaný subjekt — pri odpovedi pôvodný subjekt, ku ktorému sa pripája — takže môžete rozhodovať podľa subjektu; lock a unlock dostanú to, čo sa zamyká. Vlastná policy, ktorej niektorá z metód chýba, danú akciu zamietne, preto rozšírte pribalenú CommentPolicy:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Comments\Policies\CommentPolicy;

class ProjectCommentPolicy extends CommentPolicy
{
    public function create(?Model $user, ?Model $commentable = null): bool
    {
        return $user !== null && $commentable instanceof Project && $commentable->hasMember($user);
    }

    public function lock(?Model $user, Model $lockable): bool
    {
        return $user?->isModerator() ?? false;
    }
}
```

```php
namespace App\Policies;

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Comments\Models\Comment;
use RoundlyConsulting\Comments\Policies\CommentPolicy as BaseCommentPolicy;

class CommentPolicy extends BaseCommentPolicy
{
    public function update(?Model $user, Comment $comment): bool
    {
        return $user !== null && $comment->actor?->is($user) === true;
    }

    public function delete(?Model $user, Comment $comment): bool
    {
        return $this->update($user, $comment);
    }
}

// AppServiceProvider::boot()
Gate::policy(\RoundlyConsulting\Comments\Models\Comment::class, \App\Policies\CommentPolicy::class);
```

## Odpoveď 403

Balík nemá žiadne routy, preto výnimka nie je HTTP výnimkou. Ak chcete z vlastných controllerov odpovedať kódom 403, premapujte ju na AuthorizationException z Laravelu:

```php
use Illuminate\Auth\Access\AuthorizationException;
use RoundlyConsulting\Comments\Exceptions\UnauthorizedCommentActionException;

// bootstrap/app.php
->withExceptions(function (Exceptions $exceptions): void {
    $exceptions->map(fn (UnauthorizedCommentActionException $e) => new AuthorizationException($e->getMessage()));
})
```

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