@bravobit/bb-foundation 0.24.0 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
85
85
  }], bbPermissionMode: [{
86
86
  type: Input
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3Blcm1pc3Npb25zL3NyYy9saWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFtQixLQUFLLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQU8vRCxNQUFNLE9BQU8sWUFBWTtJQW9DckIsWUFBb0IsWUFBeUIsRUFDekIsWUFBOEIsRUFDOUIsaUJBQW1DO1FBRm5DLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBcEN2RCxhQUFhO1FBQ0wscUJBQWdCLEdBQTRCLElBQUksQ0FBQztRQUV6RCxhQUFhO1FBQ0wsaUJBQVksR0FBZ0MsSUFBSSxDQUFDO1FBQ2pELGlCQUFZLEdBQWdDLElBQUksQ0FBQztRQUV6RCxRQUFRO1FBQ0EsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBaUIsS0FBSyxDQUFDLENBQUM7UUFxQjVELGlCQUFpQjtRQUNULGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUszQyxDQUFDO0lBekJELElBQ0ksWUFBWSxDQUFDLEtBQXdCO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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c0JBRG5CLEtBQUs7Z0JBUUYsZ0JBQWdCO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uTW9kZX0gZnJvbSAnLi4vcGVybWlzc2lvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7UGVybWlzc2lvbnN9IGZyb20gJy4uL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYlBlcm1pc3Npb25dJ1xufSlcbmV4cG9ydCBjbGFzcyBCYlBlcm1pc3Npb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvLyBUZW1wbGF0ZXMuXG4gICAgcHJpdmF0ZSBfZWxzZVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBWaWV3IHJlZnMuXG4gICAgcHJpdmF0ZSBfdGhlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfZWxzZVZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBEYXRhLlxuICAgIHByaXZhdGUgX3ZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcGVybWlzc2lvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG4gICAgcHJpdmF0ZSBfbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBlcm1pc3Npb25Nb2RlPignYW5kJyk7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBiYlBlcm1pc3Npb24odmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICAgIHRoaXMuX3Blcm1pc3Npb24kLm5leHQocGVybWlzc2lvbnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBiYlBlcm1pc3Npb25FbHNlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuYXNzZXJ0VGVtcGxhdGUoJ2JiUGVybWlzc2lvbkVsc2UnLCB0ZW1wbGF0ZVJlZik7XG4gICAgICAgIHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBiYlBlcm1pc3Npb25Nb2RlKG1vZGU6IFBlcm1pc3Npb25Nb2RlKSB7XG4gICAgICAgIHRoaXMuX21vZGUkLm5leHQobW9kZSk7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaXB0aW9ucy5cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBjaGVjayQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wZXJtaXNzaW9uJCwgdGhpcy5fbW9kZSRdKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbcGVybWlzc2lvbnMsIG1vZGVdKSA9PiB0aGlzLl9wZXJtaXNzaW9ucy5oYXMocGVybWlzc2lvbnMsIHttb2RlfSkpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNoZWNrJC5zdWJzY3JpYmUodmFsaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmFsaWQgPSB2YWxpZDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3KCkge1xuICAgICAgICBpZiAodGhpcy5fdmFsaWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGhlblZpZXdSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxzZVZpZXdSZWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aGVuVmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Vsc2VWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RoZW5WaWV3UmVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZWxzZVRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vsc2VWaWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fZWxzZVRlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzc2VydFRlbXBsYXRlKHByb3BlcnR5OiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCkge1xuICAgICAgICBjb25zdCBpc1RlbXBsYXRlUmVmT3JOdWxsID0gISEoIXRlbXBsYXRlUmVmIHx8IHRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyk7XG4gICAgICAgIGlmICghaXNUZW1wbGF0ZVJlZk9yTnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5fSBtdXN0IGJlIGEgVGVtcGxhdGVSZWYuYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYmJQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYmJQZXJtaXNzaW9uRWxzZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYmJQZXJtaXNzaW9uTW9kZTogUGVybWlzc2lvbk1vZGU7XG5cbn1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3Blcm1pc3Npb25zL3NyYy9saWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFtQixLQUFLLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQU8vRCxNQUFNLE9BQU8sWUFBWTtJQW9DckIsWUFBb0IsWUFBeUIsRUFDekIsWUFBOEIsRUFDOUIsaUJBQW1DO1FBRm5DLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBcEN2RCxhQUFhO1FBQ0wscUJBQWdCLEdBQTRCLElBQUksQ0FBQztRQUV6RCxhQUFhO1FBQ0wsaUJBQVksR0FBZ0MsSUFBSSxDQUFDO1FBQ2pELGlCQUFZLEdBQWdDLElBQUksQ0FBQztRQUV6RCxRQUFRO1FBQ0EsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBa0IsS0FBSyxDQUFDLENBQUM7UUFxQjdELGlCQUFpQjtRQUNULGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUszQyxDQUFDO0lBekJELElBQ0ksWUFBWSxDQUFDLEtBQXdCO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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c0JBRG5CLEtBQUs7Z0JBUUYsZ0JBQWdCO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uc01vZGV9IGZyb20gJy4uL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5pbXBvcnQge1Blcm1pc3Npb25zfSBmcm9tICcuLi9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYmJQZXJtaXNzaW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgQmJQZXJtaXNzaW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLy8gVGVtcGxhdGVzLlxuICAgIHByaXZhdGUgX2Vsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gVmlldyByZWZzLlxuICAgIHByaXZhdGUgX3RoZW5WaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX2Vsc2VWaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gRGF0YS5cbiAgICBwcml2YXRlIF92YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3Blcm1pc3Npb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuICAgIHByaXZhdGUgX21vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQZXJtaXNzaW9uc01vZGU+KCdhbmQnKTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJiUGVybWlzc2lvbih2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgICAgdGhpcy5fcGVybWlzc2lvbiQubmV4dChwZXJtaXNzaW9ucyk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJiUGVybWlzc2lvbkVsc2UodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5hc3NlcnRUZW1wbGF0ZSgnYmJQZXJtaXNzaW9uRWxzZScsIHRlbXBsYXRlUmVmKTtcbiAgICAgICAgdGhpcy5fZWxzZVRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gICAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJiUGVybWlzc2lvbk1vZGUobW9kZTogUGVybWlzc2lvbnNNb2RlKSB7XG4gICAgICAgIHRoaXMuX21vZGUkLm5leHQobW9kZSk7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaXB0aW9ucy5cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBjaGVjayQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wZXJtaXNzaW9uJCwgdGhpcy5fbW9kZSRdKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbcGVybWlzc2lvbnMsIG1vZGVdKSA9PiB0aGlzLl9wZXJtaXNzaW9ucy5oYXMocGVybWlzc2lvbnMsIHttb2RlfSkpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNoZWNrJC5zdWJzY3JpYmUodmFsaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmFsaWQgPSB2YWxpZDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3KCkge1xuICAgICAgICBpZiAodGhpcy5fdmFsaWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGhlblZpZXdSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxzZVZpZXdSZWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aGVuVmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Vsc2VWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RoZW5WaWV3UmVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZWxzZVRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vsc2VWaWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fZWxzZVRlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzc2VydFRlbXBsYXRlKHByb3BlcnR5OiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCkge1xuICAgICAgICBjb25zdCBpc1RlbXBsYXRlUmVmT3JOdWxsID0gISEoIXRlbXBsYXRlUmVmIHx8IHRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyk7XG4gICAgICAgIGlmICghaXNUZW1wbGF0ZVJlZk9yTnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5fSBtdXN0IGJlIGEgVGVtcGxhdGVSZWYuYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYmJQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYmJQZXJtaXNzaW9uRWxzZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYmJQZXJtaXNzaW9uTW9kZTogUGVybWlzc2lvbnNNb2RlO1xuXG59XG4iXX0=
@@ -19,7 +19,6 @@ export class BbPermissionGuard {
19
19
  return true;
20
20
  }
21
21
  const onPermissionDeniedFn = this._config?.onPermissionDenied ?? null;
22
- console.log(onPermissionDeniedFn);
23
22
  if (!onPermissionDeniedFn) {
24
23
  return false;
25
24
  }
@@ -54,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
54
53
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Permissions }, { type: i3.PermissionsConfig, decorators: [{
55
54
  type: Optional
56
55
  }] }]; } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vcGVybWlzc2lvbnMvc3JjL2xpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFPeEIsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQixZQUFvQixPQUFlLEVBQ2YsWUFBeUIsRUFDYixPQUEyQjtRQUZ2QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFvQjtJQUMzRCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdDLEVBQUUsS0FBMEI7UUFDcEUsTUFBTSxVQUFVLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMxRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxJQUFJLENBQUM7WUFDdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDdkIsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFFRCxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNWLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBa0MsRUFBRSxLQUEwQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBbUY7UUFDdkcsSUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQzFGLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQzdELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDOzsrR0EvQ1EsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGZCxNQUFNOzRGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUtnQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQZXJtaXNzaW9uT3B0aW9ucywgUGVybWlzc2lvbnNDb25maWd9IGZyb20gJy4uL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5pbXBvcnQge0luamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGVybWlzc2lvbnN9IGZyb20gJy4uL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5kZWNsYXJlIGxldCBuZ0Rldk1vZGU7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmJQZXJtaXNzaW9uR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29uZmlnPzogUGVybWlzc2lvbnNDb25maWcpIHtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHNuYXBzaG90Py5kYXRhPy5bJ3Blcm1pc3Npb24nXSA/PyBudWxsO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uJCA9IHRoaXMucGFyc2VQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xuICAgICAgICByZXR1cm4gcGVybWlzc2lvbiQucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWxpZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG9uUGVybWlzc2lvbkRlbmllZEZuID0gdGhpcy5fY29uZmlnPy5vblBlcm1pc3Npb25EZW5pZWQgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhvblBlcm1pc3Npb25EZW5pZWRGbik7XG4gICAgICAgICAgICAgICAgaWYgKCFvblBlcm1pc3Npb25EZW5pZWRGbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgdXJsVHJlZSA9IG9uUGVybWlzc2lvbkRlbmllZEZuKHRoaXMuX3JvdXRlciwgc25hcHNob3QsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXVybFRyZWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZCA/IHRydWUgOiB1cmxUcmVlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZUNoaWxkKGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKGNoaWxkUm91dGUsIHN0YXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlUGVybWlzc2lvbihkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogUGVybWlzc2lvbk9wdGlvbnMgfSkge1xuICAgICAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSkge1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKGBObyBcImRhdGEucGVybWlzc2lvblwiIHByb3BlcnR5IHdhcyBwYXNzZWQuYCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvbnMuaGFzKGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zLmhhcyhkYXRhPy52YWx1ZSwgZGF0YT8ub3B0aW9ucyk7XG4gICAgfVxuXG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vcGVybWlzc2lvbnMvc3JjL2xpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFPeEIsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQixZQUFvQixPQUFlLEVBQ2YsWUFBeUIsRUFDYixPQUEyQjtRQUZ2QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFvQjtJQUMzRCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdDLEVBQUUsS0FBMEI7UUFDcEUsTUFBTSxVQUFVLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMxRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxJQUFJLENBQUM7WUFDdEUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUN2QixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1YsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFrQyxFQUFFLEtBQTBCO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFvRjtRQUN4RyxJQUFJLENBQUMsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDMUYsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7WUFDN0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ2pELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7OytHQTlDUSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZkLE1BQU07NEZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBS2dCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkLCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3R9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1Blcm1pc3Npb25zT3B0aW9ucywgUGVybWlzc2lvbnNDb25maWd9IGZyb20gJy4uL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5pbXBvcnQge0luamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGVybWlzc2lvbnN9IGZyb20gJy4uL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5kZWNsYXJlIGxldCBuZ0Rldk1vZGU7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmJQZXJtaXNzaW9uR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29uZmlnPzogUGVybWlzc2lvbnNDb25maWcpIHtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHNuYXBzaG90Py5kYXRhPy5bJ3Blcm1pc3Npb24nXSA/PyBudWxsO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uJCA9IHRoaXMucGFyc2VQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xuICAgICAgICByZXR1cm4gcGVybWlzc2lvbiQucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWxpZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG9uUGVybWlzc2lvbkRlbmllZEZuID0gdGhpcy5fY29uZmlnPy5vblBlcm1pc3Npb25EZW5pZWQgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoIW9uUGVybWlzc2lvbkRlbmllZEZuKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB1cmxUcmVlID0gb25QZXJtaXNzaW9uRGVuaWVkRm4odGhpcy5fcm91dGVyLCBzbmFwc2hvdCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIGlmICghdXJsVHJlZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkID8gdHJ1ZSA6IHVybFRyZWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNhbkFjdGl2YXRlQ2hpbGQoY2hpbGRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUoY2hpbGRSb3V0ZSwgc3RhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VQZXJtaXNzaW9uKGRhdGE6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBQZXJtaXNzaW9uc09wdGlvbnMgfSkge1xuICAgICAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSkge1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKGBObyBcImRhdGEucGVybWlzc2lvblwiIHByb3BlcnR5IHdhcyBwYXNzZWQuYCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvbnMuaGFzKGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zLmhhcyhkYXRhPy52YWx1ZSwgZGF0YT8ub3B0aW9ucyk7XG4gICAgfVxuXG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { PermissionsHandler } from './abstract.handler';
