fix: 登录响应结构与 API 文档对齐
- LoginResponse 的 tokens 嵌入 tokens 对象,移除平铺的 accessToken/refreshToken - user 移除 xpTotal/streakDays(文档中未定义) - refreshJwt 同时返回 accessToken 和 refreshToken,复用 signTokens
This commit is contained in:
parent
b2e5b8f789
commit
6507d9e9ac
@ -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<JwtPayload>(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');
|
||||
}
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user