@authxyz/core
Version:
Authxyz core package for authentication implementations and providers.
40 lines (39 loc) • 1.46 kB
TypeScript
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 };