├── .gitignore ├── .log24419 ├── .npmignore ├── .travis.yml ├── LICENSE.md ├── README.md ├── examples ├── abac.ts └── custom-condition-modifier-manager.ts ├── package.json ├── src ├── classes │ ├── access-authorizer.ts │ ├── access-control.ts │ ├── access.ts │ ├── condition-evaluation.ts │ ├── condition-evaluator.ts │ ├── condition-modifiers-manager.ts │ ├── condition-operators-manager.ts │ ├── errors │ │ ├── invalid-condition-value.ts │ │ └── invalid-enviroment-value.ts │ ├── memory-store.ts │ └── subject.ts ├── constants │ ├── bang.ts │ ├── condition-evaluation-error-code.ts │ ├── condition-evaluation-result-code.ts │ ├── condition-modifier.ts │ ├── condition-operator.ts │ ├── decision-code.ts │ ├── permission-effect.ts │ ├── property-separator.ts │ ├── resource-parts-separator.ts │ ├── unwind.ts │ └── wild-card.ts ├── index.ts ├── interfaces │ ├── access-authorizer.ts │ ├── access-control.ts │ ├── access.ts │ ├── attribute.ts │ ├── condition-evaluation.ts │ ├── condition-evaluator.ts │ ├── condition-modifiers-manager.ts │ ├── condition-operators-manager.ts │ ├── store.ts │ └── subject.ts ├── types │ ├── access-constructor-options.ts │ ├── access-control-manager-constructor-options.ts │ ├── access-factory.ts │ ├── access-journal.ts │ ├── access-json.ts │ ├── action.ts │ ├── attribute-name.ts │ ├── authorizer-constructor-options.ts │ ├── condition-evaluation-error-details.ts │ ├── condition-evaluation-factory.ts │ ├── condition-evaluation-json.ts │ ├── condition-evaluator-constructor-options.ts │ ├── condition-modifier-handler.ts │ ├── condition-operator-handler.ts │ ├── condition-value.ts │ ├── create-permission.ts │ ├── environment.ts │ ├── permission-condition-operator-description.ts │ ├── permission-condition.ts │ ├── permission-id.ts │ ├── permission-or-id.ts │ ├── permission.ts │ ├── resource.ts │ ├── role.ts │ ├── subject-or-principal.ts │ ├── subject-principal.ts │ └── wild-card.ts └── utils │ ├── any-implies.ts │ ├── blanks-to-wild-cards.ts │ ├── implies.ts │ ├── is-if-exists-modifier.ts │ ├── is-wild-card.ts │ ├── keys.ts │ ├── parse-condition-value.ts │ ├── to-permission-id.ts │ └── to-subject-principal.ts ├── test ├── classes │ ├── access-authorizer.test.ts │ ├── access-control.test.ts │ ├── access.test.ts │ ├── condition-evaluator.test.ts │ ├── condition-modifiers-manager.test.ts │ ├── condition-operators-manager.test.ts │ ├── memory-store.test.ts │ └── subject.test.ts ├── global.d.ts ├── mocha.opts ├── setup.ts └── utils │ ├── any-implies.test.ts │ ├── blanks-to-wild-cards.test.ts │ ├── implies.test.ts │ ├── is-if-exists-operator.test.ts │ ├── keys.test.ts │ └── to-subject-principal.test.ts ├── tsconfig.json └── tslint.json /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/.gitignore -------------------------------------------------------------------------------- /.log24419: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/.log24419 -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/.npmignore -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/.travis.yml -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/README.md -------------------------------------------------------------------------------- /examples/abac.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/examples/abac.ts -------------------------------------------------------------------------------- /examples/custom-condition-modifier-manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/examples/custom-condition-modifier-manager.ts -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/package.json -------------------------------------------------------------------------------- /src/classes/access-authorizer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/access-authorizer.ts -------------------------------------------------------------------------------- /src/classes/access-control.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/access-control.ts -------------------------------------------------------------------------------- /src/classes/access.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/access.ts -------------------------------------------------------------------------------- /src/classes/condition-evaluation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/condition-evaluation.ts -------------------------------------------------------------------------------- /src/classes/condition-evaluator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/condition-evaluator.ts -------------------------------------------------------------------------------- /src/classes/condition-modifiers-manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/condition-modifiers-manager.ts -------------------------------------------------------------------------------- /src/classes/condition-operators-manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/condition-operators-manager.ts -------------------------------------------------------------------------------- /src/classes/errors/invalid-condition-value.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/errors/invalid-condition-value.ts -------------------------------------------------------------------------------- /src/classes/errors/invalid-enviroment-value.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/errors/invalid-enviroment-value.ts -------------------------------------------------------------------------------- /src/classes/memory-store.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/memory-store.ts -------------------------------------------------------------------------------- /src/classes/subject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/classes/subject.ts -------------------------------------------------------------------------------- /src/constants/bang.ts: -------------------------------------------------------------------------------- 1 | export const BANG = '!'; 2 | -------------------------------------------------------------------------------- /src/constants/condition-evaluation-error-code.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/constants/condition-evaluation-error-code.ts -------------------------------------------------------------------------------- /src/constants/condition-evaluation-result-code.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/constants/condition-evaluation-result-code.ts -------------------------------------------------------------------------------- /src/constants/condition-modifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/constants/condition-modifier.ts -------------------------------------------------------------------------------- /src/constants/condition-operator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/constants/condition-operator.ts -------------------------------------------------------------------------------- /src/constants/decision-code.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/constants/decision-code.ts -------------------------------------------------------------------------------- /src/constants/permission-effect.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/constants/permission-effect.ts -------------------------------------------------------------------------------- /src/constants/property-separator.ts: -------------------------------------------------------------------------------- 1 | export const PROPERTY_SEPARATOR = '.'; 2 | -------------------------------------------------------------------------------- /src/constants/resource-parts-separator.ts: -------------------------------------------------------------------------------- 1 | export const RESOURCE_PARTS_SEPARATOR = ':'; 2 | -------------------------------------------------------------------------------- /src/constants/unwind.ts: -------------------------------------------------------------------------------- 1 | export const UNWIND = '[]'; 2 | -------------------------------------------------------------------------------- /src/constants/wild-card.ts: -------------------------------------------------------------------------------- 1 | export const WILD_CARD = '*'; 2 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/index.ts -------------------------------------------------------------------------------- /src/interfaces/access-authorizer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/access-authorizer.ts -------------------------------------------------------------------------------- /src/interfaces/access-control.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/access-control.ts -------------------------------------------------------------------------------- /src/interfaces/access.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/access.ts -------------------------------------------------------------------------------- /src/interfaces/attribute.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/attribute.ts -------------------------------------------------------------------------------- /src/interfaces/condition-evaluation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/condition-evaluation.ts -------------------------------------------------------------------------------- /src/interfaces/condition-evaluator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/condition-evaluator.ts -------------------------------------------------------------------------------- /src/interfaces/condition-modifiers-manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/condition-modifiers-manager.ts -------------------------------------------------------------------------------- /src/interfaces/condition-operators-manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/condition-operators-manager.ts -------------------------------------------------------------------------------- /src/interfaces/store.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/store.ts -------------------------------------------------------------------------------- /src/interfaces/subject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/interfaces/subject.ts -------------------------------------------------------------------------------- /src/types/access-constructor-options.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/access-constructor-options.ts -------------------------------------------------------------------------------- /src/types/access-control-manager-constructor-options.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/access-control-manager-constructor-options.ts -------------------------------------------------------------------------------- /src/types/access-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/access-factory.ts -------------------------------------------------------------------------------- /src/types/access-journal.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/access-journal.ts -------------------------------------------------------------------------------- /src/types/access-json.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/access-json.ts -------------------------------------------------------------------------------- /src/types/action.ts: -------------------------------------------------------------------------------- 1 | export type TAction = string; 2 | -------------------------------------------------------------------------------- /src/types/attribute-name.ts: -------------------------------------------------------------------------------- 1 | export type TAttributeName = string; 2 | -------------------------------------------------------------------------------- /src/types/authorizer-constructor-options.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/authorizer-constructor-options.ts -------------------------------------------------------------------------------- /src/types/condition-evaluation-error-details.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/condition-evaluation-error-details.ts -------------------------------------------------------------------------------- /src/types/condition-evaluation-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/condition-evaluation-factory.ts -------------------------------------------------------------------------------- /src/types/condition-evaluation-json.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/condition-evaluation-json.ts -------------------------------------------------------------------------------- /src/types/condition-evaluator-constructor-options.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/condition-evaluator-constructor-options.ts -------------------------------------------------------------------------------- /src/types/condition-modifier-handler.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/condition-modifier-handler.ts -------------------------------------------------------------------------------- /src/types/condition-operator-handler.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/condition-operator-handler.ts -------------------------------------------------------------------------------- /src/types/condition-value.ts: -------------------------------------------------------------------------------- 1 | export type TConditionValue = string; 2 | -------------------------------------------------------------------------------- /src/types/create-permission.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/create-permission.ts -------------------------------------------------------------------------------- /src/types/environment.ts: -------------------------------------------------------------------------------- 1 | export type TEnvironment = { [key: string]: any }; 2 | -------------------------------------------------------------------------------- /src/types/permission-condition-operator-description.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/permission-condition-operator-description.ts -------------------------------------------------------------------------------- /src/types/permission-condition.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/permission-condition.ts -------------------------------------------------------------------------------- /src/types/permission-id.ts: -------------------------------------------------------------------------------- 1 | export type TPermissionId = string | number; 2 | -------------------------------------------------------------------------------- /src/types/permission-or-id.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/permission-or-id.ts -------------------------------------------------------------------------------- /src/types/permission.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/permission.ts -------------------------------------------------------------------------------- /src/types/resource.ts: -------------------------------------------------------------------------------- 1 | export type TResource = string; 2 | -------------------------------------------------------------------------------- /src/types/role.ts: -------------------------------------------------------------------------------- 1 | export type TRole = string; 2 | -------------------------------------------------------------------------------- /src/types/subject-or-principal.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/types/subject-or-principal.ts -------------------------------------------------------------------------------- /src/types/subject-principal.ts: -------------------------------------------------------------------------------- 1 | export type TSubjectPrincipal = string | number; 2 | -------------------------------------------------------------------------------- /src/types/wild-card.ts: -------------------------------------------------------------------------------- 1 | export type TWildCard = '*'; 2 | -------------------------------------------------------------------------------- /src/utils/any-implies.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/any-implies.ts -------------------------------------------------------------------------------- /src/utils/blanks-to-wild-cards.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/blanks-to-wild-cards.ts -------------------------------------------------------------------------------- /src/utils/implies.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/implies.ts -------------------------------------------------------------------------------- /src/utils/is-if-exists-modifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/is-if-exists-modifier.ts -------------------------------------------------------------------------------- /src/utils/is-wild-card.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/is-wild-card.ts -------------------------------------------------------------------------------- /src/utils/keys.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/keys.ts -------------------------------------------------------------------------------- /src/utils/parse-condition-value.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/parse-condition-value.ts -------------------------------------------------------------------------------- /src/utils/to-permission-id.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/to-permission-id.ts -------------------------------------------------------------------------------- /src/utils/to-subject-principal.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/src/utils/to-subject-principal.ts -------------------------------------------------------------------------------- /test/classes/access-authorizer.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/access-authorizer.test.ts -------------------------------------------------------------------------------- /test/classes/access-control.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/access-control.test.ts -------------------------------------------------------------------------------- /test/classes/access.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/access.test.ts -------------------------------------------------------------------------------- /test/classes/condition-evaluator.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/condition-evaluator.test.ts -------------------------------------------------------------------------------- /test/classes/condition-modifiers-manager.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/condition-modifiers-manager.test.ts -------------------------------------------------------------------------------- /test/classes/condition-operators-manager.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/condition-operators-manager.test.ts -------------------------------------------------------------------------------- /test/classes/memory-store.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/memory-store.test.ts -------------------------------------------------------------------------------- /test/classes/subject.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/classes/subject.test.ts -------------------------------------------------------------------------------- /test/global.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/global.d.ts -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/mocha.opts -------------------------------------------------------------------------------- /test/setup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/setup.ts -------------------------------------------------------------------------------- /test/utils/any-implies.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/utils/any-implies.test.ts -------------------------------------------------------------------------------- /test/utils/blanks-to-wild-cards.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/utils/blanks-to-wild-cards.test.ts -------------------------------------------------------------------------------- /test/utils/implies.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/utils/implies.test.ts -------------------------------------------------------------------------------- /test/utils/is-if-exists-operator.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/utils/is-if-exists-operator.test.ts -------------------------------------------------------------------------------- /test/utils/keys.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/utils/keys.test.ts -------------------------------------------------------------------------------- /test/utils/to-subject-principal.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/test/utils/to-subject-principal.test.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tselect-npm/access-control/HEAD/tslint.json --------------------------------------------------------------------------------