Laravel 10 policy не регистрируется
Столкнулся с проблемой регистрации 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
.
Источник: Stack Overflow на русском