Laravel 10 policy не регистрируется

Рейтинг: 0Ответов: 0Опубликовано: 12.07.2023

Столкнулся с проблемой регистрации policy в Laravel 10.

Есть стандартный модель и crud контроллер.

Вот пример контроллера.

<?php

declare(strict_types=1);

namespace App\Http\Controllers\Api\User;

use App\Http\Controllers\BaseController;
use App\Http\Requests\User\BusinessProfile\UpdateBusinessProfileRequest;
use App\Http\Resources\ErrorResource;
use App\Http\Resources\SuccessResource;
use App\Http\Resources\BusinessProfileResource;
use App\Repository\UserBusinessProfileRepositoryInterface;

final class UserBusinessProfileController extends BaseController
{
    public function __construct(
        private readonly UserBusinessProfileRepositoryInterface $userBusinessProfileRepository
    ){}

    public function update(int $id, UpdateBusinessProfileRequest $request): SuccessResource | ErrorResource
    {
        $validated = $request->validated();
        //My Code

        return SuccessResource::make([
            'message' => 'User business profile updated successfully',
            'data' => BusinessProfileResource::make($businessProfile)
        ]);
    }
}

И создан для него ՝UserBusinessProfilePolicy՝.

<?php

declare(strict_types=1);

namespace App\Policies;

use Illuminate\Auth\Access\HandlesAuthorization;
use App\Models\UserBusinessProfile;
use App\Models\User;
use Illuminate\Support\Facades\Log;

class UserBusinessProfilePolicy
{
    use HandlesAuthorization;

    /**
     * Determine whether the user can update the model.
     *
     * @param  \App\Models\User  $user
     * @param  \App\Models\UserBusinessProfile  $userBusinessProfile
     * @return \Illuminate\Auth\Access\Response|bool
     */
    public function update(User $user, UserBusinessProfile $userBusinessProfile): bool
    {
        Log::info(111111);
        return false;
    }
}

Имена модели и политики в стандартах laravel

В примерах все методы сокрощены. Но в когде они все есть, в стандарте.

И вот регистрация политики.

<?php

namespace App\Providers;

use App\Models\UserBusinessProfile;
use App\Policies\UserBusinessProfilePolicy;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The model to policy mappings for the application.
     *
     * @var array<class-string, class-string>
     */
    protected $policies = [
        UserBusinessProfile::class => UserBusinessProfilePolicy::class
    ];

    /**
     * Register any authentication / authorization services.
     */
    public function boot(): void
    {
        $this->registerPolicies();

    }
}

Дело в том что если смотреть на метод update в policy там я оставил лог. Но все ровно код не даходит до этого. Как будто его вообще нет.

Все сделал так так написано в документации на laravel 10.

Кто может мне подсказать что я упустил? Или что там не так написано?

Как то очень не хочется по всем методам контроллера перейти и отдельно написать gate.

Ответы

Ответов пока нет.