44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import type { IUserReadyData } from "#shared/types";
|
|
import {
|
|
clearNewApiAuthCookies,
|
|
createApiLogger,
|
|
createErrorResponse,
|
|
createSuccessResponse,
|
|
createUpstreamErrorResponse,
|
|
ensureAiArtStudioToken,
|
|
isUnauthorizedError,
|
|
toSafeLogError
|
|
} from "~~/server/utils";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const logger = createApiLogger("auth.ready");
|
|
logger.info("开始");
|
|
|
|
try {
|
|
const result = await ensureAiArtStudioToken(event);
|
|
|
|
logger.done("成功", {
|
|
ready: result.ready,
|
|
created: result.created
|
|
});
|
|
|
|
return createSuccessResponse<IUserReadyData>(
|
|
result,
|
|
result.created ? "环境初始化完成" : "环境已准备"
|
|
);
|
|
} catch (error) {
|
|
if (isUnauthorizedError(error)) {
|
|
clearNewApiAuthCookies(event);
|
|
logger.warn("未登录或登录态失效", {
|
|
error: toSafeLogError(error)
|
|
});
|
|
return createErrorResponse(401, "未登录");
|
|
}
|
|
|
|
logger.error("失败", {
|
|
error: toSafeLogError(error)
|
|
});
|
|
return createUpstreamErrorResponse(error, "环境准备失败");
|
|
}
|
|
});
|