/** * GET /api/users/me/badges - Get user's earned and available badges */ import { NextRequest, NextResponse } from 'next/server'; import { requireAuth } from '@/app/lib/auth'; import { getUserBadgesWithDetails, getAvailableBadges } from '@/app/lib/badges'; import { BadgesResponse, ApiResponse } from '@/app/lib/types'; export async function GET(request: NextRequest) { try { // Authenticate user const user = requireAuth(request); // Get earned and available badges const earned = getUserBadgesWithDetails(user.id); const available = getAvailableBadges(user.id); const response: BadgesResponse = { earned, available }; return NextResponse.json>( { success: true, data: response }, { status: 200 } ); } catch (error) { if (error instanceof Error && error.message === 'Unauthorized') { return NextResponse.json( { success: false, error: 'Unauthorized' }, { status: 401 } ); } console.error('Get badges error:', error); return NextResponse.json( { success: false, error: 'Internal server error' }, { status: 500 } ); } }