UNPKG

@open-condo/miniapp-utils

Version:

A set of helper functions / components / hooks used to build new condo apps fast

72 lines (69 loc) 2.84 kB
import { IncomingMessage, ServerResponse } from 'http'; import { UserinfoResponse } from 'openid-client'; type Session = Record<string, unknown> & { save: () => Promise<void>; destroy: () => Promise<void>; }; type SessionGetter = (req: IncomingMessage, res: ServerResponse) => Promise<Session>; type OIDCClientConfig = { serverUrl: string; clientId: string; clientSecret: string; scope?: string; clientOptions?: Record<string, unknown>; issuerOptions?: Record<string, unknown>; }; type LoggerType = { info: (data: unknown) => void; error: (data: unknown) => void; }; type OIDCCallbackData<UserInfo extends Record<string, unknown> = Record<string, never>> = { accessToken?: string; refreshToken?: string; idToken?: string; userInfo?: UserinfoResponse<UserInfo>; }; type ErrorHandler = (err: unknown, req: IncomingMessage, res: ServerResponse, next: NextFunction) => void; interface AbstractApp { get(endpoint: string, ...handlers: Array<RequestHandler | ErrorHandler>): void; } type MiddlewareOptions = { app: AbstractApp; apiPrefix?: string; }; type OnAuthSuccessHandler<UserInfo extends Record<string, unknown> = Record<string, never>> = (req: IncomingMessage, res: ServerResponse, data: OIDCCallbackData<UserInfo>) => void | Promise<void>; type OIDCMiddlewareOptions<UserInfo extends Record<string, unknown> = Record<string, never>> = { getSession: SessionGetter; oidcConfig: OIDCClientConfig; redirectUri: string | Array<string>; onAuthSuccess?: OnAuthSuccessHandler<UserInfo>; middlewareOptions?: MiddlewareOptions; onError?: ErrorHandler; logger?: LoggerType; }; type NextFunction = (err?: unknown) => void; type RequestHandler = (req: IncomingMessage, res: ServerResponse, next?: NextFunction) => void | Promise<void>; declare class OIDCMiddleware<UserInfo extends Record<string, unknown> = Record<string, never>> { private static OIDC_ID_TOKEN_KEY; private static OIDC_ACCESS_TOKEN_KEY; private static OIDC_REFRESH_TOKEN_KEY; private static OIDC_NEXT_URL_KEY; private static OIDC_CHECKS_KEY; private static OIDC_REDIRECT_URI_KEY; private static CHECK_SCHEMA; private readonly getSession; private readonly client; private readonly logger; private readonly redirectUris; private readonly onAuthSuccess?; private readonly onError?; private readonly middlewareOptions; private readonly scope?; static getQueryParams(req: IncomingMessage): URLSearchParams; constructor({ getSession, oidcConfig, redirectUri, logger, onAuthSuccess, onError, middlewareOptions, }: OIDCMiddlewareOptions<UserInfo>); private sendError; getAuthHandler(): RequestHandler; getCallbackHandler(): RequestHandler; prepareMiddleware(): AbstractApp | null; } export { OIDCMiddleware };