From 6507d9e9acd4c704dd3e3d7bdf6efbf52fe7b916 Mon Sep 17 00:00:00 2001 From: Wang Zhuoxuan Date: Mon, 25 May 2026 00:37:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=99=BB=E5=BD=95=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=B8=8E=20API=20=E6=96=87=E6=A1=A3=E5=AF=B9?= =?UTF-8?q?=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LoginResponse 的 tokens 嵌入 tokens 对象,移除平铺的 accessToken/refreshToken - user 移除 xpTotal/streakDays(文档中未定义) - refreshJwt 同时返回 accessToken 和 refreshToken,复用 signTokens --- src/services/auth/jwt.ts | 18 ++++++------------ src/types/auth.ts | 8 ++++---- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/services/auth/jwt.ts b/src/services/auth/jwt.ts index 493ee96..737e6dc 100644 --- a/src/services/auth/jwt.ts +++ b/src/services/auth/jwt.ts @@ -18,15 +18,15 @@ export function buildLoginResponse( refreshToken: string, ): LoginResponse { return { - accessToken, - refreshToken, user: { id: user.id, nickname: user.nickname ?? null, avatarUrl: user.avatarUrl ?? null, tier: user.tier ?? 'free', - xpTotal: user.xpTotal ?? 0, - streakDays: user.streakDays ?? 0, + }, + tokens: { + accessToken, + refreshToken, }, }; } @@ -90,13 +90,7 @@ export async function findOrCreateHuawei( return buildLoginResponse(user, tokens.accessToken, tokens.refreshToken); } -export async function refreshJwt(app: FastifyInstance, refreshToken: string): Promise<{ accessToken: string }> { +export async function refreshJwt(app: FastifyInstance, refreshToken: string): Promise<{ accessToken: string; refreshToken: string }> { const decoded = app.jwt.verify(refreshToken); - const payload: JwtPayload = { - userId: decoded.userId, - authType: decoded.authType, - tier: decoded.tier, - }; - const accessToken = app.jwt.sign(payload, { expiresIn: '1h' }); - return { accessToken }; + return signTokens(app, decoded.userId, decoded.authType, decoded.tier ?? 'free'); } diff --git a/src/types/auth.ts b/src/types/auth.ts index b6f4023..34a8af2 100644 --- a/src/types/auth.ts +++ b/src/types/auth.ts @@ -8,15 +8,15 @@ export interface JwtPayload { } export interface LoginResponse { - accessToken: string; - refreshToken: string; user: { id: string; nickname: string | null; avatarUrl: string | null; tier: string; - xpTotal: number; - streakDays: number; + }; + tokens: { + accessToken: string; + refreshToken: string; }; }