bb-inspired
Version:
Core library for BB-inspired NestJS backend
50 lines (49 loc) • 1.68 kB
TypeScript
import { JwtService as NestJwtService } from '@nestjs/jwt';
import { AuthOptions } from './auth.module';
export interface JwtPayload {
sub: string | number;
username?: string;
email?: string;
roles?: string[];
permissions?: string[];
tenantId?: string | number;
sessionId?: string;
type?: 'access' | 'refresh' | 'websocket';
[key: string]: any;
}
export interface JwtExport {
accessTokens: string[];
refreshTokens: string[];
metadata: {
exportedAt: string;
version: string;
};
}
export interface WsAuthPayload {
token: string;
userId: string | number;
connectionId?: string;
}
export interface TokenResponse {
accessToken: string;
refreshToken?: string;
expiresIn: number;
tokenType: string;
}
export declare class JwtService {
private readonly options;
private readonly jwtService;
private readonly logger;
constructor(options: AuthOptions, jwtService: NestJwtService);
generateToken(payload: JwtPayload): Promise<string>;
generateRefreshToken(payload: Omit<JwtPayload, 'type'>): Promise<string>;
generateTokenResponse(payload: Omit<JwtPayload, 'type'>): Promise<TokenResponse>;
verifyToken(token: string): Promise<JwtPayload>;
decodeToken(token: string): JwtPayload;
refreshAccessToken(refreshToken: string): Promise<TokenResponse>;
exportUserTokens(userId: string | number, exportPath?: string): Promise<JwtExport>;
importUserTokens(importData: JwtExport | string): Promise<boolean>;
private getUserTokens;
generateWsToken(payload: WsAuthPayload): Promise<string>;
verifyWsToken(token: string): Promise<JwtPayload>;
}