laravel-12/app/Providers/AuthServiceProvider.php

44 lines
1.3 KiB
PHP

<?php
namespace App\Providers;
use App\Models\Post;
use App\Models\User;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
protected $policies = [];
public function boot(): void
{
$this->registerPolicies();
// Проверка роли администратора
Gate::define('admin', function (User $user) {
return $user->role === 'admin';
});
// Просмотр поста
Gate::define('view-post', function (User $user, Post $post) {
return $user->role === 'admin' || $post->user_id === $user->id;
});
// Создание поста (доступно всем авторизованным)
Gate::define('create-post', function (User $user) {
return true;
});
// Обновление поста
Gate::define('update-post', function (User $user, Post $post) {
return $user->role === 'admin' || $post->user_id === $user->id;
});
// Удаление поста
Gate::define('delete-post', function (User $user, Post $post) {
return $user->role === 'admin' || $post->user_id === $user->id;
});
}
}