@enigmatry/entry-components 1.15.1-preview.28 → 1.15.1-preview.29
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.
- package/esm2020/permissions/enigmatry-entry-components-permissions.mjs +5 -0
- package/esm2020/permissions/permission-type.mjs +2 -0
- package/esm2020/permissions/permission.directive.mjs +35 -0
- package/esm2020/permissions/permission.guard.mjs +14 -0
- package/esm2020/permissions/permission.module.mjs +29 -0
- package/esm2020/permissions/permission.pipe.mjs +20 -0
- package/esm2020/permissions/permission.service.mjs +3 -0
- package/esm2020/permissions/public-api.mjs +6 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/enigmatry-entry-components-permissions.mjs +98 -0
- package/fesm2015/enigmatry-entry-components-permissions.mjs.map +1 -0
- package/fesm2015/enigmatry-entry-components.mjs +1 -0
- package/fesm2015/enigmatry-entry-components.mjs.map +1 -1
- package/fesm2020/enigmatry-entry-components-permissions.mjs +97 -0
- package/fesm2020/enigmatry-entry-components-permissions.mjs.map +1 -0
- package/fesm2020/enigmatry-entry-components.mjs +1 -0
- package/fesm2020/enigmatry-entry-components.mjs.map +1 -1
- package/package.json +9 -1
- package/permissions/README.md +68 -0
- package/permissions/index.d.ts +5 -0
- package/permissions/permission-type.d.ts +3 -0
- package/permissions/permission.directive.d.ts +11 -0
- package/permissions/permission.guard.d.ts +2 -0
- package/permissions/permission.module.d.ts +9 -0
- package/permissions/permission.pipe.d.ts +11 -0
- package/permissions/permission.service.d.ts +4 -0
- package/permissions/public-api.d.ts +5 -0
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5pZ21hdHJ5LWVudHJ5LWNvbXBvbmVudHMtcGVybWlzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvcGVybWlzc2lvbnMvZW5pZ21hdHJ5LWVudHJ5LWNvbXBvbmVudHMtcGVybWlzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb24tdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUGVybWlzc2lvblR5cGUgPSBudW1iZXIgfCBzdHJpbmcgfCB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfTtcbiJdfQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NgIf } from '@angular/common';
|
|
2
|
+
import { Directive, Input, inject } from '@angular/core';
|
|
3
|
+
import { EntryPermissionService } from './permission.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class EntryPermissionDirective {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.ngIfDirective = inject(NgIf);
|
|
9
|
+
this.permissionService = inject((EntryPermissionService));
|
|
10
|
+
}
|
|
11
|
+
set only(permissions) {
|
|
12
|
+
this.ngIfDirective.ngIf = this.permissionService.hasPermissions(permissions);
|
|
13
|
+
}
|
|
14
|
+
set except(permissions) {
|
|
15
|
+
this.ngIfDirective.ngIf = !this.permissionService.hasPermissions(permissions);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
EntryPermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
19
|
+
EntryPermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: EntryPermissionDirective, selector: "[entryPermissionsOnly],[entryPermissionsExcept]", inputs: { only: ["entryPermissionsOnly", "only"], except: ["entryPermissionsExcept", "except"] }, hostDirectives: [{ directive: i1.NgIf }], ngImport: i0 });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionDirective, decorators: [{
|
|
21
|
+
type: Directive,
|
|
22
|
+
args: [{
|
|
23
|
+
selector: '[entryPermissionsOnly],[entryPermissionsExcept]',
|
|
24
|
+
hostDirectives: [{
|
|
25
|
+
directive: NgIf
|
|
26
|
+
}]
|
|
27
|
+
}]
|
|
28
|
+
}], propDecorators: { only: [{
|
|
29
|
+
type: Input,
|
|
30
|
+
args: ['entryPermissionsOnly']
|
|
31
|
+
}], except: [{
|
|
32
|
+
type: Input,
|
|
33
|
+
args: ['entryPermissionsExcept']
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBUTlELE1BQU0sT0FBTyx3QkFBd0I7SUFOckM7UUFPVSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixzQkFBaUIsR0FBRyxNQUFNLENBQUMsQ0FBQSxzQkFBeUIsQ0FBQSxDQUFDLENBQUM7S0FTL0Q7SUFQQyxJQUFtQyxJQUFJLENBQUMsV0FBZ0I7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBcUMsTUFBTSxDQUFDLFdBQWdCO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRixDQUFDOztxSEFWVSx3QkFBd0I7eUdBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQU5wQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpREFBaUQ7b0JBQzNELGNBQWMsRUFBRSxDQUFDOzRCQUNmLFNBQVMsRUFBRSxJQUFJO3lCQUNoQixDQUFDO2lCQUNIOzhCQUtvQyxJQUFJO3NCQUF0QyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFJUSxNQUFNO3NCQUExQyxLQUFLO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4vcGVybWlzc2lvbi10eXBlJztcbmltcG9ydCB7IEVudHJ5UGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Blcm1pc3Npb24uc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlbnRyeVBlcm1pc3Npb25zT25seV0sW2VudHJ5UGVybWlzc2lvbnNFeGNlcHRdJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFt7XG4gICAgZGlyZWN0aXZlOiBOZ0lmXG4gIH1dXG59KVxuZXhwb3J0IGNsYXNzIEVudHJ5UGVybWlzc2lvbkRpcmVjdGl2ZTxUIGV4dGVuZHMgUGVybWlzc2lvblR5cGU+IHtcbiAgcHJpdmF0ZSBuZ0lmRGlyZWN0aXZlID0gaW5qZWN0KE5nSWYpO1xuICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlID0gaW5qZWN0KEVudHJ5UGVybWlzc2lvblNlcnZpY2U8VD4pO1xuXG4gIEBJbnB1dCgnZW50cnlQZXJtaXNzaW9uc09ubHknKSBzZXQgb25seShwZXJtaXNzaW9uczogVFtdKSB7XG4gICAgdGhpcy5uZ0lmRGlyZWN0aXZlLm5nSWYgPSB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmhhc1Blcm1pc3Npb25zKHBlcm1pc3Npb25zKTtcbiAgfVxuXG4gIEBJbnB1dCgnZW50cnlQZXJtaXNzaW9uc0V4Y2VwdCcpIHNldCBleGNlcHQocGVybWlzc2lvbnM6IFRbXSkge1xuICAgIHRoaXMubmdJZkRpcmVjdGl2ZS5uZ0lmID0gIXRoaXMucGVybWlzc2lvblNlcnZpY2UuaGFzUGVybWlzc2lvbnMocGVybWlzc2lvbnMpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { EntryPermissionService } from './permission.service';
|
|
3
|
+
export const entryPermissionGuard = (route, _state) => {
|
|
4
|
+
const permissionService = inject(EntryPermissionService);
|
|
5
|
+
const routePermissions = route.data.permissions ?? {};
|
|
6
|
+
if (routePermissions.only) {
|
|
7
|
+
return permissionService.hasPermissions(routePermissions.only);
|
|
8
|
+
}
|
|
9
|
+
if (routePermissions.except) {
|
|
10
|
+
return !permissionService.hasPermissions(routePermissions.except);
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9uLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPOUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQ2pDLENBQTRCLEtBQTZCLEVBQUUsTUFBMkIsRUFBRSxFQUFFO0lBQ3hGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQXVDLElBQUksRUFBRSxDQUFDO0lBRWxGLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQ3pCLE9BQU8saUJBQWlCLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2hFO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7UUFDM0IsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNuRTtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4sIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4vcGVybWlzc2lvbi10eXBlJztcclxuaW1wb3J0IHsgRW50cnlQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4vcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBSb3V0ZVBlcm1pc3Npb25Db25maWc8VCBleHRlbmRzIFBlcm1pc3Npb25UeXBlPiB7XHJcbiAgb25seT86IFRbXTtcclxuICBleGNlcHQ/OiBUW107XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBlbnRyeVBlcm1pc3Npb25HdWFyZDogQ2FuQWN0aXZhdGVGbiA9XHJcbjxUIGV4dGVuZHMgUGVybWlzc2lvblR5cGU+IChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgX3N0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XHJcbiAgY29uc3QgcGVybWlzc2lvblNlcnZpY2UgPSBpbmplY3QoRW50cnlQZXJtaXNzaW9uU2VydmljZSk7XHJcbiAgY29uc3Qgcm91dGVQZXJtaXNzaW9ucyA9IHJvdXRlLmRhdGEucGVybWlzc2lvbnMgYXMgUm91dGVQZXJtaXNzaW9uQ29uZmlnPFQ+ID8/IHt9O1xyXG5cclxuICBpZiAocm91dGVQZXJtaXNzaW9ucy5vbmx5KSB7XHJcbiAgICByZXR1cm4gcGVybWlzc2lvblNlcnZpY2UuaGFzUGVybWlzc2lvbnMocm91dGVQZXJtaXNzaW9ucy5vbmx5KTtcclxuICB9XHJcbiAgaWYgKHJvdXRlUGVybWlzc2lvbnMuZXhjZXB0KSB7XHJcbiAgICByZXR1cm4gIXBlcm1pc3Npb25TZXJ2aWNlLmhhc1Blcm1pc3Npb25zKHJvdXRlUGVybWlzc2lvbnMuZXhjZXB0KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufTtcclxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { EntryPermissionDirective } from './permission.directive';
|
|
4
|
+
import { EntryPermissionPipe } from './permission.pipe';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class EntryPermissionModule {
|
|
7
|
+
}
|
|
8
|
+
EntryPermissionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
EntryPermissionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, declarations: [EntryPermissionDirective,
|
|
10
|
+
EntryPermissionPipe], imports: [CommonModule], exports: [EntryPermissionDirective,
|
|
11
|
+
EntryPermissionPipe] });
|
|
12
|
+
EntryPermissionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, imports: [CommonModule] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [
|
|
17
|
+
EntryPermissionDirective,
|
|
18
|
+
EntryPermissionPipe
|
|
19
|
+
],
|
|
20
|
+
imports: [
|
|
21
|
+
CommonModule
|
|
22
|
+
],
|
|
23
|
+
exports: [
|
|
24
|
+
EntryPermissionDirective,
|
|
25
|
+
EntryPermissionPipe
|
|
26
|
+
]
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBZXhELE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixpQkFYOUIsd0JBQXdCO1FBQ3hCLG1CQUFtQixhQUduQixZQUFZLGFBR1osd0JBQXdCO1FBQ3hCLG1CQUFtQjttSEFHVixxQkFBcUIsWUFQOUIsWUFBWTsyRkFPSCxxQkFBcUI7a0JBYmpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4QixtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFbnRyeVBlcm1pc3Npb25EaXJlY3RpdmUgfSBmcm9tICcuL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEVudHJ5UGVybWlzc2lvblBpcGUgfSBmcm9tICcuL3Blcm1pc3Npb24ucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEVudHJ5UGVybWlzc2lvbkRpcmVjdGl2ZSxcbiAgICBFbnRyeVBlcm1pc3Npb25QaXBlXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEVudHJ5UGVybWlzc2lvbkRpcmVjdGl2ZSxcbiAgICBFbnRyeVBlcm1pc3Npb25QaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRW50cnlQZXJtaXNzaW9uTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./permission.service";
|
|
4
|
+
export class EntryPermissionPipe {
|
|
5
|
+
constructor(permissionsService) {
|
|
6
|
+
this.permissionsService = permissionsService;
|
|
7
|
+
}
|
|
8
|
+
transform(permissions) {
|
|
9
|
+
return this.permissionsService.hasPermissions(permissions);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
EntryPermissionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, deps: [{ token: i1.EntryPermissionService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
13
|
+
EntryPermissionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, name: "entryHasPermissions" });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, decorators: [{
|
|
15
|
+
type: Pipe,
|
|
16
|
+
args: [{
|
|
17
|
+
name: 'entryHasPermissions'
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: function () { return [{ type: i1.EntryPermissionService }]; } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb24ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBT3BELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBb0Isa0JBQTZDO1FBQTdDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7SUFBSSxDQUFDO0lBRXRFLFNBQVMsQ0FBQyxXQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7Z0hBTFUsbUJBQW1COzhHQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUscUJBQXFCO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi9wZXJtaXNzaW9uLXR5cGUnO1xuaW1wb3J0IHsgRW50cnlQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4vcGVybWlzc2lvbi5zZXJ2aWNlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZW50cnlIYXNQZXJtaXNzaW9ucydcbn0pXG5leHBvcnQgY2xhc3MgRW50cnlQZXJtaXNzaW9uUGlwZTxUIGV4dGVuZHMgUGVybWlzc2lvblR5cGU+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbnNTZXJ2aWNlOiBFbnRyeVBlcm1pc3Npb25TZXJ2aWNlPFQ+KSB7IH1cblxuICB0cmFuc2Zvcm0ocGVybWlzc2lvbnM6IFRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zU2VydmljZS5oYXNQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class EntryPermissionService {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQWdCLHNCQUFzQjtDQUUzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi9wZXJtaXNzaW9uLXR5cGUnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudHJ5UGVybWlzc2lvblNlcnZpY2U8VCBleHRlbmRzIFBlcm1pc3Npb25UeXBlPiB7XHJcbiAgcHVibGljIGFic3RyYWN0IGhhc1Blcm1pc3Npb25zKHBlcm1pc3Npb25zOiBUW10pOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { EntryPermissionPipe } from './permission.pipe';
|
|
2
|
+
export { EntryPermissionDirective } from './permission.directive';
|
|
3
|
+
export { entryPermissionGuard } from './permission.guard';
|
|
4
|
+
export { EntryPermissionService } from './permission.service';
|
|
5
|
+
export { EntryPermissionModule } from './permission.module';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRW50cnlQZXJtaXNzaW9uUGlwZSB9IGZyb20gJy4vcGVybWlzc2lvbi5waXBlJztcbmV4cG9ydCB7IEVudHJ5UGVybWlzc2lvbkRpcmVjdGl2ZSB9IGZyb20gJy4vcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgZW50cnlQZXJtaXNzaW9uR3VhcmQgfSBmcm9tICcuL3Blcm1pc3Npb24uZ3VhcmQnO1xuZXhwb3J0IHsgRW50cnlQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4vcGVybWlzc2lvbi5zZXJ2aWNlJztcblxuZXhwb3J0IHsgRW50cnlQZXJtaXNzaW9uTW9kdWxlIH0gZnJvbSAnLi9wZXJtaXNzaW9uLm1vZHVsZSc7XG4iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -6,4 +6,5 @@ export * from '@enigmatry/entry-components/search-filter';
|
|
|
6
6
|
export * from '@enigmatry/entry-components/validation';
|
|
7
7
|
export * from '@enigmatry/entry-components/button';
|
|
8
8
|
export * from '@enigmatry/entry-components/file-input';
|
|
9
|
-
|
|
9
|
+
export * from '@enigmatry/entry-components/permissions';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGVudHJ5LWNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvZGlhbG9nJztcbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyJztcbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy92YWxpZGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL2ZpbGUtaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnQGVuaWdtYXRyeS9lbnRyeS1jb21wb25lbnRzL3Blcm1pc3Npb25zJztcbiJdfQ==
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Pipe, inject, Directive, Input, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { NgIf, CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class EntryPermissionService {
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
class EntryPermissionPipe {
|
|
10
|
+
constructor(permissionsService) {
|
|
11
|
+
this.permissionsService = permissionsService;
|
|
12
|
+
}
|
|
13
|
+
transform(permissions) {
|
|
14
|
+
return this.permissionsService.hasPermissions(permissions);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
EntryPermissionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, deps: [{ token: EntryPermissionService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
18
|
+
EntryPermissionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, name: "entryHasPermissions" });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'entryHasPermissions'
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: EntryPermissionService }]; } });
|
|
25
|
+
|
|
26
|
+
class EntryPermissionDirective {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.ngIfDirective = inject(NgIf);
|
|
29
|
+
this.permissionService = inject((EntryPermissionService));
|
|
30
|
+
}
|
|
31
|
+
set only(permissions) {
|
|
32
|
+
this.ngIfDirective.ngIf = this.permissionService.hasPermissions(permissions);
|
|
33
|
+
}
|
|
34
|
+
set except(permissions) {
|
|
35
|
+
this.ngIfDirective.ngIf = !this.permissionService.hasPermissions(permissions);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
EntryPermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
39
|
+
EntryPermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: EntryPermissionDirective, selector: "[entryPermissionsOnly],[entryPermissionsExcept]", inputs: { only: ["entryPermissionsOnly", "only"], except: ["entryPermissionsExcept", "except"] }, hostDirectives: [{ directive: i1.NgIf }], ngImport: i0 });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionDirective, decorators: [{
|
|
41
|
+
type: Directive,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: '[entryPermissionsOnly],[entryPermissionsExcept]',
|
|
44
|
+
hostDirectives: [{
|
|
45
|
+
directive: NgIf
|
|
46
|
+
}]
|
|
47
|
+
}]
|
|
48
|
+
}], propDecorators: { only: [{
|
|
49
|
+
type: Input,
|
|
50
|
+
args: ['entryPermissionsOnly']
|
|
51
|
+
}], except: [{
|
|
52
|
+
type: Input,
|
|
53
|
+
args: ['entryPermissionsExcept']
|
|
54
|
+
}] } });
|
|
55
|
+
|
|
56
|
+
const entryPermissionGuard = (route, _state) => {
|
|
57
|
+
var _a;
|
|
58
|
+
const permissionService = inject(EntryPermissionService);
|
|
59
|
+
const routePermissions = (_a = route.data.permissions) !== null && _a !== void 0 ? _a : {};
|
|
60
|
+
if (routePermissions.only) {
|
|
61
|
+
return permissionService.hasPermissions(routePermissions.only);
|
|
62
|
+
}
|
|
63
|
+
if (routePermissions.except) {
|
|
64
|
+
return !permissionService.hasPermissions(routePermissions.except);
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
class EntryPermissionModule {
|
|
70
|
+
}
|
|
71
|
+
EntryPermissionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
72
|
+
EntryPermissionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, declarations: [EntryPermissionDirective,
|
|
73
|
+
EntryPermissionPipe], imports: [CommonModule], exports: [EntryPermissionDirective,
|
|
74
|
+
EntryPermissionPipe] });
|
|
75
|
+
EntryPermissionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, imports: [CommonModule] });
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, decorators: [{
|
|
77
|
+
type: NgModule,
|
|
78
|
+
args: [{
|
|
79
|
+
declarations: [
|
|
80
|
+
EntryPermissionDirective,
|
|
81
|
+
EntryPermissionPipe
|
|
82
|
+
],
|
|
83
|
+
imports: [
|
|
84
|
+
CommonModule
|
|
85
|
+
],
|
|
86
|
+
exports: [
|
|
87
|
+
EntryPermissionDirective,
|
|
88
|
+
EntryPermissionPipe
|
|
89
|
+
]
|
|
90
|
+
}]
|
|
91
|
+
}] });
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Generated bundle index. Do not edit.
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
export { EntryPermissionDirective, EntryPermissionModule, EntryPermissionPipe, EntryPermissionService, entryPermissionGuard };
|
|
98
|
+
//# sourceMappingURL=enigmatry-entry-components-permissions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components-permissions.mjs","sources":["../../../../libs/entry-components/permissions/permission.service.ts","../../../../libs/entry-components/permissions/permission.pipe.ts","../../../../libs/entry-components/permissions/permission.directive.ts","../../../../libs/entry-components/permissions/permission.guard.ts","../../../../libs/entry-components/permissions/permission.module.ts","../../../../libs/entry-components/permissions/enigmatry-entry-components-permissions.ts"],"sourcesContent":["import { PermissionType } from './permission-type';\r\n\r\nexport abstract class EntryPermissionService<T extends PermissionType> {\r\n public abstract hasPermissions(permissions: T[]): boolean;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PermissionType } from './permission-type';\nimport { EntryPermissionService } from './permission.service';\n\n@Pipe({\n name: 'entryHasPermissions'\n})\nexport class EntryPermissionPipe<T extends PermissionType> implements PipeTransform {\n constructor(private permissionsService: EntryPermissionService<T>) { }\n\n transform(permissions: T[]): boolean {\n return this.permissionsService.hasPermissions(permissions);\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Directive, Input, inject } from '@angular/core';\nimport { PermissionType } from './permission-type';\nimport { EntryPermissionService } from './permission.service';\n\n@Directive({\n selector: '[entryPermissionsOnly],[entryPermissionsExcept]',\n hostDirectives: [{\n directive: NgIf\n }]\n})\nexport class EntryPermissionDirective<T extends PermissionType> {\n private ngIfDirective = inject(NgIf);\n private permissionService = inject(EntryPermissionService<T>);\n\n @Input('entryPermissionsOnly') set only(permissions: T[]) {\n this.ngIfDirective.ngIf = this.permissionService.hasPermissions(permissions);\n }\n\n @Input('entryPermissionsExcept') set except(permissions: T[]) {\n this.ngIfDirective.ngIf = !this.permissionService.hasPermissions(permissions);\n }\n}\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { PermissionType } from './permission-type';\r\nimport { EntryPermissionService } from './permission.service';\r\n\r\ninterface RoutePermissionConfig<T extends PermissionType> {\r\n only?: T[];\r\n except?: T[];\r\n}\r\n\r\nexport const entryPermissionGuard: CanActivateFn =\r\n<T extends PermissionType> (route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\r\n const permissionService = inject(EntryPermissionService);\r\n const routePermissions = route.data.permissions as RoutePermissionConfig<T> ?? {};\r\n\r\n if (routePermissions.only) {\r\n return permissionService.hasPermissions(routePermissions.only);\r\n }\r\n if (routePermissions.except) {\r\n return !permissionService.hasPermissions(routePermissions.except);\r\n }\r\n\r\n return false;\r\n};\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EntryPermissionDirective } from './permission.directive';\nimport { EntryPermissionPipe } from './permission.pipe';\n\n@NgModule({\n declarations: [\n EntryPermissionDirective,\n EntryPermissionPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n EntryPermissionDirective,\n EntryPermissionPipe\n ]\n})\nexport class EntryPermissionModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EntryPermissionService"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export * from '@enigmatry/entry-components/search-filter';
|
|
|
3
3
|
export * from '@enigmatry/entry-components/validation';
|
|
4
4
|
export * from '@enigmatry/entry-components/button';
|
|
5
5
|
export * from '@enigmatry/entry-components/file-input';
|
|
6
|
+
export * from '@enigmatry/entry-components/permissions';
|
|
6
7
|
|
|
7
8
|
/*
|
|
8
9
|
* Public API Surface of entry-components
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["/*\n * Public API Surface of entry-components\n */\n\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/search-filter';\nexport * from '@enigmatry/entry-components/validation';\nexport * from '@enigmatry/entry-components/button';\nexport * from '@enigmatry/entry-components/file-input';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["/*\n * Public API Surface of entry-components\n */\n\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/search-filter';\nexport * from '@enigmatry/entry-components/validation';\nexport * from '@enigmatry/entry-components/button';\nexport * from '@enigmatry/entry-components/file-input';\nexport * from '@enigmatry/entry-components/permissions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Pipe, inject, Directive, Input, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { NgIf, CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class EntryPermissionService {
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
class EntryPermissionPipe {
|
|
10
|
+
constructor(permissionsService) {
|
|
11
|
+
this.permissionsService = permissionsService;
|
|
12
|
+
}
|
|
13
|
+
transform(permissions) {
|
|
14
|
+
return this.permissionsService.hasPermissions(permissions);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
EntryPermissionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, deps: [{ token: EntryPermissionService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
18
|
+
EntryPermissionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, name: "entryHasPermissions" });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionPipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'entryHasPermissions'
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: EntryPermissionService }]; } });
|
|
25
|
+
|
|
26
|
+
class EntryPermissionDirective {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.ngIfDirective = inject(NgIf);
|
|
29
|
+
this.permissionService = inject((EntryPermissionService));
|
|
30
|
+
}
|
|
31
|
+
set only(permissions) {
|
|
32
|
+
this.ngIfDirective.ngIf = this.permissionService.hasPermissions(permissions);
|
|
33
|
+
}
|
|
34
|
+
set except(permissions) {
|
|
35
|
+
this.ngIfDirective.ngIf = !this.permissionService.hasPermissions(permissions);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
EntryPermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
39
|
+
EntryPermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: EntryPermissionDirective, selector: "[entryPermissionsOnly],[entryPermissionsExcept]", inputs: { only: ["entryPermissionsOnly", "only"], except: ["entryPermissionsExcept", "except"] }, hostDirectives: [{ directive: i1.NgIf }], ngImport: i0 });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionDirective, decorators: [{
|
|
41
|
+
type: Directive,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: '[entryPermissionsOnly],[entryPermissionsExcept]',
|
|
44
|
+
hostDirectives: [{
|
|
45
|
+
directive: NgIf
|
|
46
|
+
}]
|
|
47
|
+
}]
|
|
48
|
+
}], propDecorators: { only: [{
|
|
49
|
+
type: Input,
|
|
50
|
+
args: ['entryPermissionsOnly']
|
|
51
|
+
}], except: [{
|
|
52
|
+
type: Input,
|
|
53
|
+
args: ['entryPermissionsExcept']
|
|
54
|
+
}] } });
|
|
55
|
+
|
|
56
|
+
const entryPermissionGuard = (route, _state) => {
|
|
57
|
+
const permissionService = inject(EntryPermissionService);
|
|
58
|
+
const routePermissions = route.data.permissions ?? {};
|
|
59
|
+
if (routePermissions.only) {
|
|
60
|
+
return permissionService.hasPermissions(routePermissions.only);
|
|
61
|
+
}
|
|
62
|
+
if (routePermissions.except) {
|
|
63
|
+
return !permissionService.hasPermissions(routePermissions.except);
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
class EntryPermissionModule {
|
|
69
|
+
}
|
|
70
|
+
EntryPermissionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
71
|
+
EntryPermissionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, declarations: [EntryPermissionDirective,
|
|
72
|
+
EntryPermissionPipe], imports: [CommonModule], exports: [EntryPermissionDirective,
|
|
73
|
+
EntryPermissionPipe] });
|
|
74
|
+
EntryPermissionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, imports: [CommonModule] });
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryPermissionModule, decorators: [{
|
|
76
|
+
type: NgModule,
|
|
77
|
+
args: [{
|
|
78
|
+
declarations: [
|
|
79
|
+
EntryPermissionDirective,
|
|
80
|
+
EntryPermissionPipe
|
|
81
|
+
],
|
|
82
|
+
imports: [
|
|
83
|
+
CommonModule
|
|
84
|
+
],
|
|
85
|
+
exports: [
|
|
86
|
+
EntryPermissionDirective,
|
|
87
|
+
EntryPermissionPipe
|
|
88
|
+
]
|
|
89
|
+
}]
|
|
90
|
+
}] });
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Generated bundle index. Do not edit.
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
export { EntryPermissionDirective, EntryPermissionModule, EntryPermissionPipe, EntryPermissionService, entryPermissionGuard };
|
|
97
|
+
//# sourceMappingURL=enigmatry-entry-components-permissions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components-permissions.mjs","sources":["../../../../libs/entry-components/permissions/permission.service.ts","../../../../libs/entry-components/permissions/permission.pipe.ts","../../../../libs/entry-components/permissions/permission.directive.ts","../../../../libs/entry-components/permissions/permission.guard.ts","../../../../libs/entry-components/permissions/permission.module.ts","../../../../libs/entry-components/permissions/enigmatry-entry-components-permissions.ts"],"sourcesContent":["import { PermissionType } from './permission-type';\r\n\r\nexport abstract class EntryPermissionService<T extends PermissionType> {\r\n public abstract hasPermissions(permissions: T[]): boolean;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PermissionType } from './permission-type';\nimport { EntryPermissionService } from './permission.service';\n\n@Pipe({\n name: 'entryHasPermissions'\n})\nexport class EntryPermissionPipe<T extends PermissionType> implements PipeTransform {\n constructor(private permissionsService: EntryPermissionService<T>) { }\n\n transform(permissions: T[]): boolean {\n return this.permissionsService.hasPermissions(permissions);\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Directive, Input, inject } from '@angular/core';\nimport { PermissionType } from './permission-type';\nimport { EntryPermissionService } from './permission.service';\n\n@Directive({\n selector: '[entryPermissionsOnly],[entryPermissionsExcept]',\n hostDirectives: [{\n directive: NgIf\n }]\n})\nexport class EntryPermissionDirective<T extends PermissionType> {\n private ngIfDirective = inject(NgIf);\n private permissionService = inject(EntryPermissionService<T>);\n\n @Input('entryPermissionsOnly') set only(permissions: T[]) {\n this.ngIfDirective.ngIf = this.permissionService.hasPermissions(permissions);\n }\n\n @Input('entryPermissionsExcept') set except(permissions: T[]) {\n this.ngIfDirective.ngIf = !this.permissionService.hasPermissions(permissions);\n }\n}\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { PermissionType } from './permission-type';\r\nimport { EntryPermissionService } from './permission.service';\r\n\r\ninterface RoutePermissionConfig<T extends PermissionType> {\r\n only?: T[];\r\n except?: T[];\r\n}\r\n\r\nexport const entryPermissionGuard: CanActivateFn =\r\n<T extends PermissionType> (route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\r\n const permissionService = inject(EntryPermissionService);\r\n const routePermissions = route.data.permissions as RoutePermissionConfig<T> ?? {};\r\n\r\n if (routePermissions.only) {\r\n return permissionService.hasPermissions(routePermissions.only);\r\n }\r\n if (routePermissions.except) {\r\n return !permissionService.hasPermissions(routePermissions.except);\r\n }\r\n\r\n return false;\r\n};\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EntryPermissionDirective } from './permission.directive';\nimport { EntryPermissionPipe } from './permission.pipe';\n\n@NgModule({\n declarations: [\n EntryPermissionDirective,\n EntryPermissionPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n EntryPermissionDirective,\n EntryPermissionPipe\n ]\n})\nexport class EntryPermissionModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EntryPermissionService"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export * from '@enigmatry/entry-components/search-filter';
|
|
|
3
3
|
export * from '@enigmatry/entry-components/validation';
|
|
4
4
|
export * from '@enigmatry/entry-components/button';
|
|
5
5
|
export * from '@enigmatry/entry-components/file-input';
|
|
6
|
+
export * from '@enigmatry/entry-components/permissions';
|
|
6
7
|
|
|
7
8
|
/*
|
|
8
9
|
* Public API Surface of entry-components
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["/*\n * Public API Surface of entry-components\n */\n\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/search-filter';\nexport * from '@enigmatry/entry-components/validation';\nexport * from '@enigmatry/entry-components/button';\nexport * from '@enigmatry/entry-components/file-input';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["/*\n * Public API Surface of entry-components\n */\n\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/search-filter';\nexport * from '@enigmatry/entry-components/validation';\nexport * from '@enigmatry/entry-components/button';\nexport * from '@enigmatry/entry-components/file-input';\nexport * from '@enigmatry/entry-components/permissions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enigmatry/entry-components",
|
|
3
|
-
"version": "1.15.1-preview.
|
|
3
|
+
"version": "1.15.1-preview.29",
|
|
4
4
|
"author": "Enigmatry",
|
|
5
5
|
"description": "Enigmatry entry angular material components",
|
|
6
6
|
"homepage": "https://github.com/enigmatry/entry-angular-building-blocks/tree/master/libs/entry-components#readme",
|
|
@@ -66,6 +66,14 @@
|
|
|
66
66
|
"node": "./fesm2015/enigmatry-entry-components-file-input.mjs",
|
|
67
67
|
"default": "./fesm2020/enigmatry-entry-components-file-input.mjs"
|
|
68
68
|
},
|
|
69
|
+
"./permissions": {
|
|
70
|
+
"types": "./permissions/index.d.ts",
|
|
71
|
+
"esm2020": "./esm2020/permissions/enigmatry-entry-components-permissions.mjs",
|
|
72
|
+
"es2020": "./fesm2020/enigmatry-entry-components-permissions.mjs",
|
|
73
|
+
"es2015": "./fesm2015/enigmatry-entry-components-permissions.mjs",
|
|
74
|
+
"node": "./fesm2015/enigmatry-entry-components-permissions.mjs",
|
|
75
|
+
"default": "./fesm2020/enigmatry-entry-components-permissions.mjs"
|
|
76
|
+
},
|
|
69
77
|
"./search-filter": {
|
|
70
78
|
"types": "./search-filter/index.d.ts",
|
|
71
79
|
"esm2020": "./esm2020/search-filter/enigmatry-entry-components-search-filter.mjs",
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Entry Permissions
|
|
2
|
+
|
|
3
|
+
Reusable angular components for applying permission-based authorization:
|
|
4
|
+
- Route guard
|
|
5
|
+
- View directives
|
|
6
|
+
- Pipe
|
|
7
|
+
|
|
8
|
+
## Integration
|
|
9
|
+
|
|
10
|
+
Permissions is part of the `@enigmatry/entry-components`:
|
|
11
|
+
|
|
12
|
+
```npm
|
|
13
|
+
npm i @enigmatry/entry-components
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Create a permission service that implements EntryPermissionService<T> where T is the permission type that you use in your application. You need to provide implementation of the hasPermissions method (for example by checking if the logged in user has needed permissions).
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
export class PermissionService implements EntryPermissionService<PermissionId> {
|
|
20
|
+
hasPermissions(permissions: PermissionId[]): boolean {
|
|
21
|
+
// TODO: provide implementation
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Import permissions module:
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import { EntryPermissionModule } from '@enigmatry/entry-components/permissions';
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Provide implementation of the EntryPermissionService:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
providers: [
|
|
36
|
+
{
|
|
37
|
+
provide: EntryPermissionService,
|
|
38
|
+
useClass: PermissionService
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
<!-- `PermissionService` should be provided in the root scope. -- TODO: add more details with example from the blueprint app -->
|
|
44
|
+
|
|
45
|
+
## Basic usage
|
|
46
|
+
|
|
47
|
+
### Route guard
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
canActivate: [entryPermissionGuard],
|
|
51
|
+
data: {
|
|
52
|
+
permissions: {
|
|
53
|
+
only: [PermissionId.UsersRead]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### View directives
|
|
59
|
+
|
|
60
|
+
```html
|
|
61
|
+
<button mat-menu-item *entryPermissionsOnly="[PermissionId.UsersRead]" routerLink="users">Users</button>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Pipe
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
[isEnabled]="[PermissionId.UsersWrite] | entryHasPermissions"
|
|
68
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PermissionType } from './permission-type';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export declare class EntryPermissionDirective<T extends PermissionType> {
|
|
5
|
+
private ngIfDirective;
|
|
6
|
+
private permissionService;
|
|
7
|
+
set only(permissions: T[]);
|
|
8
|
+
set except(permissions: T[]);
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EntryPermissionDirective<any>, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<EntryPermissionDirective<any>, "[entryPermissionsOnly],[entryPermissionsExcept]", never, { "only": "entryPermissionsOnly"; "except": "entryPermissionsExcept"; }, {}, never, never, false, [{ directive: typeof i1.NgIf; inputs: {}; outputs: {}; }]>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./permission.directive";
|
|
3
|
+
import * as i2 from "./permission.pipe";
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
export declare class EntryPermissionModule {
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EntryPermissionModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<EntryPermissionModule, [typeof i1.EntryPermissionDirective, typeof i2.EntryPermissionPipe], [typeof i3.CommonModule], [typeof i1.EntryPermissionDirective, typeof i2.EntryPermissionPipe]>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<EntryPermissionModule>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import { PermissionType } from './permission-type';
|
|
3
|
+
import { EntryPermissionService } from './permission.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class EntryPermissionPipe<T extends PermissionType> implements PipeTransform {
|
|
6
|
+
private permissionsService;
|
|
7
|
+
constructor(permissionsService: EntryPermissionService<T>);
|
|
8
|
+
transform(permissions: T[]): boolean;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EntryPermissionPipe<any>, never>;
|
|
10
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<EntryPermissionPipe<any>, "entryHasPermissions", false>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { EntryPermissionPipe } from './permission.pipe';
|
|
2
|
+
export { EntryPermissionDirective } from './permission.directive';
|
|
3
|
+
export { entryPermissionGuard } from './permission.guard';
|
|
4
|
+
export { EntryPermissionService } from './permission.service';
|
|
5
|
+
export { EntryPermissionModule } from './permission.module';
|
package/public-api.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export * from '@enigmatry/entry-components/search-filter';
|
|
|
3
3
|
export * from '@enigmatry/entry-components/validation';
|
|
4
4
|
export * from '@enigmatry/entry-components/button';
|
|
5
5
|
export * from '@enigmatry/entry-components/file-input';
|
|
6
|
+
export * from '@enigmatry/entry-components/permissions';
|