Политики Laravel не работают. Ошибка 403

Я пишу приложение на laravel и vue. Я сделал аутентификацию на sanctum и breeze. Она работает. Я хотел авторизовать действия пользователя, чтобы он мог создавать контент на сайте, если у него есть соответствующая роль. Я написал политику:

class NftPolicy
{
public function create(User $user): bool
    {

//        return $user->role === 'admin' || $user->role === 'author';
        return true;
    }

Зарегистрировал ее в App Service Provider в boot (как написано в документации):

class AppServiceProvider extends ServiceProvider
{

    public function register(): void
    {
        //
    }

    public function boot(): void
    {
        Gate::policy(Nft::class, NftPolicy::class);

        ResetPassword::createUrlUsing(function (object $notifiable, string $token) {
            return config('app.frontend_url')."/password-reset/$token?email={$notifiable->getEmailForPasswordReset()}";
        });
    }
}

Я попробовал использовать ее в контроллере (не обращайте внимания на текущий код в нем, я перепробовал много вариантов, все равно ничего не получилось):

class StoreNftController extends Controller
{
    public function __invoke(StoreRequest $request)
    {
        if (Gate::denies('create', Nft::class)) {
            abort(403, 'Unauthorized action.');
        }
//        Gate::authorize('create', Nft::class);

        $data = $request->validated();

        $data['author_id'] = auth()->id();

        $nft = Nft::create($data);

        return response()->json($nft, 201);
    }
}

api.php:

Route::group(['namespace' => 'App\Http\Controllers\Home', 'prefix' => 'home'], function(){
    Route::post('/', StoreNftController::class)->middleware('auth:sanctum');

Я всегда получаю сообщение об ошибке 403, когда пытаюсь выполнить какое-либо действие. Независимо от того, как я что-то меняю, ошибка все равно остается. Хотя я проверил, что пользователь аутентифицирован, он попадает на клиент с сервера и если попытаться вывести его в laravel.log, данные будут там (все данные пользователя, аутентифицирован ли он и id сессии), но все равно ошибка постоянная.

Также я заметил, что логирование в контроллере не работает, то есть его код как будто даже не начинает выполняться, да и ошибка, по-моему, была еще когда у меня политик не было.

Я видел у некоторых людей решения, что нужно поместить политику в папку с моделями, в более старой версии laravel политики регают в AuthServiceProvider, но в версии 11 такого нет. Возможно, я где-то что-то не дописал... Я надеюсь на помощь.


Ответы (0 шт):