2
+ import { map } from 'rxjs/operators';
3
+ export class LocalPermissionsHandler extends PermissionsHandler {
4
+ constructor(auth, localPermissions) {
5
+ super();
6
+ this.auth = auth;
7
+ this.localPermissions = localPermissions;
8
+ }
9
+ get() {
10
+ return this.auth.user.pipe(map(user => user?.role ?? null), map(role => {
11
+ if (role === null || role === undefined) {
12
+ return [];
13
+ }
14
+ return this.getPermissionsForRole(role);
15
+ }));
16
+ }
17
+ getPermissionsForRole(role) {
18
+ return Object.keys(this.localPermissions ?? {}).reduce((previous, current) => {
19
+ const roles = this.localPermissions?.[current] ?? [];
20
+ if (roles === '*' || roles?.includes(role)) {
21
+ return [...previous, current];
22
+ }
23
+ return previous;
24
+ }, []);
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vcGVybWlzc2lvbnMvc3JjL2xpYi9oYW5kbGVycy9sb2NhbC5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBRTNELFlBQXNCLElBQVUsRUFDVixnQkFBc0M7UUFDeEQsS0FBSyxFQUFFLENBQUM7UUFGVSxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQ1YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtJQUU1RCxDQUFDO0lBRVEsR0FBRztRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN0QixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDUCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxFQUFFLENBQUM7YUFDYjtZQUVELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRVMscUJBQXFCLENBQUMsSUFBWTtRQUN4QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN6RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckQsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNqQztZQUVELE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYWxQZXJtaXNzaW9uc0RhdGF9IGZyb20gJy4uL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5pbXBvcnQge1Blcm1pc3Npb25zSGFuZGxlcn0gZnJvbSAnLi9hYnN0cmFjdC5oYW5kbGVyJztcbmltcG9ydCB7QXV0aH0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vYXV0aCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgTG9jYWxQZXJtaXNzaW9uc0hhbmRsZXIgZXh0ZW5kcyBQZXJtaXNzaW9uc0hhbmRsZXIge1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGF1dGg6IEF1dGgsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIGxvY2FsUGVybWlzc2lvbnM6IExvY2FsUGVybWlzc2lvbnNEYXRhKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRoLnVzZXIucGlwZShcbiAgICAgICAgICAgIG1hcCh1c2VyID0+IHVzZXI/LnJvbGUgPz8gbnVsbCksXG4gICAgICAgICAgICBtYXAocm9sZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJvbGUgPT09IG51bGwgfHwgcm9sZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9uc0ZvclJvbGUocm9sZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRQZXJtaXNzaW9uc0ZvclJvbGUocm9sZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmxvY2FsUGVybWlzc2lvbnMgPz8ge30pLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvbGVzID0gdGhpcy5sb2NhbFBlcm1pc3Npb25zPy5bY3VycmVudF0gPz8gW107XG4gICAgICAgICAgICBpZiAocm9sZXMgPT09ICcqJyB8fCByb2xlcz8uaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXZpb3VzLCBjdXJyZW50XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export class PermissionsConfig {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9wZXJtaXNzaW9ucy9zcmMvbGliL3Blcm1pc3Npb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8saUJBQWlCO0NBSTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zQ29uZmlnIHtcbiAgICBwZXJtaXNzaW9ucz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdIHwgJyonPjtcbiAgICBwcm92aWRlcj86IFByb3ZpZGVyO1xuICAgIG9uUGVybWlzc2lvbkRlbmllZD86IChyb3V0ZXI6IFJvdXRlciwgc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiBVcmxUcmVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25PcHRpb25zIHtcbiAgICBtb2RlPzogUGVybWlzc2lvbk1vZGU7XG59XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25Nb2RlID0gJ2FuZCcgfCAnb3InO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9wZXJtaXNzaW9ucy9zcmMvbGliL3Blcm1pc3Npb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8saUJBQWlCO0NBSTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zQ29uZmlnIHtcbiAgICBwcm92aWRlcj86IFByb3ZpZGVyO1xuICAgIGxvY2FsUGVybWlzc2lvbnM/OiBMb2NhbFBlcm1pc3Npb25zRGF0YTtcbiAgICBvblBlcm1pc3Npb25EZW5pZWQ/OiAocm91dGVyOiBSb3V0ZXIsIHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkgPT4gVXJsVHJlZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uc09wdGlvbnMge1xuICAgIG1vZGU/OiBQZXJtaXNzaW9uc01vZGU7XG59XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25zTW9kZSA9ICdhbmQnIHwgJ29yJyB8ICdub3QnO1xuZXhwb3J0IHR5cGUgTG9jYWxQZXJtaXNzaW9uc0RhdGE8VCBleHRlbmRzIHN0cmluZyA9IGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBUW10gfCAnKic+O1xuIl19
@@ -1,7 +1,7 @@
1
1
  import { NgModule } from '@angular/core';
2
+ import { LocalPermissionsHandler } from './handlers/local.handler';
2
3
  import { PermissionsHandler } from './handlers/abstract.handler';
3
4
  import { BbPermission } from './directives/permission.directive';
4
- import { RolePermissionHandler } from './handlers/role.handler';
5
5
  import { PermissionsConfig } from './permissions.interface';
6
6
  import { Permissions } from './permissions.service';
7
7
  import { Auth } from '@bravobit/bb-foundation/auth';
@@ -12,7 +12,7 @@ export class PermissionsModule {
12
12
  provide: PermissionsHandler,
13
13
  deps: [Auth],
14
14
  useFactory: (auth) => {
15
- return new RolePermissionHandler(auth, config?.permissions ?? {});
15
+ return new LocalPermissionsHandler(auth, config?.localPermissions ?? {});
16
16
  }
17
17
  };
18
18
  const permissionHandlerProvider = config?.provider ?? defaultProvider;
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
36
36
  exports: [BbPermission]
37
37
  }]
38
38
  }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9wZXJtaXNzaW9ucy9zcmMvbGliL3Blcm1pc3Npb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUFNbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTBCO1FBQ3JDLE1BQU0sZUFBZSxHQUFhO1lBQzlCLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1osVUFBVSxFQUFFLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ3ZCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN0RSxDQUFDO1NBQ0osQ0FBQztRQUNGLE1BQU0seUJBQXlCLEdBQUcsTUFBTSxFQUFFLFFBQVEsSUFBSSxlQUFlLENBQUM7UUFFdEUsT0FBTztZQUNILFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFO2dCQUNQLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUM7Z0JBQzlDLHlCQUF5QjtnQkFDekIsV0FBVzthQUNkO1NBQ0osQ0FBQztJQUNOLENBQUM7OytHQXBCUSxpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFIWCxZQUFZLGFBQ2pCLFlBQVk7Z0hBRWIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBSjdCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uc0hhbmRsZXJ9IGZyb20gJy4vaGFuZGxlcnMvYWJzdHJhY3QuaGFuZGxlcic7XG5pbXBvcnQge0JiUGVybWlzc2lvbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcbmltcG9ydCB7Um9sZVBlcm1pc3Npb25IYW5kbGVyfSBmcm9tICcuL2hhbmRsZXJzL3JvbGUuaGFuZGxlcic7XG5pbXBvcnQge1Blcm1pc3Npb25zQ29uZmlnfSBmcm9tICcuL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5pbXBvcnQge1Blcm1pc3Npb25zfSBmcm9tICcuL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtBdXRofSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbi9hdXRoJztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtCYlBlcm1pc3Npb25dLFxuICAgIGV4cG9ydHM6IFtCYlBlcm1pc3Npb25dXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zTW9kdWxlIHtcblxuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IFBlcm1pc3Npb25zQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxQZXJtaXNzaW9uc01vZHVsZT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0UHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICAgICAgICAgICAgcHJvdmlkZTogUGVybWlzc2lvbnNIYW5kbGVyLFxuICAgICAgICAgICAgZGVwczogW0F1dGhdLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGF1dGg6IEF1dGgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJvbGVQZXJtaXNzaW9uSGFuZGxlcihhdXRoLCBjb25maWc/LnBlcm1pc3Npb25zID8/IHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbkhhbmRsZXJQcm92aWRlciA9IGNvbmZpZz8ucHJvdmlkZXIgPz8gZGVmYXVsdFByb3ZpZGVyO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogUGVybWlzc2lvbnNNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogUGVybWlzc2lvbnNDb25maWcsIHVzZVZhbHVlOiBjb25maWd9LFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb25IYW5kbGVyUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgUGVybWlzc2lvbnNcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbn1cbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9wZXJtaXNzaW9ucy9zcmMvbGliL3Blcm1pc3Npb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUFNbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTBCO1FBQ3JDLE1BQU0sZUFBZSxHQUFhO1lBQzlCLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1osVUFBVSxFQUFFLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ3ZCLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLENBQUM7U0FDSixDQUFDO1FBQ0YsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLEVBQUUsUUFBUSxJQUFJLGVBQWUsQ0FBQztRQUV0RSxPQUFPO1lBQ0gsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUU7Z0JBQ1AsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQztnQkFDOUMseUJBQXlCO2dCQUN6QixXQUFXO2FBQ2Q7U0FDSixDQUFDO0lBQ04sQ0FBQzs7K0dBcEJRLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQUhYLFlBQVksYUFDakIsWUFBWTtnSEFFYixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFKN0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvY2FsUGVybWlzc2lvbnNIYW5kbGVyfSBmcm9tICcuL2hhbmRsZXJzL2xvY2FsLmhhbmRsZXInO1xuaW1wb3J0IHtQZXJtaXNzaW9uc0hhbmRsZXJ9IGZyb20gJy4vaGFuZGxlcnMvYWJzdHJhY3QuaGFuZGxlcic7XG5pbXBvcnQge0JiUGVybWlzc2lvbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcbmltcG9ydCB7UGVybWlzc2lvbnNDb25maWd9IGZyb20gJy4vcGVybWlzc2lvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7UGVybWlzc2lvbnN9IGZyb20gJy4vcGVybWlzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQge0F1dGh9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2F1dGgnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0JiUGVybWlzc2lvbl0sXG4gICAgZXhwb3J0czogW0JiUGVybWlzc2lvbl1cbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNNb2R1bGUge1xuXG4gICAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogUGVybWlzc2lvbnNDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFBlcm1pc3Npb25zTW9kdWxlPiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gICAgICAgICAgICBwcm92aWRlOiBQZXJtaXNzaW9uc0hhbmRsZXIsXG4gICAgICAgICAgICBkZXBzOiBbQXV0aF0sXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoYXV0aDogQXV0aCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTG9jYWxQZXJtaXNzaW9uc0hhbmRsZXIoYXV0aCwgY29uZmlnPy5sb2NhbFBlcm1pc3Npb25zID8/IHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbkhhbmRsZXJQcm92aWRlciA9IGNvbmZpZz8ucHJvdmlkZXIgPz8gZGVmYXVsdFByb3ZpZGVyO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogUGVybWlzc2lvbnNNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogUGVybWlzc2lvbnNDb25maWcsIHVzZVZhbHVlOiBjb25maWd9LFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb25IYW5kbGVyUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgUGVybWlzc2lvbnNcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -41,6 +41,8 @@ export class Permissions {
41
41
  switch (mode) {
42
42
  case 'or':
43
43
  return this.verifyModeOr(requiredPermissions, activePermissions);
44
+ case 'not':
45
+ return this.verifyModeNot(requiredPermissions, activePermissions);
44
46
  case 'and':
45
47
  default:
46
48
  return this.verifyModeAnd(requiredPermissions, activePermissions);
@@ -55,6 +57,14 @@ export class Permissions {
55
57
  }
56
58
  return true;
57
59
  }
60
+ verifyModeNot(permissions, activePermissions) {
61
+ for (const permission of permissions) {
62
+ if (activePermissions.includes(permission)) {
63
+ return false;
64
+ }
65
+ }
66
+ return true;
67
+ }
58
68
  verifyModeOr(permissions, activePermissions) {
59
69
  for (const permission of permissions) {
60
70
  const verified = activePermissions?.includes(permission);
@@ -83,4 +93,4 @@ Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
83
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: Permissions, decorators: [{
84
94
  type: Injectable
85
95
  }], ctorParameters: function () { return [{ type: i1.PermissionsHandler }]; } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vcGVybWlzc2lvbnMvc3JjL2xpYi9wZXJtaXNzaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHckUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7OztBQUdwRCxNQUFNLE9BQU8sV0FBVztJQVFwQixZQUFvQixRQUE0QjtRQUE1QixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQU5oRCxTQUFTO1FBQ0Qsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFaEUsaUJBQWlCO1FBQ1Qsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsR0FBRztRQUNDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUF3QixFQUFFLE9BQTJCO1FBQ3JELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksbUJBQW1CLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNs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ImltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBpc09ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uc0hhbmRsZXJ9IGZyb20gJy4vaGFuZGxlcnMvYWJzdHJhY3QuaGFuZGxlcic7XG5pbXBvcnQge1Blcm1pc3Npb25PcHRpb25zfSBmcm9tICcuL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIC8vIFN0YXRlLlxuICAgIHByaXZhdGUgX2FjdGl2ZVBlcm1pc3Npb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcblxuICAgIC8vIFN1YnNjcmlwdGlvbnMuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfaGFuZGxlcjogUGVybWlzc2lvbnNIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMudHJhY2tQZXJtaXNzaW9ucygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgYWxsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGVybWlzc2lvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGFsbFN5bmMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVQZXJtaXNzaW9ucyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBoYXModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogUGVybWlzc2lvbk9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UmVxdWlyZWRQZXJtaXNzaW9ucyh2YWx1ZSk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBlcm1pc3Npb25zPy5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVQZXJtaXNzaW9ucyQucGlwZShcbiAgICAgICAgICAgIG1hcChhY3RpdmVQZXJtaXNzaW9ucyA9PiB0aGlzLmhhc1Blcm1pc3Npb24ocmVxdWlyZWRQZXJtaXNzaW9ucywgYWN0aXZlUGVybWlzc2lvbnMsIG9wdGlvbnMpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBoYXNTeW5jKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9ucz86IFBlcm1pc3Npb25PcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSB0aGlzLmdldFJlcXVpcmVkUGVybWlzc2lvbnModmFsdWUpO1xuICAgICAgICBpZiAocmVxdWlyZWRQZXJtaXNzaW9ucz8ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZVBlcm1pc3Npb25zID0gdGhpcy5fYWN0aXZlUGVybWlzc2lvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1Blcm1pc3Npb24ocmVxdWlyZWRQZXJtaXNzaW9ucywgYWN0aXZlUGVybWlzc2lvbnMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzUGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb25zOiBzdHJpbmdbXSwgYWN0aXZlUGVybWlzc2lvbnM6IHN0cmluZ1tdLCBvcHRpb25zPzogUGVybWlzc2lvbk9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IG9wdGlvbnM/Lm1vZGUgPz8gJ2FuZCc7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnb3InOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmeU1vZGVPcihyZXF1aXJlZFBlcm1pc3Npb25zLCBhY3RpdmVQZXJtaXNzaW9ucyk7XG4gICAgICAgICAgICBjYXNlICdhbmQnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJpZnlNb2RlQW5kKHJlcXVpcmVkUGVybWlzc2lvbnMsIGFjdGl2ZVBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmVyaWZ5TW9kZUFuZChwZXJtaXNzaW9uczogc3RyaW5nW10sIGFjdGl2ZVBlcm1pc3Npb25zOiBzdHJpbmdbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmlmaWVkID0gYWN0aXZlUGVybWlzc2lvbnM/LmluY2x1ZGVzKHBlcm1pc3Npb24pO1xuICAgICAgICAgICAgaWYgKCF2ZXJpZmllZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyaWZ5TW9kZU9yKHBlcm1pc3Npb25zOiBzdHJpbmdbXSwgYWN0aXZlUGVybWlzc2lvbnM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGZvciAoY29uc3QgcGVybWlzc2lvbiBvZiBwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgY29uc3QgdmVyaWZpZWQgPSBhY3RpdmVQZXJtaXNzaW9ucz8uaW5jbHVkZXMocGVybWlzc2lvbik7XG4gICAgICAgICAgICBpZiAodmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlcXVpcmVkUGVybWlzc2lvbnModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhY2tQZXJtaXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2hhbmRsZXIuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zJCA9IGlzT2JzZXJ2YWJsZShkYXRhKSA/IGRhdGEgOiBvZihkYXRhKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBwZXJtaXNzaW9ucyQuc3Vic2NyaWJlKHBlcm1pc3Npb25zID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVBlcm1pc3Npb25zJC5uZXh0KHBlcm1pc3Npb25zID8/IFtdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbn1cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vcGVybWlzc2lvbnMvc3JjL2xpYi9wZXJtaXNzaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHckUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7OztBQUdwRCxNQUFNLE9BQU8sV0FBVztJQVFwQixZQUFvQixRQUE0QjtRQUE1QixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQU5oRCxTQUFTO1FBQ0Qsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFaEUsaUJBQWlCO1FBQ1Qsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsR0FBRztRQUNDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUF3QixFQUFFLE9BQTRCO1FBQ3RELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksbUJBQW1CLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNs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LFlBQVksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7eUdBekdRLFdBQVc7NkdBQVgsV0FBVzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGlzT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Blcm1pc3Npb25zSGFuZGxlcn0gZnJvbSAnLi9oYW5kbGVycy9hYnN0cmFjdC5oYW5kbGVyJztcbmltcG9ydCB7UGVybWlzc2lvbnNPcHRpb25zfSBmcm9tICcuL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIC8vIFN0YXRlLlxuICAgIHByaXZhdGUgX2FjdGl2ZVBlcm1pc3Npb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcblxuICAgIC8vIFN1YnNjcmlwdGlvbnMuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfaGFuZGxlcjogUGVybWlzc2lvbnNIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMudHJhY2tQZXJtaXNzaW9ucygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgYWxsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGVybWlzc2lvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGFsbFN5bmMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVQZXJtaXNzaW9ucyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBoYXModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogUGVybWlzc2lvbnNPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSB0aGlzLmdldFJlcXVpcmVkUGVybWlzc2lvbnModmFsdWUpO1xuICAgICAgICBpZiAocmVxdWlyZWRQZXJtaXNzaW9ucz8ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGVybWlzc2lvbnMkLnBpcGUoXG4gICAgICAgICAgICBtYXAoYWN0aXZlUGVybWlzc2lvbnMgPT4gdGhpcy5oYXNQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbnMsIGFjdGl2ZVBlcm1pc3Npb25zLCBvcHRpb25zKSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFzU3luYyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBQZXJtaXNzaW9uc09wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IHRoaXMuZ2V0UmVxdWlyZWRQZXJtaXNzaW9ucyh2YWx1ZSk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBlcm1pc3Npb25zPy5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aXZlUGVybWlzc2lvbnMgPSB0aGlzLl9hY3RpdmVQZXJtaXNzaW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzUGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb25zLCBhY3RpdmVQZXJtaXNzaW9ucywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbnM6IHN0cmluZ1tdLCBhY3RpdmVQZXJtaXNzaW9uczogc3RyaW5nW10sIG9wdGlvbnM/OiBQZXJtaXNzaW9uc09wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IG9wdGlvbnM/Lm1vZGUgPz8gJ2FuZCc7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnb3InOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmeU1vZGVPcihyZXF1aXJlZFBlcm1pc3Npb25zLCBhY3RpdmVQZXJtaXNzaW9ucyk7XG4gICAgICAgICAgICBjYXNlICdub3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmeU1vZGVOb3QocmVxdWlyZWRQZXJtaXNzaW9ucywgYWN0aXZlUGVybWlzc2lvbnMpO1xuICAgICAgICAgICAgY2FzZSAnYW5kJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5TW9kZUFuZChyZXF1aXJlZFBlcm1pc3Npb25zLCBhY3RpdmVQZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeU1vZGVBbmQocGVybWlzc2lvbnM6IHN0cmluZ1tdLCBhY3RpdmVQZXJtaXNzaW9uczogc3RyaW5nW10pIHtcbiAgICAgICAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJpZmllZCA9IGFjdGl2ZVBlcm1pc3Npb25zPy5pbmNsdWRlcyhwZXJtaXNzaW9uKTtcbiAgICAgICAgICAgIGlmICghdmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeU1vZGVOb3QocGVybWlzc2lvbnM6IHN0cmluZ1tdLCBhY3RpdmVQZXJtaXNzaW9uczogc3RyaW5nW10pIHtcbiAgICAgICAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlUGVybWlzc2lvbnMuaW5jbHVkZXMocGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeU1vZGVPcihwZXJtaXNzaW9uczogc3RyaW5nW10sIGFjdGl2ZVBlcm1pc3Npb25zOiBzdHJpbmdbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmlmaWVkID0gYWN0aXZlUGVybWlzc2lvbnM/LmluY2x1ZGVzKHBlcm1pc3Npb24pO1xuICAgICAgICAgICAgaWYgKHZlcmlmaWVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZXF1aXJlZFBlcm1pc3Npb25zKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYWNrUGVybWlzc2lvbnMoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9oYW5kbGVyLmdldCgpO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9ucyQgPSBpc09ic2VydmFibGUoZGF0YSkgPyBkYXRhIDogb2YoZGF0YSk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gcGVybWlzc2lvbnMkLnN1YnNjcmliZShwZXJtaXNzaW9ucyA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVQZXJtaXNzaW9ucyQubmV4dChwZXJtaXNzaW9ucyA/PyBbXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG59XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  export * from './lib/handlers/abstract.handler';
2
- export * from './lib/handlers/role.handler';
2
+ export * from './lib/handlers/local.handler';
3
3
  export * from './lib/directives/permission.directive';
4
4
  export * from './lib/guards/permission.guard';
5
5
  export * from './lib/permissions.interface';
6
6
  export * from './lib/permissions.service';
7
7
  export * from './lib/permissions.module';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vcGVybWlzc2lvbnMvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2hhbmRsZXJzL2Fic3RyYWN0LmhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGFuZGxlcnMvcm9sZS5oYW5kbGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcy9wZXJtaXNzaW9uLmd1YXJkJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVybWlzc2lvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVybWlzc2lvbnMubW9kdWxlJztcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vcGVybWlzc2lvbnMvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2hhbmRsZXJzL2Fic3RyYWN0LmhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGFuZGxlcnMvbG9jYWwuaGFuZGxlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3Blcm1pc3Npb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Blcm1pc3Npb25zLm1vZHVsZSc7XG4iXX0=
@@ -8,7 +8,7 @@ import { Auth } from '@bravobit/bb-foundation/auth';
8
8
  class PermissionsHandler {
9
9
  }
10
10
 
11
- class RolePermissionHandler extends PermissionsHandler {
11
+ class LocalPermissionsHandler extends PermissionsHandler {
12
12
  constructor(auth, localPermissions) {
13
13
  super();
14
14
  this.auth = auth;
@@ -75,6 +75,8 @@ class Permissions {
75
75
  switch (mode) {
76
76
  case 'or':
77
77
  return this.verifyModeOr(requiredPermissions, activePermissions);
78
+ case 'not':
79
+ return this.verifyModeNot(requiredPermissions, activePermissions);
78
80
  case 'and':
79
81
  default:
80
82
  return this.verifyModeAnd(requiredPermissions, activePermissions);
@@ -89,6 +91,14 @@ class Permissions {
89
91
  }
90
92
  return true;
91
93
  }
94
+ verifyModeNot(permissions, activePermissions) {
95
+ for (const permission of permissions) {
96
+ if (activePermissions.includes(permission)) {
97
+ return false;
98
+ }
99
+ }
100
+ return true;
101
+ }
92
102
  verifyModeOr(permissions, activePermissions) {
93
103
  for (const permission of permissions) {
94
104
  const verified = activePermissions === null || activePermissions === void 0 ? void 0 : activePermissions.includes(permission);
@@ -221,7 +231,6 @@ class BbPermissionGuard {
221
231
  return true;
222
232
  }
223
233
  const onPermissionDeniedFn = (_b = (_a = this._config) === null || _a === void 0 ? void 0 : _a.onPermissionDenied) !== null && _b !== void 0 ? _b : null;
224
- console.log(onPermissionDeniedFn);
225
234
  if (!onPermissionDeniedFn) {
226
235
  return false;
227
236
  }
@@ -268,7 +277,7 @@ class PermissionsModule {
268
277
  deps: [Auth],
269
278
  useFactory: (auth) => {
270
279
  var _a;
271
- return new RolePermissionHandler(auth, (_a = config === null || config === void 0 ? void 0 : config.permissions) !== null && _a !== void 0 ? _a : {});
280
+ return new LocalPermissionsHandler(auth, (_a = config === null || config === void 0 ? void 0 : config.localPermissions) !== null && _a !== void 0 ? _a : {});
272
281
  }
273
282
  };
274
283
  const permissionHandlerProvider = (_a = config === null || config === void 0 ? void 0 : config.provider) !== null && _a !== void 0 ? _a : defaultProvider;
@@ -297,5 +306,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
297
306
  * Generated bundle index. Do not edit.
298
307
  */
299
308
 
300
- export { BbPermission, BbPermissionGuard, Permissions, PermissionsConfig, PermissionsHandler, PermissionsModule, RolePermissionHandler };
309
+ export { BbPermission, BbPermissionGuard, LocalPermissionsHandler, Permissions, PermissionsConfig, PermissionsHandler, PermissionsModule };
301
310
  //# sourceMappingURL=bravobit-bb-foundation-permissions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-permissions.mjs","sources":["../../../projects/bb-foundation/permissions/src/lib/handlers/abstract.handler.ts","../../../projects/bb-foundation/permissions/src/lib/handlers/role.handler.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.service.ts","../../../projects/bb-foundation/permissions/src/lib/directives/permission.directive.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.interface.ts","../../../projects/bb-foundation/permissions/src/lib/guards/permission.guard.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.module.ts","../../../projects/bb-foundation/permissions/src/bravobit-bb-foundation-permissions.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\nexport abstract class PermissionsHandler {\n\n abstract get(): Observable<string[]> | string[];\n\n}\n","import {PermissionsHandler} from './abstract.handler';\nimport {Auth} from '@bravobit/bb-foundation/auth';\nimport {map} from 'rxjs/operators';\n\nexport class RolePermissionHandler extends PermissionsHandler {\n\n constructor(protected auth: Auth,\n protected localPermissions: Record<string, string[] | '*'>) {\n super();\n }\n\n override get() {\n return this.auth.user.pipe(\n map(user => user?.role ?? null),\n map(role => {\n if (role === null || role === undefined) {\n return [];\n }\n\n return this.getPermissionsForRole(role);\n })\n );\n }\n\n protected getPermissionsForRole(role: string) {\n return Object.keys(this.localPermissions ?? {}).reduce((previous, current) => {\n const roles = this.localPermissions?.[current] ?? [];\n if (roles === '*' || roles?.includes(role)) {\n return [...previous, current];\n }\n\n return previous;\n }, []);\n }\n\n}\n","import {BehaviorSubject, isObservable, of, Subscription} from 'rxjs';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {PermissionOptions} from './permissions.interface';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Injectable, OnDestroy} from '@angular/core';\n\n@Injectable()\nexport class Permissions implements OnDestroy {\n\n // State.\n private _activePermissions$ = new BehaviorSubject<string[]>([]);\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _handler: PermissionsHandler) {\n this.trackPermissions();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n all() {\n return this._activePermissions$.asObservable();\n }\n\n allSync() {\n return this._activePermissions$.getValue();\n }\n\n has(value: string | string[], options?: PermissionOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return of(false);\n }\n\n return this._activePermissions$.pipe(\n map(activePermissions => this.hasPermission(requiredPermissions, activePermissions, options)),\n distinctUntilChanged()\n );\n }\n\n hasSync(value: string | string[], options?: PermissionOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return false;\n }\n\n const activePermissions = this._activePermissions$.getValue();\n return this.hasPermission(requiredPermissions, activePermissions, options);\n }\n\n private hasPermission(requiredPermissions: string[], activePermissions: string[], options?: PermissionOptions) {\n const mode = options?.mode ?? 'and';\n switch (mode) {\n case 'or':\n return this.verifyModeOr(requiredPermissions, activePermissions);\n case 'and':\n default:\n return this.verifyModeAnd(requiredPermissions, activePermissions);\n }\n }\n\n private verifyModeAnd(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (!verified) {\n return false;\n }\n }\n\n return true;\n }\n\n private verifyModeOr(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (verified) {\n return true;\n }\n }\n\n return false;\n }\n\n private getRequiredPermissions(value: string | string[]) {\n return Array.isArray(value)\n ? value\n : [value];\n }\n\n private trackPermissions() {\n const data = this._handler.get();\n const permissions$ = isObservable(data) ? data : of(data);\n\n const subscription = permissions$.subscribe(permissions => {\n this._activePermissions$.next(permissions ?? []);\n });\n this._subscription.add(subscription);\n }\n\n}\n","import {Directive, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {distinctUntilChanged, switchMap} from 'rxjs/operators';\nimport {PermissionMode} from '../permissions.interface';\nimport {Permissions} from '../permissions.service';\n\n@Directive({\n selector: '[bbPermission]'\n})\nexport class BbPermission implements OnInit, OnDestroy {\n\n // Templates.\n private _elseTemplateRef: TemplateRef<any> | null = null;\n\n // View refs.\n private _thenViewRef: EmbeddedViewRef<any> | null = null;\n private _elseViewRef: EmbeddedViewRef<any> | null = null;\n\n // Data.\n private _valid: boolean = false;\n private _permission$ = new BehaviorSubject<string[]>([]);\n private _mode$ = new BehaviorSubject<PermissionMode>('and');\n\n @Input()\n set bbPermission(value: string | string[]) {\n const permissions = Array.isArray(value) ? value : [value];\n this._permission$.next(permissions);\n this.updateView();\n }\n\n @Input()\n set bbPermissionElse(templateRef: TemplateRef<any>) {\n this.assertTemplate('bbPermissionElse', templateRef);\n this._elseTemplateRef = templateRef;\n this.updateView();\n }\n\n @Input()\n set bbPermissionMode(mode: PermissionMode) {\n this._mode$.next(mode);\n }\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _permissions: Permissions,\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n ngOnInit() {\n const check$ = combineLatest([this._permission$, this._mode$]).pipe(\n switchMap(([permissions, mode]) => this._permissions.has(permissions, {mode})),\n distinctUntilChanged()\n );\n\n const subscription = check$.subscribe(valid => {\n this._valid = valid;\n this.updateView();\n });\n this._subscription.add(subscription);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private updateView() {\n if (this._valid) {\n if (!this._thenViewRef) {\n this._viewContainerRef.clear();\n this._elseViewRef = null;\n if (this._templateRef) {\n this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n }\n } else {\n if (!this._elseViewRef) {\n this._viewContainerRef.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);\n }\n }\n }\n }\n\n private assertTemplate(property: string, templateRef: TemplateRef<any> | null) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef.`);\n }\n }\n\n static ngAcceptInputType_bbPermission: string | string[];\n static ngAcceptInputType_bbPermissionElse: TemplateRef<any>;\n static ngAcceptInputType_bbPermissionMode: PermissionMode;\n\n}\n","import {ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Provider} from '@angular/core';\n\nexport class PermissionsConfig {\n permissions?: Record<string, string[] | '*'>;\n provider?: Provider;\n onPermissionDenied?: (router: Router, snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) => UrlTree;\n}\n\nexport interface PermissionOptions {\n mode?: PermissionMode;\n}\n\nexport type PermissionMode = 'and' | 'or';\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot} from '@angular/router';\nimport {PermissionOptions, PermissionsConfig} from '../permissions.interface';\nimport {Injectable, Optional} from '@angular/core';\nimport {Permissions} from '../permissions.service';\nimport {map} from 'rxjs/operators';\nimport {of} from 'rxjs';\n\ndeclare let ngDevMode;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BbPermissionGuard implements CanActivate, CanActivateChild {\n\n constructor(private _router: Router,\n private _permissions: Permissions,\n @Optional() private _config?: PermissionsConfig) {\n }\n\n canActivate(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const permission = snapshot?.data?.['permission'] ?? null;\n const permission$ = this.parsePermission(permission);\n return permission$.pipe(\n map(valid => {\n if (valid) {\n return true;\n }\n\n const onPermissionDeniedFn = this._config?.onPermissionDenied ?? null;\n console.log(onPermissionDeniedFn);\n if (!onPermissionDeniedFn) {\n return false;\n }\n\n const urlTree = onPermissionDeniedFn(this._router, snapshot, state);\n if (!urlTree) {\n return false;\n }\n\n return valid ? true : urlTree;\n })\n );\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.canActivate(childRoute, state);\n }\n\n private parsePermission(data: string | string[] | { value: string | string[], options?: PermissionOptions }) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && (data === undefined || data === null)) {\n console?.warn?.(`No \"data.permission\" property was passed.`);\n return of(false);\n }\n\n if (Array.isArray(data) || typeof data === 'string') {\n return this._permissions.has(data);\n }\n\n return this._permissions.has(data?.value, data?.options);\n }\n\n}\n","import {ModuleWithProviders, NgModule, Provider} from '@angular/core';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {BbPermission} from './directives/permission.directive';\nimport {RolePermissionHandler} from './handlers/role.handler';\nimport {PermissionsConfig} from './permissions.interface';\nimport {Permissions} from './permissions.service';\nimport {Auth} from '@bravobit/bb-foundation/auth';\n\n@NgModule({\n declarations: [BbPermission],\n exports: [BbPermission]\n})\nexport class PermissionsModule {\n\n static forRoot(config?: PermissionsConfig): ModuleWithProviders<PermissionsModule> {\n const defaultProvider: Provider = {\n provide: PermissionsHandler,\n deps: [Auth],\n useFactory: (auth: Auth) => {\n return new RolePermissionHandler(auth, config?.permissions ?? {});\n }\n };\n const permissionHandlerProvider = config?.provider ?? defaultProvider;\n\n return {\n ngModule: PermissionsModule,\n providers: [\n {provide: PermissionsConfig, useValue: config},\n permissionHandlerProvider,\n Permissions\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PermissionsHandler","i1.Permissions","i2.Permissions","i3.PermissionsConfig"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-permissions.mjs","sources":["../../../projects/bb-foundation/permissions/src/lib/handlers/abstract.handler.ts","../../../projects/bb-foundation/permissions/src/lib/handlers/local.handler.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.service.ts","../../../projects/bb-foundation/permissions/src/lib/directives/permission.directive.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.interface.ts","../../../projects/bb-foundation/permissions/src/lib/guards/permission.guard.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.module.ts","../../../projects/bb-foundation/permissions/src/bravobit-bb-foundation-permissions.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\nexport abstract class PermissionsHandler {\n\n abstract get(): Observable<string[]> | string[];\n\n}\n","import {LocalPermissionsData} from '../permissions.interface';\nimport {PermissionsHandler} from './abstract.handler';\nimport {Auth} from '@bravobit/bb-foundation/auth';\nimport {map} from 'rxjs/operators';\n\nexport class LocalPermissionsHandler extends PermissionsHandler {\n\n constructor(protected auth: Auth,\n protected localPermissions: LocalPermissionsData) {\n super();\n }\n\n override get() {\n return this.auth.user.pipe(\n map(user => user?.role ?? null),\n map(role => {\n if (role === null || role === undefined) {\n return [];\n }\n\n return this.getPermissionsForRole(role);\n })\n );\n }\n\n protected getPermissionsForRole(role: string) {\n return Object.keys(this.localPermissions ?? {}).reduce((previous, current) => {\n const roles = this.localPermissions?.[current] ?? [];\n if (roles === '*' || roles?.includes(role)) {\n return [...previous, current];\n }\n\n return previous;\n }, []);\n }\n\n}\n","import {BehaviorSubject, isObservable, of, Subscription} from 'rxjs';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {PermissionsOptions} from './permissions.interface';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Injectable, OnDestroy} from '@angular/core';\n\n@Injectable()\nexport class Permissions implements OnDestroy {\n\n // State.\n private _activePermissions$ = new BehaviorSubject<string[]>([]);\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _handler: PermissionsHandler) {\n this.trackPermissions();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n all() {\n return this._activePermissions$.asObservable();\n }\n\n allSync() {\n return this._activePermissions$.getValue();\n }\n\n has(value: string | string[], options?: PermissionsOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return of(false);\n }\n\n return this._activePermissions$.pipe(\n map(activePermissions => this.hasPermission(requiredPermissions, activePermissions, options)),\n distinctUntilChanged()\n );\n }\n\n hasSync(value: string | string[], options?: PermissionsOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return false;\n }\n\n const activePermissions = this._activePermissions$.getValue();\n return this.hasPermission(requiredPermissions, activePermissions, options);\n }\n\n private hasPermission(requiredPermissions: string[], activePermissions: string[], options?: PermissionsOptions) {\n const mode = options?.mode ?? 'and';\n switch (mode) {\n case 'or':\n return this.verifyModeOr(requiredPermissions, activePermissions);\n case 'not':\n return this.verifyModeNot(requiredPermissions, activePermissions);\n case 'and':\n default:\n return this.verifyModeAnd(requiredPermissions, activePermissions);\n }\n }\n\n private verifyModeAnd(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (!verified) {\n return false;\n }\n }\n\n return true;\n }\n\n private verifyModeNot(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n if (activePermissions.includes(permission)) {\n return false;\n }\n }\n\n return true;\n }\n\n private verifyModeOr(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (verified) {\n return true;\n }\n }\n\n return false;\n }\n\n private getRequiredPermissions(value: string | string[]) {\n return Array.isArray(value)\n ? value\n : [value];\n }\n\n private trackPermissions() {\n const data = this._handler.get();\n const permissions$ = isObservable(data) ? data : of(data);\n\n const subscription = permissions$.subscribe(permissions => {\n this._activePermissions$.next(permissions ?? []);\n });\n this._subscription.add(subscription);\n }\n\n}\n","import {Directive, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {distinctUntilChanged, switchMap} from 'rxjs/operators';\nimport {PermissionsMode} from '../permissions.interface';\nimport {Permissions} from '../permissions.service';\n\n@Directive({\n selector: '[bbPermission]'\n})\nexport class BbPermission implements OnInit, OnDestroy {\n\n // Templates.\n private _elseTemplateRef: TemplateRef<any> | null = null;\n\n // View refs.\n private _thenViewRef: EmbeddedViewRef<any> | null = null;\n private _elseViewRef: EmbeddedViewRef<any> | null = null;\n\n // Data.\n private _valid: boolean = false;\n private _permission$ = new BehaviorSubject<string[]>([]);\n private _mode$ = new BehaviorSubject<PermissionsMode>('and');\n\n @Input()\n set bbPermission(value: string | string[]) {\n const permissions = Array.isArray(value) ? value : [value];\n this._permission$.next(permissions);\n this.updateView();\n }\n\n @Input()\n set bbPermissionElse(templateRef: TemplateRef<any>) {\n this.assertTemplate('bbPermissionElse', templateRef);\n this._elseTemplateRef = templateRef;\n this.updateView();\n }\n\n @Input()\n set bbPermissionMode(mode: PermissionsMode) {\n this._mode$.next(mode);\n }\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _permissions: Permissions,\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n ngOnInit() {\n const check$ = combineLatest([this._permission$, this._mode$]).pipe(\n switchMap(([permissions, mode]) => this._permissions.has(permissions, {mode})),\n distinctUntilChanged()\n );\n\n const subscription = check$.subscribe(valid => {\n this._valid = valid;\n this.updateView();\n });\n this._subscription.add(subscription);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private updateView() {\n if (this._valid) {\n if (!this._thenViewRef) {\n this._viewContainerRef.clear();\n this._elseViewRef = null;\n if (this._templateRef) {\n this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n }\n } else {\n if (!this._elseViewRef) {\n this._viewContainerRef.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);\n }\n }\n }\n }\n\n private assertTemplate(property: string, templateRef: TemplateRef<any> | null) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef.`);\n }\n }\n\n static ngAcceptInputType_bbPermission: string | string[];\n static ngAcceptInputType_bbPermissionElse: TemplateRef<any>;\n static ngAcceptInputType_bbPermissionMode: PermissionsMode;\n\n}\n","import {ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Provider} from '@angular/core';\n\nexport class PermissionsConfig {\n provider?: Provider;\n localPermissions?: LocalPermissionsData;\n onPermissionDenied?: (router: Router, snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) => UrlTree;\n}\n\nexport interface PermissionsOptions {\n mode?: PermissionsMode;\n}\n\nexport type PermissionsMode = 'and' | 'or' | 'not';\nexport type LocalPermissionsData<T extends string = any> = Record<string, T[] | '*'>;\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot} from '@angular/router';\nimport {PermissionsOptions, PermissionsConfig} from '../permissions.interface';\nimport {Injectable, Optional} from '@angular/core';\nimport {Permissions} from '../permissions.service';\nimport {map} from 'rxjs/operators';\nimport {of} from 'rxjs';\n\ndeclare let ngDevMode;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BbPermissionGuard implements CanActivate, CanActivateChild {\n\n constructor(private _router: Router,\n private _permissions: Permissions,\n @Optional() private _config?: PermissionsConfig) {\n }\n\n canActivate(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const permission = snapshot?.data?.['permission'] ?? null;\n const permission$ = this.parsePermission(permission);\n return permission$.pipe(\n map(valid => {\n if (valid) {\n return true;\n }\n\n const onPermissionDeniedFn = this._config?.onPermissionDenied ?? null;\n if (!onPermissionDeniedFn) {\n return false;\n }\n\n const urlTree = onPermissionDeniedFn(this._router, snapshot, state);\n if (!urlTree) {\n return false;\n }\n\n return valid ? true : urlTree;\n })\n );\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.canActivate(childRoute, state);\n }\n\n private parsePermission(data: string | string[] | { value: string | string[], options?: PermissionsOptions }) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && (data === undefined || data === null)) {\n console?.warn?.(`No \"data.permission\" property was passed.`);\n return of(false);\n }\n\n if (Array.isArray(data) || typeof data === 'string') {\n return this._permissions.has(data);\n }\n\n return this._permissions.has(data?.value, data?.options);\n }\n\n}\n","import {ModuleWithProviders, NgModule, Provider} from '@angular/core';\nimport {LocalPermissionsHandler} from './handlers/local.handler';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {BbPermission} from './directives/permission.directive';\nimport {PermissionsConfig} from './permissions.interface';\nimport {Permissions} from './permissions.service';\nimport {Auth} from '@bravobit/bb-foundation/auth';\n\n@NgModule({\n declarations: [BbPermission],\n exports: [BbPermission]\n})\nexport class PermissionsModule {\n\n static forRoot(config?: PermissionsConfig): ModuleWithProviders<PermissionsModule> {\n const defaultProvider: Provider = {\n provide: PermissionsHandler,\n deps: [Auth],\n useFactory: (auth: Auth) => {\n return new LocalPermissionsHandler(auth, config?.localPermissions ?? {});\n }\n };\n const permissionHandlerProvider = config?.provider ?? defaultProvider;\n\n return {\n ngModule: PermissionsModule,\n providers: [\n {provide: PermissionsConfig, useValue: config},\n permissionHandlerProvider,\n Permissions\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PermissionsHandler","i1.Permissions","i2.Permissions","i3.PermissionsConfig"],"mappings":";;;;;;;MAEsB,kBAAkB,CAAA;AAIvC;;ACDK,MAAO,uBAAwB,SAAQ,kBAAkB,CAAA;IAE3D,WAAsB,CAAA,IAAU,EACV,gBAAsC,EAAA;AACxD,QAAA,KAAK,EAAE,CAAC;AAFU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;AACV,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAsB;KAE3D;IAEQ,GAAG,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACtB,GAAG,CAAC,IAAI,cAAI,OAAA,CAAA,EAAA,GAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAA,EAAA,CAAC,EAC/B,GAAG,CAAC,IAAI,IAAG;AACP,YAAA,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AACrC,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;SAC3C,CAAC,CACL,CAAC;KACL;AAES,IAAA,qBAAqB,CAAC,IAAY,EAAA;;AACxC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;;AACzE,YAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,OAAO,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AACrD,YAAA,IAAI,KAAK,KAAK,GAAG,KAAI,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,EAAE;AACxC,gBAAA,OAAO,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjC,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC;SACnB,EAAE,EAAE,CAAC,CAAC;KACV;AAEJ;;MC7BY,WAAW,CAAA;AAQpB,IAAA,WAAA,CAAoB,QAA4B,EAAA;AAA5B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoB;;QALxC,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;;AAGxD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QAGvC,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAED,WAAW,GAAA;;AACP,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KACrC;IAED,GAAG,GAAA;AACC,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAClD;IAED,OAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;KAC9C;IAED,GAAG,CAAC,KAAwB,EAAE,OAA4B,EAAA;QACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAA,mBAAmB,KAAA,IAAA,IAAnB,mBAAmB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnB,mBAAmB,CAAE,MAAM,KAAI,CAAC,EAAE;AAClC,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAChC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,EAC7F,oBAAoB,EAAE,CACzB,CAAC;KACL;IAED,OAAO,CAAC,KAAwB,EAAE,OAA4B,EAAA;QAC1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAA,mBAAmB,KAAA,IAAA,IAAnB,mBAAmB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnB,mBAAmB,CAAE,MAAM,KAAI,CAAC,EAAE;AAClC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;KAC9E;AAEO,IAAA,aAAa,CAAC,mBAA6B,EAAE,iBAA2B,EAAE,OAA4B,EAAA;;AAC1G,QAAA,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC;AACpC,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AACrE,YAAA,KAAK,KAAK;gBACN,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AACtE,YAAA,KAAK,KAAK,CAAC;AACX,YAAA;gBACI,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AACzE,SAAA;KACJ;IAEO,aAAa,CAAC,WAAqB,EAAE,iBAA2B,EAAA;AACpE,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAClC,YAAA,MAAM,QAAQ,GAAG,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,aAAa,CAAC,WAAqB,EAAE,iBAA2B,EAAA;AACpE,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAClC,YAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,YAAY,CAAC,WAAqB,EAAE,iBAA2B,EAAA;AACnE,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAClC,YAAA,MAAM,QAAQ,GAAG,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzD,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,sBAAsB,CAAC,KAAwB,EAAA;AACnD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACvB,cAAE,KAAK;AACP,cAAE,CAAC,KAAK,CAAC,CAAC;KACjB;IAEO,gBAAgB,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACjC,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,IAAG;AACtD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,WAAW,GAAI,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACxC;;yGAzGQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAX,WAAW,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;MCGE,YAAY,CAAA;AAoCrB,IAAA,WAAA,CAAoB,YAAyB,EACzB,YAA8B,EAC9B,iBAAmC,EAAA;AAFnC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;AACzB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAkB;AAC9B,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;;AAnC/C,QAAA,IAAgB,CAAA,gBAAA,GAA4B,IAAI,CAAC;;AAGjD,QAAA,IAAY,CAAA,YAAA,GAAgC,IAAI,CAAC;AACjD,QAAA,IAAY,CAAA,YAAA,GAAgC,IAAI,CAAC;;AAGjD,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;QACjD,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAkB,KAAK,CAAC,CAAC;;AAsBrD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;KAK1C;IAzBD,IACI,YAAY,CAAC,KAAwB,EAAA;AACrC,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,IACI,gBAAgB,CAAC,WAA6B,EAAA;AAC9C,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,IACI,gBAAgB,CAAC,IAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;IAUD,QAAQ,GAAA;QACJ,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC/D,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,EAC9E,oBAAoB,EAAE,CACzB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACxC;IAED,WAAW,GAAA;;AACP,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KACrC;IAEO,UAAU,GAAA;QACd,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpF,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxF,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAEO,cAAc,CAAC,QAAgB,EAAE,WAAoC,EAAA;AACzE,QAAA,MAAM,mBAAmB,GAAG,CAAC,EAAE,CAAC,WAAW,IAAI,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC/E,IAAI,CAAC,mBAAmB,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAA,uBAAA,CAAyB,CAAC,CAAC;AACzD,SAAA;KACJ;;0GAnFQ,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAZ,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;iBAC7B,CAAA;wJAgBO,YAAY,EAAA,CAAA;sBADf,KAAK;gBAQF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;gBAQF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;;;MClCG,iBAAiB,CAAA;AAI7B;;MCKY,iBAAiB,CAAA;AAE1B,IAAA,WAAA,CAAoB,OAAe,EACf,YAAyB,EACb,OAA2B,EAAA;AAFvC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AACf,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAa;AACb,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;KAC1D;IAED,WAAW,CAAC,QAAgC,EAAE,KAA0B,EAAA;;AACpE,QAAA,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,IAAI,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,IAAI,CACnB,GAAG,CAAC,KAAK,IAAG;;AACR,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;YAED,MAAM,oBAAoB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;YACtE,IAAI,CAAC,oBAAoB,EAAE;AACvB,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,OAAO,EAAE;AACV,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;YAED,OAAO,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC;SACjC,CAAC,CACL,CAAC;KACL;IAED,gBAAgB,CAAC,UAAkC,EAAE,KAA0B,EAAA;QAC3E,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAC9C;AAEO,IAAA,eAAe,CAAC,IAAoF,EAAA;;AACxG,QAAA,IAAI,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,MAAM,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE;YAC1F,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,CAA2C,yCAAA,CAAA,CAAC,CAAC;AAC7D,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACjD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,SAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,EAAE,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC;KAC5D;;+GA9CQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;4FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;iBACrB,CAAA;;;8BAKgB,QAAQ;;;;MCJZ,iBAAiB,CAAA;IAE1B,OAAO,OAAO,CAAC,MAA0B,EAAA;;AACrC,QAAA,MAAM,eAAe,GAAa;AAC9B,YAAA,OAAO,EAAE,kBAAkB;YAC3B,IAAI,EAAE,CAAC,IAAI,CAAC;AACZ,YAAA,UAAU,EAAE,CAAC,IAAU,KAAI;;AACvB,gBAAA,OAAO,IAAI,uBAAuB,CAAC,IAAI,EAAE,MAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,gBAAgB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC;aAC5E;SACJ,CAAC;AACF,QAAA,MAAM,yBAAyB,GAAG,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,eAAe,CAAC;QAEtE,OAAO;AACH,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE;AACP,gBAAA,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAC;gBAC9C,yBAAyB;gBACzB,WAAW;AACd,aAAA;SACJ,CAAC;KACL;;+GApBQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAHX,YAAY,CAAA,EAAA,OAAA,EAAA,CACjB,YAAY,CAAA,EAAA,CAAA,CAAA;gHAEb,iBAAiB,EAAA,CAAA,CAAA;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,YAAY,CAAC;oBAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;iBAC1B,CAAA;;;ACXD;;AAEG;;;;"}
@@ -8,7 +8,7 @@ import { Auth } from '@bravobit/bb-foundation/auth';
8
8
  class PermissionsHandler {
9
9
  }
10
10
 
11
- class RolePermissionHandler extends PermissionsHandler {
11
+ class LocalPermissionsHandler extends PermissionsHandler {
12
12
  constructor(auth, localPermissions) {
13
13
  super();
14
14
  this.auth = auth;
@@ -71,6 +71,8 @@ class Permissions {
71
71
  switch (mode) {
72
72
  case 'or':
73
73
  return this.verifyModeOr(requiredPermissions, activePermissions);
74
+ case 'not':
75
+ return this.verifyModeNot(requiredPermissions, activePermissions);
74
76
  case 'and':
75
77
  default:
76
78
  return this.verifyModeAnd(requiredPermissions, activePermissions);
@@ -85,6 +87,14 @@ class Permissions {
85
87
  }
86
88
  return true;
87
89
  }
90
+ verifyModeNot(permissions, activePermissions) {
91
+ for (const permission of permissions) {
92
+ if (activePermissions.includes(permission)) {
93
+ return false;
94
+ }
95
+ }
96
+ return true;
97
+ }
88
98
  verifyModeOr(permissions, activePermissions) {
89
99
  for (const permission of permissions) {
90
100
  const verified = activePermissions?.includes(permission);
@@ -214,7 +224,6 @@ class BbPermissionGuard {
214
224
  return true;
215
225
  }
216
226
  const onPermissionDeniedFn = this._config?.onPermissionDenied ?? null;
217
- console.log(onPermissionDeniedFn);
218
227
  if (!onPermissionDeniedFn) {
219
228
  return false;
220
229
  }
@@ -256,7 +265,7 @@ class PermissionsModule {
256
265
  provide: PermissionsHandler,
257
266
  deps: [Auth],
258
267
  useFactory: (auth) => {
259
- return new RolePermissionHandler(auth, config?.permissions ?? {});
268
+ return new LocalPermissionsHandler(auth, config?.localPermissions ?? {});
260
269
  }
261
270
  };
262
271
  const permissionHandlerProvider = config?.provider ?? defaultProvider;
@@ -285,5 +294,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
285
294
  * Generated bundle index. Do not edit.
286
295
  */
287
296
 
288
- export { BbPermission, BbPermissionGuard, Permissions, PermissionsConfig, PermissionsHandler, PermissionsModule, RolePermissionHandler };
297
+ export { BbPermission, BbPermissionGuard, LocalPermissionsHandler, Permissions, PermissionsConfig, PermissionsHandler, PermissionsModule };
289
298
  //# sourceMappingURL=bravobit-bb-foundation-permissions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-permissions.mjs","sources":["../../../projects/bb-foundation/permissions/src/lib/handlers/abstract.handler.ts","../../../projects/bb-foundation/permissions/src/lib/handlers/role.handler.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.service.ts","../../../projects/bb-foundation/permissions/src/lib/directives/permission.directive.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.interface.ts","../../../projects/bb-foundation/permissions/src/lib/guards/permission.guard.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.module.ts","../../../projects/bb-foundation/permissions/src/bravobit-bb-foundation-permissions.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\nexport abstract class PermissionsHandler {\n\n abstract get(): Observable<string[]> | string[];\n\n}\n","import {PermissionsHandler} from './abstract.handler';\nimport {Auth} from '@bravobit/bb-foundation/auth';\nimport {map} from 'rxjs/operators';\n\nexport class RolePermissionHandler extends PermissionsHandler {\n\n constructor(protected auth: Auth,\n protected localPermissions: Record<string, string[] | '*'>) {\n super();\n }\n\n override get() {\n return this.auth.user.pipe(\n map(user => user?.role ?? null),\n map(role => {\n if (role === null || role === undefined) {\n return [];\n }\n\n return this.getPermissionsForRole(role);\n })\n );\n }\n\n protected getPermissionsForRole(role: string) {\n return Object.keys(this.localPermissions ?? {}).reduce((previous, current) => {\n const roles = this.localPermissions?.[current] ?? [];\n if (roles === '*' || roles?.includes(role)) {\n return [...previous, current];\n }\n\n return previous;\n }, []);\n }\n\n}\n","import {BehaviorSubject, isObservable, of, Subscription} from 'rxjs';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {PermissionOptions} from './permissions.interface';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Injectable, OnDestroy} from '@angular/core';\n\n@Injectable()\nexport class Permissions implements OnDestroy {\n\n // State.\n private _activePermissions$ = new BehaviorSubject<string[]>([]);\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _handler: PermissionsHandler) {\n this.trackPermissions();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n all() {\n return this._activePermissions$.asObservable();\n }\n\n allSync() {\n return this._activePermissions$.getValue();\n }\n\n has(value: string | string[], options?: PermissionOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return of(false);\n }\n\n return this._activePermissions$.pipe(\n map(activePermissions => this.hasPermission(requiredPermissions, activePermissions, options)),\n distinctUntilChanged()\n );\n }\n\n hasSync(value: string | string[], options?: PermissionOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return false;\n }\n\n const activePermissions = this._activePermissions$.getValue();\n return this.hasPermission(requiredPermissions, activePermissions, options);\n }\n\n private hasPermission(requiredPermissions: string[], activePermissions: string[], options?: PermissionOptions) {\n const mode = options?.mode ?? 'and';\n switch (mode) {\n case 'or':\n return this.verifyModeOr(requiredPermissions, activePermissions);\n case 'and':\n default:\n return this.verifyModeAnd(requiredPermissions, activePermissions);\n }\n }\n\n private verifyModeAnd(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (!verified) {\n return false;\n }\n }\n\n return true;\n }\n\n private verifyModeOr(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (verified) {\n return true;\n }\n }\n\n return false;\n }\n\n private getRequiredPermissions(value: string | string[]) {\n return Array.isArray(value)\n ? value\n : [value];\n }\n\n private trackPermissions() {\n const data = this._handler.get();\n const permissions$ = isObservable(data) ? data : of(data);\n\n const subscription = permissions$.subscribe(permissions => {\n this._activePermissions$.next(permissions ?? []);\n });\n this._subscription.add(subscription);\n }\n\n}\n","import {Directive, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {distinctUntilChanged, switchMap} from 'rxjs/operators';\nimport {PermissionMode} from '../permissions.interface';\nimport {Permissions} from '../permissions.service';\n\n@Directive({\n selector: '[bbPermission]'\n})\nexport class BbPermission implements OnInit, OnDestroy {\n\n // Templates.\n private _elseTemplateRef: TemplateRef<any> | null = null;\n\n // View refs.\n private _thenViewRef: EmbeddedViewRef<any> | null = null;\n private _elseViewRef: EmbeddedViewRef<any> | null = null;\n\n // Data.\n private _valid: boolean = false;\n private _permission$ = new BehaviorSubject<string[]>([]);\n private _mode$ = new BehaviorSubject<PermissionMode>('and');\n\n @Input()\n set bbPermission(value: string | string[]) {\n const permissions = Array.isArray(value) ? value : [value];\n this._permission$.next(permissions);\n this.updateView();\n }\n\n @Input()\n set bbPermissionElse(templateRef: TemplateRef<any>) {\n this.assertTemplate('bbPermissionElse', templateRef);\n this._elseTemplateRef = templateRef;\n this.updateView();\n }\n\n @Input()\n set bbPermissionMode(mode: PermissionMode) {\n this._mode$.next(mode);\n }\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _permissions: Permissions,\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n ngOnInit() {\n const check$ = combineLatest([this._permission$, this._mode$]).pipe(\n switchMap(([permissions, mode]) => this._permissions.has(permissions, {mode})),\n distinctUntilChanged()\n );\n\n const subscription = check$.subscribe(valid => {\n this._valid = valid;\n this.updateView();\n });\n this._subscription.add(subscription);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private updateView() {\n if (this._valid) {\n if (!this._thenViewRef) {\n this._viewContainerRef.clear();\n this._elseViewRef = null;\n if (this._templateRef) {\n this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n }\n } else {\n if (!this._elseViewRef) {\n this._viewContainerRef.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);\n }\n }\n }\n }\n\n private assertTemplate(property: string, templateRef: TemplateRef<any> | null) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef.`);\n }\n }\n\n static ngAcceptInputType_bbPermission: string | string[];\n static ngAcceptInputType_bbPermissionElse: TemplateRef<any>;\n static ngAcceptInputType_bbPermissionMode: PermissionMode;\n\n}\n","import {ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Provider} from '@angular/core';\n\nexport class PermissionsConfig {\n permissions?: Record<string, string[] | '*'>;\n provider?: Provider;\n onPermissionDenied?: (router: Router, snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) => UrlTree;\n}\n\nexport interface PermissionOptions {\n mode?: PermissionMode;\n}\n\nexport type PermissionMode = 'and' | 'or';\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot} from '@angular/router';\nimport {PermissionOptions, PermissionsConfig} from '../permissions.interface';\nimport {Injectable, Optional} from '@angular/core';\nimport {Permissions} from '../permissions.service';\nimport {map} from 'rxjs/operators';\nimport {of} from 'rxjs';\n\ndeclare let ngDevMode;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BbPermissionGuard implements CanActivate, CanActivateChild {\n\n constructor(private _router: Router,\n private _permissions: Permissions,\n @Optional() private _config?: PermissionsConfig) {\n }\n\n canActivate(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const permission = snapshot?.data?.['permission'] ?? null;\n const permission$ = this.parsePermission(permission);\n return permission$.pipe(\n map(valid => {\n if (valid) {\n return true;\n }\n\n const onPermissionDeniedFn = this._config?.onPermissionDenied ?? null;\n console.log(onPermissionDeniedFn);\n if (!onPermissionDeniedFn) {\n return false;\n }\n\n const urlTree = onPermissionDeniedFn(this._router, snapshot, state);\n if (!urlTree) {\n return false;\n }\n\n return valid ? true : urlTree;\n })\n );\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.canActivate(childRoute, state);\n }\n\n private parsePermission(data: string | string[] | { value: string | string[], options?: PermissionOptions }) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && (data === undefined || data === null)) {\n console?.warn?.(`No \"data.permission\" property was passed.`);\n return of(false);\n }\n\n if (Array.isArray(data) || typeof data === 'string') {\n return this._permissions.has(data);\n }\n\n return this._permissions.has(data?.value, data?.options);\n }\n\n}\n","import {ModuleWithProviders, NgModule, Provider} from '@angular/core';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {BbPermission} from './directives/permission.directive';\nimport {RolePermissionHandler} from './handlers/role.handler';\nimport {PermissionsConfig} from './permissions.interface';\nimport {Permissions} from './permissions.service';\nimport {Auth} from '@bravobit/bb-foundation/auth';\n\n@NgModule({\n declarations: [BbPermission],\n exports: [BbPermission]\n})\nexport class PermissionsModule {\n\n static forRoot(config?: PermissionsConfig): ModuleWithProviders<PermissionsModule> {\n const defaultProvider: Provider = {\n provide: PermissionsHandler,\n deps: [Auth],\n useFactory: (auth: Auth) => {\n return new RolePermissionHandler(auth, config?.permissions ?? {});\n }\n };\n const permissionHandlerProvider = config?.provider ?? defaultProvider;\n\n return {\n ngModule: PermissionsModule,\n providers: [\n {provide: PermissionsConfig, useValue: config},\n permissionHandlerProvider,\n Permissions\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PermissionsHandler","i1.Permissions","i2.Permissions","i3.PermissionsConfig"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-permissions.mjs","sources":["../../../projects/bb-foundation/permissions/src/lib/handlers/abstract.handler.ts","../../../projects/bb-foundation/permissions/src/lib/handlers/local.handler.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.service.ts","../../../projects/bb-foundation/permissions/src/lib/directives/permission.directive.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.interface.ts","../../../projects/bb-foundation/permissions/src/lib/guards/permission.guard.ts","../../../projects/bb-foundation/permissions/src/lib/permissions.module.ts","../../../projects/bb-foundation/permissions/src/bravobit-bb-foundation-permissions.ts"],"sourcesContent":["import {Observable} from 'rxjs';\n\nexport abstract class PermissionsHandler {\n\n abstract get(): Observable<string[]> | string[];\n\n}\n","import {LocalPermissionsData} from '../permissions.interface';\nimport {PermissionsHandler} from './abstract.handler';\nimport {Auth} from '@bravobit/bb-foundation/auth';\nimport {map} from 'rxjs/operators';\n\nexport class LocalPermissionsHandler extends PermissionsHandler {\n\n constructor(protected auth: Auth,\n protected localPermissions: LocalPermissionsData) {\n super();\n }\n\n override get() {\n return this.auth.user.pipe(\n map(user => user?.role ?? null),\n map(role => {\n if (role === null || role === undefined) {\n return [];\n }\n\n return this.getPermissionsForRole(role);\n })\n );\n }\n\n protected getPermissionsForRole(role: string) {\n return Object.keys(this.localPermissions ?? {}).reduce((previous, current) => {\n const roles = this.localPermissions?.[current] ?? [];\n if (roles === '*' || roles?.includes(role)) {\n return [...previous, current];\n }\n\n return previous;\n }, []);\n }\n\n}\n","import {BehaviorSubject, isObservable, of, Subscription} from 'rxjs';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {PermissionsOptions} from './permissions.interface';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Injectable, OnDestroy} from '@angular/core';\n\n@Injectable()\nexport class Permissions implements OnDestroy {\n\n // State.\n private _activePermissions$ = new BehaviorSubject<string[]>([]);\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _handler: PermissionsHandler) {\n this.trackPermissions();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n all() {\n return this._activePermissions$.asObservable();\n }\n\n allSync() {\n return this._activePermissions$.getValue();\n }\n\n has(value: string | string[], options?: PermissionsOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return of(false);\n }\n\n return this._activePermissions$.pipe(\n map(activePermissions => this.hasPermission(requiredPermissions, activePermissions, options)),\n distinctUntilChanged()\n );\n }\n\n hasSync(value: string | string[], options?: PermissionsOptions) {\n const requiredPermissions = this.getRequiredPermissions(value);\n if (requiredPermissions?.length <= 0) {\n return false;\n }\n\n const activePermissions = this._activePermissions$.getValue();\n return this.hasPermission(requiredPermissions, activePermissions, options);\n }\n\n private hasPermission(requiredPermissions: string[], activePermissions: string[], options?: PermissionsOptions) {\n const mode = options?.mode ?? 'and';\n switch (mode) {\n case 'or':\n return this.verifyModeOr(requiredPermissions, activePermissions);\n case 'not':\n return this.verifyModeNot(requiredPermissions, activePermissions);\n case 'and':\n default:\n return this.verifyModeAnd(requiredPermissions, activePermissions);\n }\n }\n\n private verifyModeAnd(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (!verified) {\n return false;\n }\n }\n\n return true;\n }\n\n private verifyModeNot(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n if (activePermissions.includes(permission)) {\n return false;\n }\n }\n\n return true;\n }\n\n private verifyModeOr(permissions: string[], activePermissions: string[]) {\n for (const permission of permissions) {\n const verified = activePermissions?.includes(permission);\n if (verified) {\n return true;\n }\n }\n\n return false;\n }\n\n private getRequiredPermissions(value: string | string[]) {\n return Array.isArray(value)\n ? value\n : [value];\n }\n\n private trackPermissions() {\n const data = this._handler.get();\n const permissions$ = isObservable(data) ? data : of(data);\n\n const subscription = permissions$.subscribe(permissions => {\n this._activePermissions$.next(permissions ?? []);\n });\n this._subscription.add(subscription);\n }\n\n}\n","import {Directive, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {distinctUntilChanged, switchMap} from 'rxjs/operators';\nimport {PermissionsMode} from '../permissions.interface';\nimport {Permissions} from '../permissions.service';\n\n@Directive({\n selector: '[bbPermission]'\n})\nexport class BbPermission implements OnInit, OnDestroy {\n\n // Templates.\n private _elseTemplateRef: TemplateRef<any> | null = null;\n\n // View refs.\n private _thenViewRef: EmbeddedViewRef<any> | null = null;\n private _elseViewRef: EmbeddedViewRef<any> | null = null;\n\n // Data.\n private _valid: boolean = false;\n private _permission$ = new BehaviorSubject<string[]>([]);\n private _mode$ = new BehaviorSubject<PermissionsMode>('and');\n\n @Input()\n set bbPermission(value: string | string[]) {\n const permissions = Array.isArray(value) ? value : [value];\n this._permission$.next(permissions);\n this.updateView();\n }\n\n @Input()\n set bbPermissionElse(templateRef: TemplateRef<any>) {\n this.assertTemplate('bbPermissionElse', templateRef);\n this._elseTemplateRef = templateRef;\n this.updateView();\n }\n\n @Input()\n set bbPermissionMode(mode: PermissionsMode) {\n this._mode$.next(mode);\n }\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _permissions: Permissions,\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n ngOnInit() {\n const check$ = combineLatest([this._permission$, this._mode$]).pipe(\n switchMap(([permissions, mode]) => this._permissions.has(permissions, {mode})),\n distinctUntilChanged()\n );\n\n const subscription = check$.subscribe(valid => {\n this._valid = valid;\n this.updateView();\n });\n this._subscription.add(subscription);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private updateView() {\n if (this._valid) {\n if (!this._thenViewRef) {\n this._viewContainerRef.clear();\n this._elseViewRef = null;\n if (this._templateRef) {\n this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n }\n } else {\n if (!this._elseViewRef) {\n this._viewContainerRef.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);\n }\n }\n }\n }\n\n private assertTemplate(property: string, templateRef: TemplateRef<any> | null) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef.`);\n }\n }\n\n static ngAcceptInputType_bbPermission: string | string[];\n static ngAcceptInputType_bbPermissionElse: TemplateRef<any>;\n static ngAcceptInputType_bbPermissionMode: PermissionsMode;\n\n}\n","import {ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Provider} from '@angular/core';\n\nexport class PermissionsConfig {\n provider?: Provider;\n localPermissions?: LocalPermissionsData;\n onPermissionDenied?: (router: Router, snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) => UrlTree;\n}\n\nexport interface PermissionsOptions {\n mode?: PermissionsMode;\n}\n\nexport type PermissionsMode = 'and' | 'or' | 'not';\nexport type LocalPermissionsData<T extends string = any> = Record<string, T[] | '*'>;\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot} from '@angular/router';\nimport {PermissionsOptions, PermissionsConfig} from '../permissions.interface';\nimport {Injectable, Optional} from '@angular/core';\nimport {Permissions} from '../permissions.service';\nimport {map} from 'rxjs/operators';\nimport {of} from 'rxjs';\n\ndeclare let ngDevMode;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BbPermissionGuard implements CanActivate, CanActivateChild {\n\n constructor(private _router: Router,\n private _permissions: Permissions,\n @Optional() private _config?: PermissionsConfig) {\n }\n\n canActivate(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const permission = snapshot?.data?.['permission'] ?? null;\n const permission$ = this.parsePermission(permission);\n return permission$.pipe(\n map(valid => {\n if (valid) {\n return true;\n }\n\n const onPermissionDeniedFn = this._config?.onPermissionDenied ?? null;\n if (!onPermissionDeniedFn) {\n return false;\n }\n\n const urlTree = onPermissionDeniedFn(this._router, snapshot, state);\n if (!urlTree) {\n return false;\n }\n\n return valid ? true : urlTree;\n })\n );\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.canActivate(childRoute, state);\n }\n\n private parsePermission(data: string | string[] | { value: string | string[], options?: PermissionsOptions }) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && (data === undefined || data === null)) {\n console?.warn?.(`No \"data.permission\" property was passed.`);\n return of(false);\n }\n\n if (Array.isArray(data) || typeof data === 'string') {\n return this._permissions.has(data);\n }\n\n return this._permissions.has(data?.value, data?.options);\n }\n\n}\n","import {ModuleWithProviders, NgModule, Provider} from '@angular/core';\nimport {LocalPermissionsHandler} from './handlers/local.handler';\nimport {PermissionsHandler} from './handlers/abstract.handler';\nimport {BbPermission} from './directives/permission.directive';\nimport {PermissionsConfig} from './permissions.interface';\nimport {Permissions} from './permissions.service';\nimport {Auth} from '@bravobit/bb-foundation/auth';\n\n@NgModule({\n declarations: [BbPermission],\n exports: [BbPermission]\n})\nexport class PermissionsModule {\n\n static forRoot(config?: PermissionsConfig): ModuleWithProviders<PermissionsModule> {\n const defaultProvider: Provider = {\n provide: PermissionsHandler,\n deps: [Auth],\n useFactory: (auth: Auth) => {\n return new LocalPermissionsHandler(auth, config?.localPermissions ?? {});\n }\n };\n const permissionHandlerProvider = config?.provider ?? defaultProvider;\n\n return {\n ngModule: PermissionsModule,\n providers: [\n {provide: PermissionsConfig, useValue: config},\n permissionHandlerProvider,\n Permissions\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PermissionsHandler","i1.Permissions","i2.Permissions","i3.PermissionsConfig"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bravobit/bb-foundation",
3
- "version": "0.24.0",
3
+ "version": "0.24.1",
4
4
  "description": "The Angular core foundation of the Bravobit team.",
5
5
  "author": {
6
6
  "name": "Stan van Heumen",
@@ -1,5 +1,5 @@
1
1
  import { OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
2
- import { PermissionMode } from '../permissions.interface';
2
+ import { PermissionsMode } from '../permissions.interface';
3
3
  import { Permissions } from '../permissions.service';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class BbPermission implements OnInit, OnDestroy {
@@ -14,7 +14,7 @@ export declare class BbPermission implements OnInit, OnDestroy {
14
14
  private _mode$;
15
15
  set bbPermission(value: string | string[]);
16
16
  set bbPermissionElse(templateRef: TemplateRef<any>);
17
- set bbPermissionMode(mode: PermissionMode);
17
+ set bbPermissionMode(mode: PermissionsMode);
18
18
  private _subscription;
19
19
  constructor(_permissions: Permissions, _templateRef: TemplateRef<any>, _viewContainerRef: ViewContainerRef);
20
20
  ngOnInit(): void;
@@ -23,7 +23,7 @@ export declare class BbPermission implements OnInit, OnDestroy {
23
23
  private assertTemplate;
24
24
  static ngAcceptInputType_bbPermission: string | string[];
25
25
  static ngAcceptInputType_bbPermissionElse: TemplateRef<any>;
26
- static ngAcceptInputType_bbPermissionMode: PermissionMode;
26
+ static ngAcceptInputType_bbPermissionMode: PermissionsMode;
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<BbPermission, never>;
28
28
  static ɵdir: i0.ɵɵDirectiveDeclaration<BbPermission, "[bbPermission]", never, { "bbPermission": "bbPermission"; "bbPermissionElse": "bbPermissionElse"; "bbPermissionMode": "bbPermissionMode"; }, {}, never, never, false>;
29
29
  }
@@ -0,0 +1,10 @@
1
+ import { LocalPermissionsData } from '../permissions.interface';
2
+ import { PermissionsHandler } from './abstract.handler';
3
+ import { Auth } from '@bravobit/bb-foundation/auth';
4
+ export declare class LocalPermissionsHandler extends PermissionsHandler {
5
+ protected auth: Auth;
6
+ protected localPermissions: LocalPermissionsData;
7
+ constructor(auth: Auth, localPermissions: LocalPermissionsData);
8
+ get(): import("rxjs").Observable<any[]>;
9
+ protected getPermissionsForRole(role: string): any[];
10
+ }
@@ -1,11 +1,12 @@
1
1
  import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
2
2
  import { Provider } from '@angular/core';
3
3
  export declare class PermissionsConfig {
4
- permissions?: Record<string, string[] | '*'>;
5
4
  provider?: Provider;
5
+ localPermissions?: LocalPermissionsData;
6
6
  onPermissionDenied?: (router: Router, snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) => UrlTree;
7
7
  }
8
- export interface PermissionOptions {
9
- mode?: PermissionMode;
8
+ export interface PermissionsOptions {
9
+ mode?: PermissionsMode;
10
10
  }
11
- export declare type PermissionMode = 'and' | 'or';
11
+ export declare type PermissionsMode = 'and' | 'or' | 'not';
12
+ export declare type LocalPermissionsData<T extends string = any> = Record<string, T[] | '*'>;
@@ -1,5 +1,5 @@
1
1
  import { PermissionsHandler } from './handlers/abstract.handler';
2
- import { PermissionOptions } from './permissions.interface';
2
+ import { PermissionsOptions } from './permissions.interface';
3
3
  import { OnDestroy } from '@angular/core';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class Permissions implements OnDestroy {
@@ -10,10 +10,11 @@ export declare class Permissions implements OnDestroy {
10
10
  ngOnDestroy(): void;
11
11
  all(): import("rxjs").Observable<string[]>;
12
12
  allSync(): string[];
13
- has(value: string | string[], options?: PermissionOptions): import("rxjs").Observable<boolean>;
14
- hasSync(value: string | string[], options?: PermissionOptions): boolean;
13
+ has(value: string | string[], options?: PermissionsOptions): import("rxjs").Observable<boolean>;
14
+ hasSync(value: string | string[], options?: PermissionsOptions): boolean;
15
15
  private hasPermission;
16
16
  private verifyModeAnd;
17
+ private verifyModeNot;
17
18
  private verifyModeOr;
18
19
  private getRequiredPermissions;
19
20
  private trackPermissions;
@@ -1,5 +1,5 @@
1
1
  export * from './lib/handlers/abstract.handler';
2
- export * from './lib/handlers/role.handler';
2
+ export * from './lib/handlers/local.handler';
3
3
  export * from './lib/directives/permission.directive';
4
4
  export * from './lib/guards/permission.guard';
5
5
  export * from './lib/permissions.interface';
@@ -1,27 +0,0 @@
1
- import { PermissionsHandler } from './abstract.handler';
2
- import { map } from 'rxjs/operators';
3
- export class RolePermissionHandler extends PermissionsHandler {
4
- constructor(auth, localPermissions) {
5
- super();
6
- this.auth = auth;
7
- this.localPermissions = localPermissions;
8
- }
9
- get() {
10
- return this.auth.user.pipe(map(user => user?.role ?? null), map(role => {
11
- if (role === null || role === undefined) {
12
- return [];
13
- }
14
- return this.getPermissionsForRole(role);
15
- }));
16
- }
17
- getPermissionsForRole(role) {
18
- return Object.keys(this.localPermissions ?? {}).reduce((previous, current) => {
19
- const roles = this.localPermissions?.[current] ?? [];
20
- if (roles === '*' || roles?.includes(role)) {
21
- return [...previous, current];
22
- }
23
- return previous;
24
- }, []);
25
- }
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9wZXJtaXNzaW9ucy9zcmMvbGliL2hhbmRsZXJzL3JvbGUuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGtCQUFrQjtJQUV6RCxZQUFzQixJQUFVLEVBQ1YsZ0JBQWdEO1FBQ2xFLEtBQUssRUFBRSxDQUFDO1FBRlUsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUNWLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZ0M7SUFFdEUsQ0FBQztJQUVRLEdBQUc7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsRUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1AsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLE9BQU8sRUFBRSxDQUFDO2FBQ2I7WUFFRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVTLHFCQUFxQixDQUFDLElBQVk7UUFDeEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDekUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JELElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QyxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDakM7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Blcm1pc3Npb25zSGFuZGxlcn0gZnJvbSAnLi9hYnN0cmFjdC5oYW5kbGVyJztcbmltcG9ydCB7QXV0aH0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vYXV0aCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgUm9sZVBlcm1pc3Npb25IYW5kbGVyIGV4dGVuZHMgUGVybWlzc2lvbnNIYW5kbGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBhdXRoOiBBdXRoLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBsb2NhbFBlcm1pc3Npb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8ICcqJz4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGgudXNlci5waXBlKFxuICAgICAgICAgICAgbWFwKHVzZXIgPT4gdXNlcj8ucm9sZSA/PyBudWxsKSxcbiAgICAgICAgICAgIG1hcChyb2xlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocm9sZSA9PT0gbnVsbCB8fCByb2xlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBlcm1pc3Npb25zRm9yUm9sZShyb2xlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFBlcm1pc3Npb25zRm9yUm9sZShyb2xlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubG9jYWxQZXJtaXNzaW9ucyA/PyB7fSkucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm9sZXMgPSB0aGlzLmxvY2FsUGVybWlzc2lvbnM/LltjdXJyZW50XSA/PyBbXTtcbiAgICAgICAgICAgIGlmIChyb2xlcyA9PT0gJyonIHx8IHJvbGVzPy5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJldmlvdXMsIGN1cnJlbnRdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- import { PermissionsHandler } from './abstract.handler';
2
- import { Auth } from '@bravobit/bb-foundation/auth';
3
- export declare class RolePermissionHandler extends PermissionsHandler {
4
- protected auth: Auth;
5
- protected localPermissions: Record<string, string[] | '*'>;
6
- constructor(auth: Auth, localPermissions: Record<string, string[] | '*'>);
7
- get(): import("rxjs").Observable<any[]>;
8
- protected getPermissionsForRole(role: string): any[];
9
- }