Spaces:
Runtime error
Runtime error
| /** | |
| * GET /api/gamification/level — current XP/level for a key, or the operator-wide | |
| * aggregate when no `apiKeyId` is supplied (the dashboard profile page case). (#3484) | |
| * | |
| * LOCAL_ONLY: not process-spawning; management-scoped via requireManagementAuth. | |
| */ | |
| import { NextRequest, NextResponse } from "next/server"; | |
| import { CORS_HEADERS, handleCorsOptions } from "@/shared/utils/cors"; | |
| import { getXp, getAggregateXp } from "@/lib/db/gamification"; | |
| import { requireManagementAuth } from "@/lib/api/requireManagementAuth"; | |
| export async function OPTIONS() { | |
| return handleCorsOptions(); | |
| } | |
| export async function GET(request: NextRequest) { | |
| const authError = await requireManagementAuth(request); | |
| if (authError) return authError; | |
| const apiKeyId = new URL(request.url).searchParams.get("apiKeyId"); | |
| const level = apiKeyId ? getXp(apiKeyId) : getAggregateXp(); | |
| return NextResponse.json({ level }, { headers: CORS_HEADERS }); | |
| } | |