UNPKG

casbin

Version:

An authorization library that supports access control models like ACL, RBAC, ABAC in Node.JS

54 lines (53 loc) 2.23 kB
import * as rbac from '../rbac'; import { ConfigInterface } from '../config'; import { Assertion } from './assertion'; export declare const sectionNameMap: { [index: string]: string; }; export declare enum PolicyOp { PolicyAdd = 0, PolicyRemove = 1 } export declare const requiredSections: string[]; export declare class Model { model: Map<string, Map<string, Assertion>>; /** * constructor is the constructor for Model. */ constructor(); private loadAssertion; private getKeySuffix; private loadSection; addDef(sec: string, key: string, value: string): boolean; loadModel(path: string): void; loadModelFromText(text: string): void; loadModelFromConfig(cfg: ConfigInterface): void; private hasSection; printModel(): void; buildIncrementalRoleLinks(rm: rbac.RoleManager, op: PolicyOp, sec: string, ptype: string, rules: string[][]): Promise<void>; buildRoleLinks(rm: rbac.RoleManager): Promise<void>; clearPolicy(): void; getPolicy(sec: string, key: string): string[][]; hasPolicy(sec: string, key: string, rule: string[]): boolean; addPolicy(sec: string, key: string, rule: string[]): boolean; addPolicies(sec: string, ptype: string, rules: string[][]): [boolean, string[][]]; removePolicy(sec: string, key: string, rule: string[]): boolean; removePolicies(sec: string, ptype: string, rules: string[][]): [boolean, string[][]]; getFilteredPolicy(sec: string, key: string, fieldIndex: number, ...fieldValues: string[]): string[][]; removeFilteredPolicy(sec: string, key: string, fieldIndex: number, ...fieldValues: string[]): [boolean, string[][]]; getValuesForFieldInPolicy(sec: string, key: string, fieldIndex: number): string[]; getValuesForFieldInPolicyAllTypes(sec: string, fieldIndex: number): string[]; printPolicy(): void; } /** * newModel creates a model. */ export declare function newModel(...text: string[]): Model; /** * newModelFromFile creates a model from a .CONF file. */ export declare function newModelFromFile(path: string): Model; /** * newModelFromString creates a model from a string which contains model text. */ export declare function newModelFromString(text: string): Model;