Files
aiartstudio/server/api/auth/ready.get.ts
T
2026-04-26 01:13:38 +08:00

55 lines
1.5 KiB
TypeScript

// server/api/auth/ready.get.ts - 登录后环境准备接口:确保当前用户已有可用的 AIArtStudio Token。
import type { IUserReadyData } from "#shared/types";
import {
clearNewApiAuthCookies,
createApiLogger,
createErrorResponse,
createSuccessResponse,
createUpstreamErrorResponse,
ensureAiArtStudioToken,
isUnauthorizedError,
toSafeLogError
} from "~~/server/utils";
/**
* GET /api/auth/ready
*
* 流程:
* 1. 读取当前登录用户的 NewAPI session。
* 2. 检查是否存在启用且未删除的 AIArtStudio Token。
* 3. 不存在时按固定参数创建 Token。
* 4. 只返回环境是否准备完成,不返回完整 key 或脱敏 key。
* 5. 登录态失效时清理本地 cookie 并返回 401。
*/
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, "环境准备失败");
}
});