feat: 多功能更新

This commit is contained in:
2026-04-26 00:39:28 +08:00
parent abd1b03529
commit e26e2f5491
26 changed files with 992 additions and 330 deletions
+24 -2
View File
@@ -1,9 +1,11 @@
import type { IUserMeData } from "#shared/types";
import {
clearNewApiAuthCookies,
createApiLogger,
createErrorResponse,
createSuccessResponse,
newApiAuthedFetch,
toSafeLogError,
upsertUserSnapshot
} from "~~/server/utils";
@@ -24,6 +26,9 @@ interface INewApiSelfUserData extends IUserMeData {
}
export default defineEventHandler(async (event) => {
const logger = createApiLogger("auth.me");
logger.info("开始");
try {
// 从本站 httpOnly cookie 读取登录态,并转发给 NewAPI 查询当前用户。
const result = await newApiAuthedFetch<NewApiUserResponse>(
@@ -38,18 +43,35 @@ export default defineEventHandler(async (event) => {
if (!normalized.user) {
// 上游业务失败代表当前 cookie 不再可靠,清理后返回统一 401。
clearNewApiAuthCookies(event);
logger.warn("登录状态无效", {
upstreamMessage: normalized.message
});
return createErrorResponse(401, normalized.message);
}
upsertUserSnapshot(normalized.user).catch(() => {});
upsertUserSnapshot(normalized.user).catch((error) => {
logger.error("保存用户快照失败", {
userId: normalized.user?.id,
error: toSafeLogError(error)
});
});
logger.done("成功", {
userId: normalized.user.id,
role: normalized.user.role,
status: normalized.user.status
});
return createSuccessResponse<IUserMeData>(
normalized.user,
normalized.message
);
} catch {
} catch (error) {
// cookie 缺失或上游鉴权异常时统一视为未登录。
clearNewApiAuthCookies(event);
logger.warn("未登录或登录态失效", {
error: toSafeLogError(error)
});
return createErrorResponse(401, "未登录");
}
});