продолжаю копание в ларавел. Зашел в очередной тупик. есть роуты
Route::prefix("products")->group(function (){
Route::get("{product}/{cookProcess}",[CookProcessController::class,"show"]);
Route::post("/{product}/cookProcessCreate",[CookProcessController::class,"store"]);//->middleware('can:create,cookProcess'); !!!это проблемный роут
Route::delete("{product}/{cookProcess}",[CookProcessController::class,"destroy"])->middleware('can:delete,cookProcess');
Route::patch("{product}/{cookProcess}",[CookProcessController::class,"update"])->middleware('can:update,cookProcess');
});
Проблема с Route::post("/{product}/cookProcessCreate"). Если я устанавливаю на него мидлвер, то сервер при попытке взаимодействия возвращает 403 статус. Логировал соответствующую политику - метод create не отрабатывает совсем. При этом если использовать авторизацию не через мидлвер ($this->authorize('create',CookProcess::class)), все отрабатывает нормально. остальные роуты работают и логируются.
Я вообще уже не имею понятия в чем может быть дело.
Политика на всякий случай
<?php
namespace App\Policies;
use App\Models\Product;
use Illuminate\Auth\Access\Response;
use App\Models\CookProcess;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class CookProcessPolicy
{
public function viewAny(User $user): bool
{
//
}
public function view(User $user, CookProcess $cookProcess): bool
{
Log::debug("process policyview launched");
return Auth::check();
}
public function create(User $user): bool
{
Log::debug("process policy create launched");
return Auth::check();
}
public function update(User $user, CookProcess $cookProcess): bool
{
Log::debug("process policyupdate launched");
return $user->hasPermissionTo('edit notes');
}
public function delete(User $user, CookProcess $cookProcess): bool
{
Log::debug("process policydelete launched");
return $user->hasPermissionTo('delete notes');
}
public function restore(User $user, CookProcess $cookProcess): bool
{
//
}
public function forceDelete(User $user, CookProcess $cookProcess): bool
{
//
}
}
и тест которым проверяю
public function test_cook_process_can_be_created(): void
{
$this->seed(PermissionsTableSeeder::class);
$this->seed(RolesTableSeeder::class);
$user=User::factory()->create();
$user->assignRole('site_user');
$this->actingAs($user);
$product=Product::factory()->create();
$processData = [
"name"=>'testname',
"duration"=>fake()->numberBetween(1,10),
"cookPresenceInterval"=>fake()->numberBetween(0,5),
"description"=>fake()->text(50),
"product_id"=>$product->id
];
$response=$this->post("/api/products/".$product->id . '/cookProcessCreate',$processData);
$response->assertStatus(200);
$createdProcess = CookProcess::where('name','testname')->first();
$this->assertNotNull($createdProcess);
}
буду благодарен за любую подсказку куда копать.