37 lines
950 B
TypeScript
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
|
|
);
|
|
};
|