Merhabalar, Laravel kullanarak hem mobil servis hem de web için panel geliştiriyorum. Geliştirmeye çalıştığım projede yetki sistemi kullanıyorum. Yetkileri oluşturdum ve bir role atadım. Rolü de kullanıcı oluştururken kullanıcıya veriyorum. Şöyle bir senaryo var eğer kullanıcının rolü 'admin operations' yetkisine sahipse mobil uygulama da başka bir sayfa açılması gerekiyor. Ama yetkileri web.php de kullandığım şekliyle api.php de kullanamıyorum.
Route::get('/create', [UserController::class, 'create'])->name('create')->middleware('permission:create user');
Biraz araştırıp arkadaşıma danıştıktan sonra api.php de
Route::post('/register', [UserController::class, 'admin_register'])->middleware('abilities:create user');
şeklinde kullanabiliyorum. bunun için de önce Kernel.php de
'abilities' => \Laravel\Sanctum\Http\Middleware\CheckAbilities::class,
'ability' => \Laravel\Sanctum\Http\Middleware\CheckForAnyAbility::class
tanımlama yapmam gerekti. bu şekilde kullanınca da tamam yetki çalışıyor ama kullanıcının yetkisi yoksa "Invalid ability provided." hatası geliyor postman de. bunu da aşmak için
public function render($request, Throwable $exception)
{
if ($exception instanceof MissingAbilityException) {
return response()->json([
'message' => 'Yetkisiz erişim: Bu işlem için gerekli yetkiye sahip değilsiniz.',
'error' => 'Yetersiz yetki'
], 403);
}
return parent::render($request, $exception);
}
şu şekilde hatayı ezmem gerekti. Bu kullanım içime en baştan sinmedi. En başından spatie-permission kullanmanın bir yolu yok mu api servisleri için?