bb-inspired
Version:
Core library for BB-inspired NestJS backend
67 lines (66 loc) • 1.6 kB
TypeScript
export interface AuthUser {
id: string | number;
username?: string;
email?: string;
roles: string[];
permissions?: string[];
tenantId?: string | number;
sessionId?: string;
[key: string]: any;
}
export interface AuthRequest {
username: string;
password: string;
tenantId?: string | number;
rememberMe?: boolean;
}
export interface ExternalAuthOptions {
baseUrl: string;
apiKey?: string;
endpoints: {
validate: string;
verify: string;
refresh: string;
logout?: string;
};
timeout?: number;
retries?: number;
cache?: {
enabled: boolean;
ttl: number;
};
}
export interface AuthToken {
accessToken: string;
refreshToken?: string;
expiresIn: number;
tokenType: string;
}
export interface AuthValidationResult {
isValid: boolean;
user?: AuthUser;
error?: string;
}
export interface AuthVerificationResult {
isValid: boolean;
token?: AuthToken;
error?: string;
}
export interface AuthMiddlewareOptions {
externalAuth?: ExternalAuthOptions;
jwt: {
secret: string;
ignoreExpiration?: boolean;
};
excludePaths?: string[];
errorHandling?: {
throwUnauthorized?: boolean;
logErrors?: boolean;
};
}
export interface AuthProvider {
authenticate(credentials: AuthRequest): Promise<AuthToken>;
validateToken(token: string): Promise<AuthValidationResult>;
refreshToken(refreshToken: string): Promise<AuthToken>;
logout(token: string, userId?: string | number): Promise<boolean>;
}