@labshare/services-auth
Version:
Loopback 4 plugin for resource scope-based HTTP route authz
41 lines (40 loc) • 1.77 kB
TypeScript
/// <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;
}