UNPKG

@authxyz/core

Version:

Authxyz core package for authentication implementations and providers.

40 lines (39 loc) 1.46 kB
import type { Response, Request, NextFunction } from "express"; type ErrorHandler = (error: Error) => { message: string; status: number; }; type LocalMiddlewareRegister = (req: Request, res: Response, next: NextFunction) => Promise<any> | any; interface ProtectedMiddlewareOptions { secret: string; adapter: DatabaseAdapter; validationMethod: "JWT" | "COOKIE"; } export interface AdapterMethodResult { status: number; message: string; data: any; } type DatabaseAdapter = { addUser: (data: any) => Promise<any>; getUser: (data: any) => Promise<any>; updateUser: (data: { id: string; update: Object; }) => Promise<any>; handlers: ErrorHandler[]; }; type Middleware<T> = (req: Request, res: Response, next?: NextFunction) => Promise<MiddlewareProcessAcknowlege<T>>; interface MiddlewareProcessAcknowlege<T> { status: boolean | "error"; data: T; } declare function middlewareProtect(roles: string[], secret: string, adapter: DatabaseAdapter, validationMethod: "JWT" | "COOKIE"): Middleware<any>; declare function middlewareValidateAuthorization({ secret, method, }: { secret: string; method: "JWT" | "COOKIE"; }): Middleware<null | { id: string; }>; declare function useProtect<T extends string>(roles: T[], { secret, adapter, validationMethod }: ProtectedMiddlewareOptions): LocalMiddlewareRegister; export { middlewareValidateAuthorization, middlewareProtect, useProtect };