UNPKG

a-seal

Version:
58 lines (57 loc) 1.45 kB
import { Request, Response, NextFunction } from 'express'; export declare const ANY = "*"; export declare const ANON_USER: { role: string; }; type Rule = { resource: RegExp; actions: string[]; roles: string[]; scope?: string; }; export type MiddlewareOpts = { anon?: string; }; export interface AuthenticatedRequest extends Request { user?: { role: string; } | null; scope?: string; } export declare class Acl { private _rules; private findRule; get rules(): Rule[]; /** * Add a new rule, starting with the resource + action to match * @param resource * @returns {{onlyAllow: onlyAllow}} */ match(resource: RegExp): { for: (actions: string[]) => { allow: (roles: string[]) => { as: (scope: string) => Rule; }; }; }; /** * Loops through the acls in order added looking for a resource pattern match. * Grants permission if the role is found * @param role * @param resource * @param action * @returns {boolean} */ isAllowed(role: string, resource: string, action: string): boolean; /** * Express middleware * @param {*} opts */ middleware(opts: MiddlewareOpts): (req: AuthenticatedRequest, res: Response, next: NextFunction) => void; /** * Clear all rules */ reset(): void; } declare const acl: Acl; export default acl;