Files
record-app-next/app/api/user/profile/route.ts
2025-07-31 17:05:07 +08:00

52 lines
1.4 KiB
TypeScript

import { NextRequest } from "next/server";
import { getServerSession } from "next-auth/next";
import { authOptions } from "@/lib/auth";
import { UserService } from "@/lib/services/user.service";
import { ApiResponseHandler } from "@/lib/utils/api-response";
import { AuthenticationError, ValidationError } from "@/lib/errors/app-error";
export async function GET() {
try {
const session = await getServerSession(authOptions);
if (!session?.user?.id) {
throw new AuthenticationError();
}
const userProfile = await UserService.getUserById(session.user.id);
if (!userProfile) {
throw new AuthenticationError("用户不存在");
}
return ApiResponseHandler.success(userProfile);
} catch (error) {
return ApiResponseHandler.error(error as Error);
}
}
export async function PUT(request: NextRequest) {
try {
const session = await getServerSession(authOptions);
if (!session?.user?.id) {
throw new AuthenticationError();
}
const body = await request.json();
const { name } = body;
if (!name || typeof name !== "string") {
throw new ValidationError("名称不能为空");
}
const updatedProfile = await UserService.updateUser(session.user.id, {
name,
});
return ApiResponseHandler.success(updatedProfile);
} catch (error) {
return ApiResponseHandler.error(error as Error);
}
}