// 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( 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, "环境准备失败"); } });