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

Метод forceDelete

Метод forceDelete класса Policy применяется для проверки прав пользователя на принудительное удаление модели, которая ранее была удалена через мягкое удаление (Soft Deletes). Метод принимает два параметра: текущего аутентифицированного пользователя и экземпляр модели, которую необходимо окончательно удалить. Возвращает значение bool - true, если пользователь имеет право на принудительное удаление, и false в противном случае.

Синтаксис

<?php namespace App\Policies; use App\Models\User; use App\Models\Article; class ArticlePolicy { public function forceDelete(User $user, Article $article): bool { // Логика проверки прав } } ?>

Пример

Создадим политику для модели Article, которая разрешает принудительное удаление только администраторам:

<?php namespace App\Policies; use App\Models\User; use App\Models\Article; class ArticlePolicy { public function forceDelete(User $user, Article $article): bool { return $user->role === 'admin'; } } ?>

Пример

Используем метод в контроллере для проверки прав перед окончательным удалением статьи:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; class ArticleController extends Controller { public function forceDelete(Request $request, Article $article) { if (Gate::denies('forceDelete', $article)) { abort(403, 'У вас нет прав на принудительное удаление этой статьи'); } $article->forceDelete(); return redirect()->route('articles.index') ->with('success', 'Статья удалена окончательно'); } } ?>

Пример

Проверим работу политики в Blade-шаблоне для отображения кнопки принудительного удаления только для авторизованных администраторов:

@can('forceDelete', $article) <form action="{{ route('articles.force-delete', $article) }}" method="POST"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger"> Удалить окончательно </button> </form> @endcan

Пример

Более сложный пример - разрешаем принудительное удаление только автору статьи или администратору:

<?php namespace App\Policies; use App\Models\User; use App\Models\Article; class ArticlePolicy { public function forceDelete(User $user, Article $article): bool { // Разрешаем админу или автору статьи return $user->role === 'admin' || $user->id === $article->user_id; } } ?>

Смотрите также

  • метод delete,
    который определяет, может ли пользователь удалить модель
  • метод restore,
    который определяет, может ли пользователь восстановить мягко удалённую модель
  • метод policy,
    который регистрирует политику для модели
  • метод define,
    который определяет произвольное правило авторизации
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить