РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить