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

Команда make:policy

Команда make:policy создаёт новый класс политик в директории app/Policies. Политики используются для организации логики авторизации действий пользователей над моделями. По умолчанию класс создаётся с пустыми методами, но можно использовать опцию --model для автоматической генерации методов CRUD. Первый параметр команды - имя класса политики.

Синтаксис

php artisan make:policy {name}

Пример

Давайте создадим политику для модели Article:

php artisan make:policy ArticlePolicy

Результат выполнения кода:

"Policy created successfully."

Пример

Создадим политику с автоматической генерацией методов для модели:

php artisan make:policy UserPolicy --model=User

Результат выполнения кода:

"Policy created successfully."

Пример сгенерированного класса

После выполнения команды с опцией --model, создаётся класс с методами для CRUD операций:

<?php namespace App\Policies; use App\Models\User; use App\Models\Article; class ArticlePolicy { public function viewAny(User $user) { // } public function view(User $user, Article $article) { // } public function create(User $user) { // } public function update(User $user, Article $article) { // } public function delete(User $user, Article $article) { // } public function restore(User $user, Article $article) { // } public function forceDelete(User $user, Article $article) { // } } ?>

Пример регистрации политики

После создания политики её необходимо зарегистрировать в провайдере авторизации:

<?php namespace App\Providers; use App\Models\Article; use App\Policies\ArticlePolicy; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; class AuthServiceProvider extends ServiceProvider { protected $policies = [ Article::class => ArticlePolicy::class, ]; public function boot() { $this->registerPolicies(); } } ?>

Пример использования политики

Теперь можно использовать политику в контроллере для проверки прав:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function update(Request $request, Article $article) { $this->authorize('update', $article); $article->update($request->all()); return redirect()->route('articles.index'); } } ?>

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

  • команда make:model,
    которая создаёт новую модель Eloquent
  • команда make:controller,
    которая создаёт новый контроллер
  • команда make:request,
    которая создаёт класс запроса для валидации
  • команда make:middleware,
    которая создаёт новый middleware-класс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить