РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplrAuBrPl 49 of 53 menu

Policies поверх Laravel Breeze

Breeze закрыл регистрацию, вход, профиль и сброс пароля. Права на модели он за вас не напишет. Здесь пригодятся Policies из предыдущих разделов.

План такой:

  1. Модель Post с user_id.
  2. PostPolicy: update и delete только для автора.
  3. В контроллере - $this->authorize или authorizeResource.
  4. В Blade - @can для кнопок.
  5. Маршруты постов - в группе с auth, рядом с dashboard.

Policy для автора:

<?php public function update(User $user, Post $post): bool { return $user->id === $post->user_id; } public function delete(User $user, Post $post): bool { return $user->id === $post->user_id; } ?>

В контроллере перед правкой:

<?php public function update(Request $request, Post $post) { $this->authorize('update', $post); // ... } ?>

В шаблоне кнопка только тому, кому можно:

@can('update', $post) <a href="{{ route('posts.edit', $post) }}">Edit</a> @endcan

Получится привычная схема: Breeze отвечает за «кто вошёл», ваша Policy - за «можно ли трогать этот пост».

В проекте с Breeze создайте CRUD постов и PostPolicy.

Проверьте двумя аккаунтами: чужой пост нельзя edit/delete, свой - можно.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить