casbin
Version:
An authorization library that supports access control models like ACL, RBAC, ABAC in Node.JS
54 lines (53 loc) • 2.23 kB
TypeScript
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;