only('email', 'password'))) { return response()->json([ 'message' => 'Geçersiz e-posta veya şifre.', ], 401); } /** @var User $user */ $user = Auth::user(); $token = $user->createToken('admin-token')->plainTextToken; return response()->json([ 'data' => [ 'token' => $token, 'user' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'roles' => $user->getRoleNames(), 'permissions' => $user->getAllPermissions()->pluck('name'), ], ], ]); } #[OA\Get( path: '/api/admin/me', summary: 'Mevcut kullanıcı bilgileri', description: 'Oturum açmış kullanıcının bilgilerini, rollerini ve izinlerini döndürür.', security: [['sanctum' => []]], tags: ['Auth'], responses: [ new OA\Response(response: 200, description: 'Kullanıcı bilgileri'), new OA\Response(response: 401, description: 'Yetkisiz erişim'), ], )] public function me(Request $request): JsonResponse { /** @var User $user */ $user = $request->user(); return response()->json([ 'data' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'roles' => $user->getRoleNames(), 'permissions' => $user->getAllPermissions()->pluck('name'), ], ]); } #[OA\Post( path: '/api/admin/logout', summary: 'Çıkış yap', description: 'Mevcut token\'ı iptal eder.', security: [['sanctum' => []]], tags: ['Auth'], responses: [ new OA\Response(response: 200, description: 'Başarıyla çıkış yapıldı'), new OA\Response(response: 401, description: 'Yetkisiz erişim'), ], )] public function logout(Request $request): JsonResponse { /** @var User $user */ $user = $request->user(); $user->currentAccessToken()->delete(); return response()->json([ 'message' => 'Başarıyla çıkış yapıldı.', ]); } }