a9bc31a6创建于 2025年12月7日历史提交
import { ApiProperty } from "@nestjs/swagger";

export type ApiTokenPayload = {
  type: 'api';
  email: string;
}
export type TokenPayload = ApiTokenPayload | AccessTokenPayload;
export type TokenPayloadBase = {
  jti: string;
  issueAt: string;
  ttl: number;
}
export type AccessTokenPayload = TokenPayloadBase & {
  id: number;
  email: string;
  refreshTokenJti: string;
}
export type RefreshTokenPayload = TokenPayloadBase & {
  id: number;
  email: string;
  accessTokenJti: string;
}

export class TokenPair {
  @ApiProperty({
    description: '访问令牌, 标准的JWT格式, 不带 `Bearer `',
  })
  accessToken: string;
  @ApiProperty({
    description: '刷新令牌, 标准的JWT格式, 不带 `Bearer `'
  })
  refreshToken: string;
  @ApiProperty({
    description: '访问令牌有效期, 单位是毫秒'
  })
  accessTokenTTL: number;
  @ApiProperty({
    description: '刷新令牌有效期, 单位是毫秒'
  })
  refreshTokenTTL: number;
}

export class ApiToken {
  @ApiProperty({})
  token: string;
  @ApiProperty({})
  tokenId: string;
  @ApiProperty({
    description: '有效期'
  })
  expiresIn: number;
}