Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Що повертає політика для гостя і як дозволити гостям дію?

За замовчуванням гейти й політики для неавтентифікованого відвідувача повертають false - навіть не викликаючи метод. Це безпечний дефолт: забута перевірка не відкриє дію гостям.

Щоб метод викликався й для гостя, параметр користувача роблять необов'язковим:

class PostPolicy
{
    public function view(?User $user, Post $post): bool
    {
        if ($post->is_published) {
            return true;              // опубліковане бачать усі
        }

        return $user?->id === $post->user_id;   // чернетку - лише автор
    }
}

Де це потрібно: публічний вміст із винятками - опубліковані статті для всіх, чернетки для автора; файли, частина яких доступна без входу.

Пастка: код усередині має пам'ятати про null - звернення $user->id без ?-> впаде на гостеві.

Для дій, які гостям не дозволені ніколи (редагування, видалення), параметр лишають обов'язковим - тоді Laravel відмовить ще до виклику методу.

Докладніше в документації: Гості

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання