UNPKG

@labshare/services-auth

Version:

Loopback 4 plugin for resource scope-based HTTP route authz

41 lines (40 loc) 1.77 kB
/// <reference types="express" /> import { Getter, Provider, Constructor } from "@loopback/context"; import { Request, Response, ParseParams, FindRoute } from "@loopback/rest"; import { AuthenticateFn } from "../keys"; import { type GetVerificationKey, type IsRevoked } from "express-jwt"; export interface RequestWithUser extends Request { user?: {}; } /** * @description Provider of a function which authenticates * @example `context.bind('authentication_key') * .toProvider(AuthenticateActionProvider)` */ export declare class AuthenticateActionProvider implements Provider<AuthenticateFn> { readonly getConfig: Getter<{ [key: string]: any; }>; private readonly getController; private readonly getMethod; private readonly secretProvider; private readonly isRevokedCallbackProvider; private readonly audienceProvider; private readonly parseParams; private readonly findRoute; constructor(getConfig: Getter<{ [key: string]: any; }>, getController: Getter<Constructor<{}>>, getMethod: Getter<string>, secretProvider: Getter<GetVerificationKey>, isRevokedCallbackProvider: Getter<IsRevoked>, audienceProvider: Getter<any>, parseParams: ParseParams, findRoute: FindRoute); value(): AuthenticateFn; /** * The implementation of authenticate() sequence action. * @param request The incoming request provided by the REST layer * @param response The response provided by the REST layer */ action(request: RequestWithUser, response: Response): Promise<any>; /** * @description Validates Resource Scopes required by an API definition against the user's bearer token scope claim. * @param {string[]} expectedScopes */ private validateResourceScopes; }