Files
aiartstudio/server/api/auth/ready.get.ts
T

37 lines
950 B
TypeScript

import type { IUserReadyData } from "#shared/types";
export default defineEventHandler(async (event) => {
try {
const result = await ensureAiArtStudioToken(event);
return createSuccessResponse<IUserReadyData>(
result,
result.created ? "环境初始化完成" : "环境已准备"
);
} catch (error) {
if (isUnauthorizedError(error)) {
clearNewApiAuthCookies(event);
return createErrorResponse(401, "未登录");
}
return createUpstreamErrorResponse(error, "环境准备失败");
}
});
/** 鉴权失败时清理本地 cookie,避免继续携带失效的 NewAPI 登录态 */
const isUnauthorizedError = (error: unknown): boolean => {
const fetchError = error as {
response?: {
status?: number;
};
status?: number;
statusCode?: number;
};
return (
fetchError.statusCode === 401 ||
fetchError.status === 401 ||
fetchError.response?.status === 401
);
};