@bravobit/bb-foundation 0.23.6 → 0.24.0
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/auth/lib/auth.module.d.ts +2 -3
- package/auth/lib/auth.session.d.ts +5 -0
- package/auth/lib/interfaces/config.interface.d.ts +0 -4
- package/auth/public_api.d.ts +0 -5
- package/esm2020/auth/lib/auth.interceptor.mjs +4 -4
- package/esm2020/auth/lib/auth.module.mjs +7 -16
- package/esm2020/auth/lib/auth.service.mjs +6 -6
- package/esm2020/auth/lib/auth.session.mjs +8 -1
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +4 -4
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +4 -4
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +4 -4
- package/esm2020/auth/lib/interfaces/config.interface.mjs +1 -1
- package/esm2020/auth/public_api.mjs +1 -6
- package/esm2020/collections/lib/collections.module.mjs +5 -5
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +4 -4
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +4 -4
- package/esm2020/collections/lib/components/collections.directive.mjs +13 -13
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +4 -4
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +4 -4
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +5 -5
- package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +4 -4
- package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +4 -4
- package/esm2020/controls/lib/control-error/control-error.module.mjs +5 -5
- package/esm2020/controls/lib/controls.module.mjs +5 -5
- package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +4 -4
- package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +4 -4
- package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +4 -4
- package/esm2020/controls/lib/form-control/form-control.module.mjs +5 -5
- package/esm2020/controls/lib/radio/radio-button/radio-button.component.mjs +4 -4
- package/esm2020/controls/lib/radio/radio-group/radio-group.component.mjs +4 -4
- package/esm2020/controls/lib/radio/radio.module.mjs +5 -5
- package/esm2020/controls/lib/toggle/toggle/toggle.component.mjs +4 -4
- package/esm2020/controls/lib/toggle/toggle-group/toggle-group.component.mjs +4 -4
- package/esm2020/controls/lib/toggle/toggle.module.mjs +5 -5
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +4 -4
- package/esm2020/dashboard/lib/dashboard.module.mjs +5 -5
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog.insertion.mjs +4 -4
- package/esm2020/dialog/lib/dialog.module.mjs +5 -5
- package/esm2020/dialog/lib/dialog.service.mjs +4 -4
- package/esm2020/elements/lib/avatar/avatar.component.mjs +4 -4
- package/esm2020/elements/lib/button/button.component.mjs +7 -7
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +4 -4
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +4 -4
- package/esm2020/elements/lib/directives/addon.directive.mjs +7 -7
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +4 -4
- package/esm2020/elements/lib/directives/form-submitter.directive.mjs +4 -4
- package/esm2020/elements/lib/directives/input.directive.mjs +7 -7
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +7 -7
- package/esm2020/elements/lib/elements.module.mjs +5 -5
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +4 -4
- package/esm2020/elements/lib/form-control/form-control.component.mjs +4 -4
- package/esm2020/elements/lib/form-error/form-error.component.mjs +4 -4
- package/esm2020/elements/lib/form-group/form-group.component.mjs +4 -4
- package/esm2020/elements/lib/icon/icon.component.mjs +4 -4
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +4 -4
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +4 -4
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +4 -4
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +4 -4
- package/esm2020/elements/lib/spinner/spinner.component.mjs +4 -4
- package/esm2020/elements/lib/tag/tag.component.mjs +4 -4
- package/esm2020/http/lib/http.module.mjs +5 -5
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +4 -4
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +4 -4
- package/esm2020/lib/core/services/clipboard.service.mjs +4 -4
- package/esm2020/lib/core/services/exif.service.mjs +4 -4
- package/esm2020/lib/core/services/file-loader.service.mjs +4 -4
- package/esm2020/lib/core/services/image-converter.service.mjs +4 -4
- package/esm2020/lib/core/services/languages.service.mjs +4 -4
- package/esm2020/lib/core/services/network.service.mjs +4 -4
- package/esm2020/lib/core/services/patch.service.mjs +4 -4
- package/esm2020/localize/lib/localize.module.mjs +5 -5
- package/esm2020/localize/lib/localize.pipe.mjs +4 -4
- package/esm2020/localize/lib/localize.service.mjs +4 -4
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +4 -4
- package/esm2020/localize/lib/views/localize-template.directive.mjs +4 -4
- package/esm2020/masking/lib/directives/currency-mask.directive.mjs +4 -4
- package/esm2020/masking/lib/directives/date-mask.directive.mjs +4 -4
- package/esm2020/masking/lib/directives/input-mask.directive.mjs +4 -4
- package/esm2020/masking/lib/masking.module.mjs +5 -5
- package/esm2020/masking/lib/masking.service.mjs +4 -4
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +4 -4
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +4 -4
- package/esm2020/notifications/lib/notifications.module.mjs +5 -5
- package/esm2020/notifications/lib/notifications.service.mjs +4 -4
- package/esm2020/permissions/bravobit-bb-foundation-permissions.mjs +5 -0
- package/esm2020/permissions/lib/directives/permission.directive.mjs +88 -0
- package/esm2020/permissions/lib/guards/permission.guard.mjs +57 -0
- package/esm2020/permissions/lib/handlers/abstract.handler.mjs +3 -0
- package/esm2020/permissions/lib/handlers/role.handler.mjs +27 -0
- package/esm2020/permissions/lib/permissions.interface.mjs +3 -0
- package/esm2020/permissions/lib/permissions.module.mjs +39 -0
- package/esm2020/permissions/lib/permissions.service.mjs +86 -0
- package/esm2020/permissions/public_api.mjs +8 -0
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +4 -4
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +4 -4
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +5 -5
- package/esm2020/storage/lib/storage.service.mjs +4 -4
- package/esm2020/table/lib/components/table/table.component.mjs +10 -10
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +4 -4
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +4 -4
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +4 -4
- package/esm2020/table/lib/table.module.mjs +5 -5
- package/esm2020/theming/lib/theming.directive.mjs +4 -4
- package/esm2020/theming/lib/theming.module.mjs +5 -5
- package/esm2020/utils/lib/directives/autosize.directive.mjs +4 -4
- package/esm2020/utils/lib/directives/focus-trap.directive.mjs +4 -4
- package/esm2020/utils/lib/directives/focus.directive.mjs +4 -4
- package/esm2020/utils/lib/directives/template.directive.mjs +4 -4
- package/esm2020/utils/lib/utils.module.mjs +5 -5
- package/fesm2015/bravobit-bb-foundation-auth.mjs +40 -254
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +57 -57
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +25 -25
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +31 -31
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +76 -76
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-localize.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +13 -13
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-permissions.mjs +301 -0
- package/fesm2015/bravobit-bb-foundation-permissions.mjs.map +1 -0
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-theming.mjs +7 -7
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation.mjs +21 -21
- package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-auth.mjs +33 -231
- package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-controls.mjs +57 -57
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs +25 -25
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dialog.mjs +31 -31
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +76 -76
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-localize.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +13 -13
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-permissions.mjs +289 -0
- package/fesm2020/bravobit-bb-foundation-permissions.mjs.map +1 -0
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-theming.mjs +7 -7
- package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation.mjs +21 -21
- package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
- package/package.json +13 -5
- package/permissions/index.d.ts +5 -0
- package/{auth → permissions}/lib/directives/permission.directive.d.ts +9 -4
- package/{auth → permissions}/lib/guards/permission.guard.d.ts +4 -5
- package/permissions/lib/handlers/abstract.handler.d.ts +4 -0
- package/permissions/lib/handlers/role.handler.d.ts +9 -0
- package/permissions/lib/permissions.interface.d.ts +11 -0
- package/permissions/lib/permissions.module.d.ts +10 -0
- package/permissions/lib/permissions.service.d.ts +22 -0
- package/permissions/public_api.d.ts +7 -0
- package/README.md +0 -47
- package/auth/lib/interfaces/permission.interface.d.ts +0 -6
- package/auth/lib/permissions/permissions.handler.d.ts +0 -9
- package/auth/lib/permissions/permissions.service.d.ts +0 -16
- package/esm2020/auth/lib/directives/permission.directive.mjs +0 -58
- package/esm2020/auth/lib/guards/permission.guard.mjs +0 -63
- package/esm2020/auth/lib/interfaces/permission.interface.mjs +0 -2
- package/esm2020/auth/lib/permissions/permissions.handler.mjs +0 -33
- package/esm2020/auth/lib/permissions/permissions.service.mjs +0 -64
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
|
|
2
|
+
import { Provider } from '@angular/core';
|
|
3
|
+
export declare class PermissionsConfig {
|
|
4
|
+
permissions?: Record<string, string[] | '*'>;
|
|
5
|
+
provider?: Provider;
|
|
6
|
+
onPermissionDenied?: (router: Router, snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) => UrlTree;
|
|
7
|
+
}
|
|
8
|
+
export interface PermissionOptions {
|
|
9
|
+
mode?: PermissionMode;
|
|
10
|
+
}
|
|
11
|
+
export declare type PermissionMode = 'and' | 'or';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import { PermissionsConfig } from './permissions.interface';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./directives/permission.directive";
|
|
5
|
+
export declare class PermissionsModule {
|
|
6
|
+
static forRoot(config?: PermissionsConfig): ModuleWithProviders<PermissionsModule>;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PermissionsModule, never>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<PermissionsModule, [typeof i1.BbPermission], never, [typeof i1.BbPermission]>;
|
|
9
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<PermissionsModule>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { PermissionsHandler } from './handlers/abstract.handler';
|
|
2
|
+
import { PermissionOptions } from './permissions.interface';
|
|
3
|
+
import { OnDestroy } from '@angular/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class Permissions implements OnDestroy {
|
|
6
|
+
private _handler;
|
|
7
|
+
private _activePermissions$;
|
|
8
|
+
private _subscription;
|
|
9
|
+
constructor(_handler: PermissionsHandler);
|
|
10
|
+
ngOnDestroy(): void;
|
|
11
|
+
all(): import("rxjs").Observable<string[]>;
|
|
12
|
+
allSync(): string[];
|
|
13
|
+
has(value: string | string[], options?: PermissionOptions): import("rxjs").Observable<boolean>;
|
|
14
|
+
hasSync(value: string | string[], options?: PermissionOptions): boolean;
|
|
15
|
+
private hasPermission;
|
|
16
|
+
private verifyModeAnd;
|
|
17
|
+
private verifyModeOr;
|
|
18
|
+
private getRequiredPermissions;
|
|
19
|
+
private trackPermissions;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Permissions, never>;
|
|
21
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<Permissions>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './lib/handlers/abstract.handler';
|
|
2
|
+
export * from './lib/handlers/role.handler';
|
|
3
|
+
export * from './lib/directives/permission.directive';
|
|
4
|
+
export * from './lib/guards/permission.guard';
|
|
5
|
+
export * from './lib/permissions.interface';
|
|
6
|
+
export * from './lib/permissions.service';
|
|
7
|
+
export * from './lib/permissions.module';
|
package/README.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# @bravobit/bb-foundation
|
|
2
|
-
|
|
3
|
-
> The Angular core foundation of the Bravobit team.
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@bravobit/bb-foundation)
|
|
6
|
-
[](LICENSE)
|
|
7
|
-
|
|
8
|
-
- Use <kbd>⌘ Command</kbd> + <kbd>F</kbd> or <kbd>ctrl</kbd> + <kbd>F</kbd> to search for a keyword.
|
|
9
|
-
- Contributions welcome, please see [contribution guide](.github/CONTRIBUTING.md).
|
|
10
|
-
|
|
11
|
-
## Features
|
|
12
|
-
|
|
13
|
-
* Easy implementation
|
|
14
|
-
* Library can be consumed by Angular CLI, Webpack, or SystemJS
|
|
15
|
-
* Compatibility
|
|
16
|
-
* Angular Universal
|
|
17
|
-
* Ahead-Of-Time compilation (AOT)
|
|
18
|
-
* Lazy loading
|
|
19
|
-
|
|
20
|
-
## Installation
|
|
21
|
-
|
|
22
|
-
To use bb-foundation in your project install it via `npm`:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
$ npm install @bravobit/bb-foundation --save
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Setup
|
|
29
|
-
|
|
30
|
-
```typescript
|
|
31
|
-
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
|
|
32
|
-
import {BrowserModule} from '@angular/platform-browser';
|
|
33
|
-
import {NgModule} from '@angular/core';
|
|
34
|
-
|
|
35
|
-
import {AppComponent} from './app.component';
|
|
36
|
-
|
|
37
|
-
@NgModule({
|
|
38
|
-
imports: [
|
|
39
|
-
BrowserModule,
|
|
40
|
-
BrowserAnimationsModule
|
|
41
|
-
],
|
|
42
|
-
declarations: [AppComponent],
|
|
43
|
-
bootstrap: [AppComponent]
|
|
44
|
-
})
|
|
45
|
-
export class AppModule {
|
|
46
|
-
}
|
|
47
|
-
```
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { PermissionData, PermissionRecord } from '../interfaces/permission.interface';
|
|
2
|
-
export declare class AppPermissions<T extends string, R> {
|
|
3
|
-
private _data;
|
|
4
|
-
constructor(_data: PermissionData<T, PermissionRecord<R>>);
|
|
5
|
-
verify(permission: PermissionRecord<R>, role: T): boolean;
|
|
6
|
-
verifyForUser(permission: PermissionRecord<R>, data: object): boolean;
|
|
7
|
-
getRole(data: object): T;
|
|
8
|
-
static forRoles(data: Record<string, string[]>): AppPermissions<string, string>;
|
|
9
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PermissionOptions } from '../interfaces/permission.interface';
|
|
2
|
-
import { AuthConfig } from '../interfaces/config.interface';
|
|
3
|
-
import { Auth } from '../auth.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class Permissions {
|
|
6
|
-
private _auth;
|
|
7
|
-
private _config?;
|
|
8
|
-
private readonly _permissionHandler;
|
|
9
|
-
constructor(_auth: Auth, _config?: AuthConfig);
|
|
10
|
-
has(value: string | string[], options?: PermissionOptions): import("rxjs").Observable<boolean>;
|
|
11
|
-
private verifyModeAnd;
|
|
12
|
-
private verifyModeOr;
|
|
13
|
-
private getRequiredPermissions;
|
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<Permissions, [null, { optional: true; }]>;
|
|
15
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<Permissions>;
|
|
16
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
|
|
3
|
-
import { distinctUntilChanged, switchMap } from 'rxjs/operators';
|
|
4
|
-
import { AbstractAuthDirective } from './abstract.directive';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../permissions/permissions.service";
|
|
7
|
-
export class BbPermission extends AbstractAuthDirective {
|
|
8
|
-
constructor(_permissions, _templateRef, _viewContainerRef) {
|
|
9
|
-
super(_templateRef, _viewContainerRef);
|
|
10
|
-
this._permissions = _permissions;
|
|
11
|
-
this._templateRef = _templateRef;
|
|
12
|
-
this._viewContainerRef = _viewContainerRef;
|
|
13
|
-
// Data.
|
|
14
|
-
this._permission$ = new BehaviorSubject([]);
|
|
15
|
-
this._mode$ = new BehaviorSubject('and');
|
|
16
|
-
// Subscriptions.
|
|
17
|
-
this._subscription = new Subscription();
|
|
18
|
-
}
|
|
19
|
-
set bbPermission(value) {
|
|
20
|
-
const permissions = Array.isArray(value) ? value : [value];
|
|
21
|
-
this._permission$.next(permissions);
|
|
22
|
-
this.updateView();
|
|
23
|
-
}
|
|
24
|
-
set bbPermissionElse(templateRef) {
|
|
25
|
-
this.assertTemplate('bbPermissionElse', templateRef);
|
|
26
|
-
this.elseTemplateRef = templateRef;
|
|
27
|
-
this.updateView();
|
|
28
|
-
}
|
|
29
|
-
set bbPermissionMode(mode) {
|
|
30
|
-
this._mode$.next(mode);
|
|
31
|
-
}
|
|
32
|
-
ngOnInit() {
|
|
33
|
-
const check$ = combineLatest([this._permission$, this._mode$]).pipe(switchMap(([permissions, mode]) => this._permissions.has(permissions, { mode })), distinctUntilChanged());
|
|
34
|
-
const subscription = check$.subscribe(valid => {
|
|
35
|
-
this.valid = valid;
|
|
36
|
-
this.updateView();
|
|
37
|
-
});
|
|
38
|
-
this._subscription.add(subscription);
|
|
39
|
-
}
|
|
40
|
-
ngOnDestroy() {
|
|
41
|
-
this._subscription?.unsubscribe();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
BbPermission.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbPermission, deps: [{ token: i1.Permissions }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
45
|
-
BbPermission.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: BbPermission, selector: "[bbPermission]", inputs: { bbPermission: "bbPermission", bbPermissionElse: "bbPermissionElse", bbPermissionMode: "bbPermissionMode" }, usesInheritance: true, ngImport: i0 });
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbPermission, decorators: [{
|
|
47
|
-
type: Directive,
|
|
48
|
-
args: [{
|
|
49
|
-
selector: '[bbPermission]'
|
|
50
|
-
}]
|
|
51
|
-
}], ctorParameters: function () { return [{ type: i1.Permissions }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { bbPermission: [{
|
|
52
|
-
type: Input
|
|
53
|
-
}], bbPermissionElse: [{
|
|
54
|
-
type: Input
|
|
55
|
-
}], bbPermissionMode: [{
|
|
56
|
-
type: Input
|
|
57
|
-
}] } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9kaXJlY3RpdmVzL3Blcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9ELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7QUFLM0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxxQkFBcUI7SUE0Qm5ELFlBQW9CLFlBQXlCLEVBQ3pCLFlBQThCLEVBQzlCLGlCQUFtQztRQUNuRCxLQUFLLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFIdkIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUE1QnZELFFBQVE7UUFDQSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBaUIsS0FBSyxDQUFDLENBQUM7UUFxQjVELGlCQUFpQjtRQUNULGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQU0zQyxDQUFDO0lBMUJELElBQ0ksWUFBWSxDQUFDLEtBQXdCO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ0ksZ0JBQWdCLENBQUMsV0FBNkI7UUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ0ksZ0JBQWdCLENBQUMsSUFBb0I7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQVdELFFBQVE7UUFDSixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsRUFDOUUsb0JBQW9CLEVBQUUsQ0FDekIsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7O3lHQWpEUSxZQUFZOzZGQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFIeEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3QjsySkFRTyxZQUFZO3NCQURmLEtBQUs7Z0JBUUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVFGLGdCQUFnQjtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uTW9kZX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wZXJtaXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGVybWlzc2lvbnN9IGZyb20gJy4uL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtBYnN0cmFjdEF1dGhEaXJlY3RpdmV9IGZyb20gJy4vYWJzdHJhY3QuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYmJQZXJtaXNzaW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgQmJQZXJtaXNzaW9uIGV4dGVuZHMgQWJzdHJhY3RBdXRoRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLy8gRGF0YS5cbiAgICBwcml2YXRlIF9wZXJtaXNzaW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcbiAgICBwcml2YXRlIF9tb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGVybWlzc2lvbk1vZGU+KCdhbmQnKTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJiUGVybWlzc2lvbih2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgICAgdGhpcy5fcGVybWlzc2lvbiQubmV4dChwZXJtaXNzaW9ucyk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJiUGVybWlzc2lvbkVsc2UodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5hc3NlcnRUZW1wbGF0ZSgnYmJQZXJtaXNzaW9uRWxzZScsIHRlbXBsYXRlUmVmKTtcbiAgICAgICAgdGhpcy5lbHNlVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgYmJQZXJtaXNzaW9uTW9kZShtb2RlOiBQZXJtaXNzaW9uTW9kZSkge1xuICAgICAgICB0aGlzLl9tb2RlJC5uZXh0KG1vZGUpO1xuICAgIH1cblxuICAgIC8vIFN1YnNjcmlwdGlvbnMuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoX3RlbXBsYXRlUmVmLCBfdmlld0NvbnRhaW5lclJlZik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGNoZWNrJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3Blcm1pc3Npb24kLCB0aGlzLl9tb2RlJF0pLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKFtwZXJtaXNzaW9ucywgbW9kZV0pID0+IHRoaXMuX3Blcm1pc3Npb25zLmhhcyhwZXJtaXNzaW9ucywge21vZGV9KSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gY2hlY2skLnN1YnNjcmliZSh2YWxpZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gdmFsaWQ7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9iYlBlcm1pc3Npb246IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9iYlBlcm1pc3Npb25FbHNlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9iYlBlcm1pc3Npb25Nb2RlOiBQZXJtaXNzaW9uTW9kZTtcblxufVxuIl19
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { AUTH_REDIRECT_HANDLER } from '../interfaces/config.interface';
|
|
2
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { of } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/router";
|
|
7
|
-
import * as i2 from "../permissions/permissions.service";
|
|
8
|
-
import * as i3 from "../interfaces/config.interface";
|
|
9
|
-
export class BbPermissionGuard {
|
|
10
|
-
constructor(_router, _permissions, _config, _handler) {
|
|
11
|
-
this._router = _router;
|
|
12
|
-
this._permissions = _permissions;
|
|
13
|
-
this._config = _config;
|
|
14
|
-
this._handler = _handler;
|
|
15
|
-
}
|
|
16
|
-
canActivate(snapshot, state) {
|
|
17
|
-
const permission = snapshot?.data?.['permission'] ?? null;
|
|
18
|
-
const permission$ = this.parsePermission(permission);
|
|
19
|
-
return permission$.pipe(map(valid => {
|
|
20
|
-
if (valid) {
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
if (this._handler) {
|
|
24
|
-
return this._handler.onPermissionDenied(snapshot, state);
|
|
25
|
-
}
|
|
26
|
-
const nextUrl = this._config?.redirects?.permissionDenied ?? null;
|
|
27
|
-
if (!nextUrl) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
const commands = Array.isArray(nextUrl) ? nextUrl : [nextUrl];
|
|
31
|
-
return valid ? true : this._router.createUrlTree(commands);
|
|
32
|
-
}));
|
|
33
|
-
}
|
|
34
|
-
canActivateChild(childRoute, state) {
|
|
35
|
-
return this.canActivate(childRoute, state);
|
|
36
|
-
}
|
|
37
|
-
parsePermission(data) {
|
|
38
|
-
if ((typeof ngDevMode === 'undefined' || ngDevMode) && (data === undefined || data === null)) {
|
|
39
|
-
console?.warn?.(`No "data.permission" property was passed.`);
|
|
40
|
-
return of(false);
|
|
41
|
-
}
|
|
42
|
-
if (Array.isArray(data) || typeof data === 'string') {
|
|
43
|
-
return this._permissions.has(data);
|
|
44
|
-
}
|
|
45
|
-
return this._permissions.has(data?.value, data?.options);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
BbPermissionGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbPermissionGuard, deps: [{ token: i1.Router }, { token: i2.Permissions }, { token: i3.AuthConfig, optional: true }, { token: AUTH_REDIRECT_HANDLER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
49
|
-
BbPermissionGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbPermissionGuard, providedIn: 'root' });
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbPermissionGuard, decorators: [{
|
|
51
|
-
type: Injectable,
|
|
52
|
-
args: [{
|
|
53
|
-
providedIn: 'root'
|
|
54
|
-
}]
|
|
55
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Permissions }, { type: i3.AuthConfig, decorators: [{
|
|
56
|
-
type: Optional
|
|
57
|
-
}] }, { type: undefined, decorators: [{
|
|
58
|
-
type: Optional
|
|
59
|
-
}, {
|
|
60
|
-
type: Inject,
|
|
61
|
-
args: [AUTH_REDIRECT_HANDLER]
|
|
62
|
-
}] }]; } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL2d1YXJkcy9wZXJtaXNzaW9uLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxxQkFBcUIsRUFBa0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd0RyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7O0FBT3hCLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsWUFBb0IsT0FBZSxFQUNmLFlBQXlCLEVBQ2IsT0FBb0IsRUFDVyxRQUE4QjtRQUh6RSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ1csYUFBUSxHQUFSLFFBQVEsQ0FBc0I7SUFDN0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQyxFQUFFLEtBQTBCO1FBQ3BFLE1BQU0sVUFBVSxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDMUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQ25CLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxFQUFFO2dCQUNQLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM1RDtZQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQztZQUNsRSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNWLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBa0MsRUFBRSxLQUEwQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBbUY7UUFDdkcsSUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQzFGLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQzdELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDOzs4R0EvQ1EsaUJBQWlCLDZHQUtNLHFCQUFxQjtrSEFMNUMsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFLZ0IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkLCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3R9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FVVEhfUkVESVJFQ1RfSEFORExFUiwgQXV0aENvbmZpZywgQXV0aFJlZGlyZWN0SGFuZGxlcn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7UGVybWlzc2lvbk9wdGlvbnN9IGZyb20gJy4uL2ludGVyZmFjZXMvcGVybWlzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZXJtaXNzaW9uc30gZnJvbSAnLi4vcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5kZWNsYXJlIGxldCBuZ0Rldk1vZGU7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmJQZXJtaXNzaW9uR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29uZmlnPzogQXV0aENvbmZpZyxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFVVEhfUkVESVJFQ1RfSEFORExFUikgcHJpdmF0ZSBfaGFuZGxlcj86IEF1dGhSZWRpcmVjdEhhbmRsZXIpIHtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHNuYXBzaG90Py5kYXRhPy5bJ3Blcm1pc3Npb24nXSA/PyBudWxsO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uJCA9IHRoaXMucGFyc2VQZXJtaXNzaW9uKHBlcm1pc3Npb24pO1xuICAgICAgICByZXR1cm4gcGVybWlzc2lvbiQucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWxpZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9oYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVyLm9uUGVybWlzc2lvbkRlbmllZChzbmFwc2hvdCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRVcmwgPSB0aGlzLl9jb25maWc/LnJlZGlyZWN0cz8ucGVybWlzc2lvbkRlbmllZCA/PyBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghbmV4dFVybCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZHMgPSBBcnJheS5pc0FycmF5KG5leHRVcmwpID8gbmV4dFVybCA6IFtuZXh0VXJsXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQgPyB0cnVlIDogdGhpcy5fcm91dGVyLmNyZWF0ZVVybFRyZWUoY29tbWFuZHMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZUNoaWxkKGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKGNoaWxkUm91dGUsIHN0YXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlUGVybWlzc2lvbihkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogUGVybWlzc2lvbk9wdGlvbnMgfSkge1xuICAgICAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSkge1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKGBObyBcImRhdGEucGVybWlzc2lvblwiIHByb3BlcnR5IHdhcyBwYXNzZWQuYCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkgfHwgdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvbnMuaGFzKGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zLmhhcyhkYXRhPy52YWx1ZSwgZGF0YT8ub3B0aW9ucyk7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9pbnRlcmZhY2VzL3Blcm1pc3Npb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQZXJtaXNzaW9uRGF0YTxUIGV4dGVuZHMgc3RyaW5nLCBSPiA9IFJlY29yZDxULCBSW10+O1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uUmVjb3JkPFI+ID0gUltrZXlvZiBSXTtcblxuZXhwb3J0IHR5cGUgUGVybWlzc2lvbk1vZGUgPSAnYW5kJyB8ICdvcic7XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25PcHRpb25zID0ge1xuICAgIG1vZGU/OiBQZXJtaXNzaW9uTW9kZVxufTtcbiJdfQ==
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export class AppPermissions {
|
|
2
|
-
constructor(_data) {
|
|
3
|
-
this._data = _data;
|
|
4
|
-
}
|
|
5
|
-
verify(permission, role) {
|
|
6
|
-
if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._data?.[role]) {
|
|
7
|
-
console?.warn?.(`Current permissions do not include role: "${role}".`);
|
|
8
|
-
}
|
|
9
|
-
const availablePermissions = this._data?.[role] ?? [];
|
|
10
|
-
return availablePermissions.includes(permission);
|
|
11
|
-
}
|
|
12
|
-
verifyForUser(permission, data) {
|
|
13
|
-
const role = this.getRole(data);
|
|
14
|
-
return this.verify(permission, role);
|
|
15
|
-
}
|
|
16
|
-
getRole(data) {
|
|
17
|
-
return data?.['role'] ?? null;
|
|
18
|
-
}
|
|
19
|
-
static forRoles(data) {
|
|
20
|
-
const permissions = Object.keys(data) ?? [];
|
|
21
|
-
const roles = permissions.reduce((previous, current) => ([
|
|
22
|
-
...previous,
|
|
23
|
-
...(data?.[current] ?? [])
|
|
24
|
-
]), []);
|
|
25
|
-
const uniqueRoles = [...new Set(roles)];
|
|
26
|
-
const formattedData = uniqueRoles.reduce((previous, current) => {
|
|
27
|
-
const rolePermissions = permissions.filter(permission => data?.[permission]?.includes(current));
|
|
28
|
-
return { ...previous, [current]: rolePermissions };
|
|
29
|
-
}, {});
|
|
30
|
-
return new AppPermissions(formattedData);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLGNBQWM7SUFFdkIsWUFBb0IsS0FBNkM7UUFBN0MsVUFBSyxHQUFMLEtBQUssQ0FBd0M7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUErQixFQUFFLElBQU87UUFDM0MsSUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsNkNBQTZDLElBQUksSUFBSSxDQUFDLENBQUM7U0FDMUU7UUFFRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEQsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUErQixFQUFFLElBQVk7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNoQixPQUFPLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBTSxJQUFJLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUE4QjtRQUMxQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxHQUFHLFFBQVE7WUFDWCxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNSLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBRWhHLE9BQU8sRUFBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFBQyxDQUFDO1FBQ3JELENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVQLE9BQU8sSUFBSSxjQUFjLENBQWlCLGFBQWEsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGVybWlzc2lvbkRhdGEsIFBlcm1pc3Npb25SZWNvcmR9IGZyb20gJy4uL2ludGVyZmFjZXMvcGVybWlzc2lvbi5pbnRlcmZhY2UnO1xuXG5kZWNsYXJlIGxldCBuZ0Rldk1vZGU7XG5cbmV4cG9ydCBjbGFzcyBBcHBQZXJtaXNzaW9uczxUIGV4dGVuZHMgc3RyaW5nLCBSPiB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRhOiBQZXJtaXNzaW9uRGF0YTxULCBQZXJtaXNzaW9uUmVjb3JkPFI+Pikge1xuICAgIH1cblxuICAgIHZlcmlmeShwZXJtaXNzaW9uOiBQZXJtaXNzaW9uUmVjb3JkPFI+LCByb2xlOiBUKSB7XG4gICAgICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiAhdGhpcy5fZGF0YT8uW3JvbGVdKSB7XG4gICAgICAgICAgICBjb25zb2xlPy53YXJuPy4oYEN1cnJlbnQgcGVybWlzc2lvbnMgZG8gbm90IGluY2x1ZGUgcm9sZTogXCIke3JvbGV9XCIuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdmFpbGFibGVQZXJtaXNzaW9ucyA9IHRoaXMuX2RhdGE/Lltyb2xlXSA/PyBbXTtcbiAgICAgICAgcmV0dXJuIGF2YWlsYWJsZVBlcm1pc3Npb25zLmluY2x1ZGVzKHBlcm1pc3Npb24pO1xuICAgIH1cblxuICAgIHZlcmlmeUZvclVzZXIocGVybWlzc2lvbjogUGVybWlzc2lvblJlY29yZDxSPiwgZGF0YTogb2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLmdldFJvbGUoZGF0YSk7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcmlmeShwZXJtaXNzaW9uLCByb2xlKTtcbiAgICB9XG5cbiAgICBnZXRSb2xlKGRhdGE6IG9iamVjdCkge1xuICAgICAgICByZXR1cm4gZGF0YT8uWydyb2xlJ10gYXMgVCA/PyBudWxsO1xuICAgIH1cblxuICAgIHN0YXRpYyBmb3JSb2xlcyhkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4pIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBPYmplY3Qua2V5cyhkYXRhKSA/PyBbXTtcbiAgICAgICAgY29uc3Qgcm9sZXMgPSBwZXJtaXNzaW9ucy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiAoW1xuICAgICAgICAgICAgLi4ucHJldmlvdXMsXG4gICAgICAgICAgICAuLi4oZGF0YT8uW2N1cnJlbnRdID8/IFtdKVxuICAgICAgICBdKSwgW10pO1xuICAgICAgICBjb25zdCB1bmlxdWVSb2xlcyA9IFsuLi5uZXcgU2V0KHJvbGVzKV07XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0YSA9IHVuaXF1ZVJvbGVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvbGVQZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zLmZpbHRlcihwZXJtaXNzaW9uID0+IGRhdGE/LltwZXJtaXNzaW9uXT8uaW5jbHVkZXMoY3VycmVudCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gey4uLnByZXZpb3VzLCBbY3VycmVudF06IHJvbGVQZXJtaXNzaW9uc307XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICByZXR1cm4gbmV3IEFwcFBlcm1pc3Npb25zPHN0cmluZywgc3RyaW5nPihmb3JtYXR0ZWREYXRhKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
2
|
-
import { Injectable, Optional } from '@angular/core';
|
|
3
|
-
import { of } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../auth.service";
|
|
6
|
-
import * as i2 from "../interfaces/config.interface";
|
|
7
|
-
export class Permissions {
|
|
8
|
-
constructor(_auth, _config) {
|
|
9
|
-
this._auth = _auth;
|
|
10
|
-
this._config = _config;
|
|
11
|
-
// Data.
|
|
12
|
-
this._permissionHandler = this._config?.permissions ?? null;
|
|
13
|
-
}
|
|
14
|
-
has(value, options) {
|
|
15
|
-
const requiredPermissions = this.getRequiredPermissions(value);
|
|
16
|
-
if (requiredPermissions?.length <= 0) {
|
|
17
|
-
return of(false);
|
|
18
|
-
}
|
|
19
|
-
return this._auth.user.pipe(map(user => {
|
|
20
|
-
if (user === null || user === undefined || !this._permissionHandler) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
const mode = options?.mode ?? 'and';
|
|
24
|
-
switch (mode) {
|
|
25
|
-
case 'or':
|
|
26
|
-
return this.verifyModeOr(requiredPermissions, user);
|
|
27
|
-
case 'and':
|
|
28
|
-
default:
|
|
29
|
-
return this.verifyModeAnd(requiredPermissions, user);
|
|
30
|
-
}
|
|
31
|
-
}), distinctUntilChanged());
|
|
32
|
-
}
|
|
33
|
-
verifyModeAnd(permissions, user) {
|
|
34
|
-
for (const permission of permissions) {
|
|
35
|
-
const verified = this._permissionHandler.verifyForUser(permission, user);
|
|
36
|
-
if (!verified) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
verifyModeOr(permissions, user) {
|
|
43
|
-
for (const permission of permissions) {
|
|
44
|
-
const verified = this._permissionHandler.verifyForUser(permission, user);
|
|
45
|
-
if (verified) {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
getRequiredPermissions(value) {
|
|
52
|
-
return Array.isArray(value)
|
|
53
|
-
? value
|
|
54
|
-
: [value];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
Permissions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: Permissions, deps: [{ token: i1.Auth }, { token: i2.AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
58
|
-
Permissions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: Permissions });
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: Permissions, decorators: [{
|
|
60
|
-
type: Injectable
|
|
61
|
-
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i2.AuthConfig, decorators: [{
|
|
62
|
-
type: Optional
|
|
63
|
-
}] }]; } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUFHeEIsTUFBTSxPQUFPLFdBQVc7SUFLcEIsWUFBb0IsS0FBVyxFQUNDLE9BQW9CO1FBRGhDLFVBQUssR0FBTCxLQUFLLENBQU07UUFDQyxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBSnBELFFBQVE7UUFDUyx1QkFBa0IsR0FBb0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDO0lBSXpHLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBd0IsRUFBRSxPQUEyQjtRQUNyRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxJQUFJLG1CQUFtQixFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1AsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ2pFLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLENBQUM7WUFDcEMsUUFBUSxJQUFJLEVBQUU7Z0JBQ1YsS0FBSyxJQUFJO29CQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDeEQsS0FBSyxLQUFLLENBQUM7Z0JBQ1g7b0JBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzVEO1FBQ0wsQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLEVBQUUsQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFTyxhQUFhLENBQUMsV0FBcUIsRUFBRSxJQUFZO1FBQ3JELEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ1gsT0FBTyxLQUFLLENBQUM7YUFDaEI7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxZQUFZLENBQUMsV0FBcUIsRUFBRSxJQUFZO1FBQ3BELEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pFLElBQUksUUFBUSxFQUFFO2dCQUNWLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUF3QjtRQUNuRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEIsQ0FBQzs7d0dBNURRLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFPTSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQZXJtaXNzaW9uT3B0aW9uc30gZnJvbSAnLi4vaW50ZXJmYWNlcy9wZXJtaXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQge0F1dGhDb25maWd9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXBwUGVybWlzc2lvbnN9IGZyb20gJy4vcGVybWlzc2lvbnMuaGFuZGxlcic7XG5pbXBvcnQge0luamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXV0aH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnMge1xuXG4gICAgLy8gRGF0YS5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wZXJtaXNzaW9uSGFuZGxlcjogQXBwUGVybWlzc2lvbnM8YW55LCBhbnk+IHwgbnVsbCA9IHRoaXMuX2NvbmZpZz8ucGVybWlzc2lvbnMgPz8gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2F1dGg6IEF1dGgsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29uZmlnPzogQXV0aENvbmZpZykge1xuICAgIH1cblxuICAgIGhhcyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBQZXJtaXNzaW9uT3B0aW9ucykge1xuICAgICAgICBjb25zdCByZXF1aXJlZFBlcm1pc3Npb25zID0gdGhpcy5nZXRSZXF1aXJlZFBlcm1pc3Npb25zKHZhbHVlKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkUGVybWlzc2lvbnM/Lmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGgudXNlci5waXBlKFxuICAgICAgICAgICAgbWFwKHVzZXIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh1c2VyID09PSBudWxsIHx8IHVzZXIgPT09IHVuZGVmaW5lZCB8fCAhdGhpcy5fcGVybWlzc2lvbkhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSBvcHRpb25zPy5tb2RlID8/ICdhbmQnO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJpZnlNb2RlT3IocmVxdWlyZWRQZXJtaXNzaW9ucywgdXNlcik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FuZCc6XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJpZnlNb2RlQW5kKHJlcXVpcmVkUGVybWlzc2lvbnMsIHVzZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyaWZ5TW9kZUFuZChwZXJtaXNzaW9uczogc3RyaW5nW10sIHVzZXI6IG9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmlmaWVkID0gdGhpcy5fcGVybWlzc2lvbkhhbmRsZXIudmVyaWZ5Rm9yVXNlcihwZXJtaXNzaW9uLCB1c2VyKTtcbiAgICAgICAgICAgIGlmICghdmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeU1vZGVPcihwZXJtaXNzaW9uczogc3RyaW5nW10sIHVzZXI6IG9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmlmaWVkID0gdGhpcy5fcGVybWlzc2lvbkhhbmRsZXIudmVyaWZ5Rm9yVXNlcihwZXJtaXNzaW9uLCB1c2VyKTtcbiAgICAgICAgICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVxdWlyZWRQZXJtaXNzaW9ucyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IFt2YWx1ZV07XG4gICAgfVxuXG59XG4iXX0=
|