diff --git a/app/api/user/profile/route.ts b/app/api/user/profile/route.ts index 4bf5e0d..abb44b4 100644 --- a/app/api/user/profile/route.ts +++ b/app/api/user/profile/route.ts @@ -10,18 +10,83 @@ function getErrorMessages(locale: string = 'ro') { unauthorized: 'Nu esti autentificat', nameRequired: 'Numele este obligatoriu', updateFailed: 'Actualizarea a eșuat', - success: 'Profil actualizat cu succes' + success: 'Profil actualizat cu succes', + userNotFound: 'Utilizator negăsit' }, en: { unauthorized: 'Unauthorized', nameRequired: 'Name is required', updateFailed: 'Update failed', - success: 'Profile updated successfully' + success: 'Profile updated successfully', + userNotFound: 'User not found' } } return messages[locale as keyof typeof messages] || messages.ro } +export async function GET(request: Request) { + try { + const url = new URL(request.url) + const locale = url.searchParams.get('locale') || 'ro' + const messages = getErrorMessages(locale) + + // Get token from authorization header + const authHeader = request.headers.get('authorization') + const token = authHeader?.replace('Bearer ', '') + + if (!token) { + return NextResponse.json({ error: messages.unauthorized }, { status: 401 }) + } + + // Verify token and get user + const user = await getUserFromToken(token) + + if (!user) { + return NextResponse.json({ error: messages.unauthorized }, { status: 401 }) + } + + // Get full user data including subscription fields + const userData = await prisma.user.findUnique({ + where: { id: user.id }, + select: { + id: true, + email: true, + name: true, + role: true, + theme: true, + fontSize: true, + subscriptionTier: true, + subscriptionStatus: true, + conversationLimit: true, + conversationCount: true, + limitResetDate: true, + stripeCustomerId: true, + stripeSubscriptionId: true, + createdAt: true, + updatedAt: true, + lastLoginAt: true + } + }) + + if (!userData) { + return NextResponse.json({ error: messages.userNotFound }, { status: 404 }) + } + + return NextResponse.json({ + success: true, + user: userData + }) + + } catch (error) { + console.error('Profile fetch error:', error) + const url = new URL(request.url) + const locale = url.searchParams.get('locale') || 'ro' + const messages = getErrorMessages(locale) + + return NextResponse.json({ error: messages.unauthorized }, { status: 500 }) + } +} + export async function PUT(request: Request) { try { const url = new URL(request.url)