UNPKG

@katalysttech/auth

Version:

A flexible authentication module for NestJS applications with JWT and refresh token support

63 lines (62 loc) 2.29 kB
import { Type } from '@nestjs/common'; import { DataSource } from 'typeorm'; import { IRefreshToken } from './refresh-token.interface'; export interface JwtConfig { secret: string; expiresIn: string | number; } export interface RefreshTokenConfig { secret: string; expiresIn: string | number; storage: { type: 'typeorm' | 'redis'; entity?: Type<IRefreshToken>; dataSource?: DataSource; redis?: { host: string; port: number; password?: string; db?: number; }; }; options?: { maxActiveSessions?: number; singleSession?: boolean; deviceTracking?: boolean; cleanupInterval?: number; revokeOnLogin?: boolean; }; maxActiveSessions?: number; } export interface SessionConfig { enabled: boolean; maxAge?: number; } export interface UserFields { passwordField: string; tokenFields: string[]; usernameField?: string; idField?: string; uuidField?: string; } export interface PasswordResetPayload { [key: string]: string; } export interface AuthOptions { jwt: JwtConfig; refreshToken: RefreshTokenConfig; session?: SessionConfig; userFields: UserFields; findUserByUsername: (username: string) => Promise<any | null>; findUserById: (id: string | number) => Promise<any | null>; storeRefreshToken?: (userId: string | number, tokenId: string, expiresAt: Date) => Promise<void>; validateRefreshToken?: (userId: string | number, tokenId: string) => Promise<boolean>; revokeRefreshToken?: (userId: string | number, tokenId: string) => Promise<void>; updateUserPassword?: (userId: string | number, hashedPassword: string) => Promise<any | void>; storeResetToken?: (userId: string | number, resetToken: string, expiresAt: Date) => Promise<any | void>; validateResetToken?: (userId: string | number, resetToken: string) => Promise<any>; clearResetToken?: (userId: string | number) => Promise<any>; findUserByResetToken?: (resetToken: string) => Promise<any | null>; findUserByLinkedinIdAndEmail?: (linkedInId: string, email: string) => Promise<any | null>; findUserByGoogleIdAndEmail?: (googleId: string, email: string) => Promise<any | null>; }