@bravobit/bb-foundation 0.21.4 → 0.22.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.interceptor.d.ts +1 -1
- package/auth/lib/auth.module.d.ts +4 -5
- package/auth/lib/auth.service.d.ts +4 -7
- package/auth/lib/directives/abstract.directive.d.ts +12 -0
- package/auth/lib/directives/authenticated.directive.d.ts +7 -4
- package/auth/lib/directives/permission.directive.d.ts +11 -11
- package/auth/lib/guards/anonymous.guard.d.ts +8 -5
- package/auth/lib/guards/authenticated.guard.d.ts +8 -5
- package/auth/lib/guards/permission.guard.d.ts +15 -0
- package/auth/lib/interfaces/config.interface.d.ts +14 -8
- package/auth/lib/interfaces/permission.interface.d.ts +6 -0
- package/auth/lib/interfaces/provider.interface.d.ts +10 -3
- package/auth/lib/permissions/permissions.handler.d.ts +9 -0
- package/auth/lib/permissions/permissions.service.d.ts +16 -0
- package/auth/lib/providers/email.provider.d.ts +2 -8
- package/auth/lib/providers/verify.provider.d.ts +2 -6
- package/auth/public_api.d.ts +4 -4
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +5 -1
- package/controls/lib/control-error/control-error/control-error.animation.d.ts +1 -0
- package/controls/lib/control-error/control-error/control-error.component.d.ts +17 -0
- package/controls/lib/control-error/control-error-submit.directive.d.ts +15 -0
- package/controls/lib/control-error/control-error.defaults.d.ts +2 -0
- package/controls/lib/control-error/control-error.interface.d.ts +12 -0
- package/controls/lib/control-error/control-error.module.d.ts +9 -0
- package/controls/lib/controls.interfaces.d.ts +4 -0
- package/controls/lib/controls.module.d.ts +7 -2
- package/controls/lib/form-control/form-control/form-control.component.d.ts +31 -0
- package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +6 -0
- package/controls/lib/form-control/form-control-input.directive.d.ts +35 -0
- package/controls/lib/form-control/form-control.module.d.ts +11 -0
- package/controls/public_api.d.ts +9 -0
- package/dashboard/lib/dashboard/dashboard.component.d.ts +2 -1
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +10 -5
- package/dialog/lib/dialog-container/dialog-container.animations.d.ts +1 -0
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +5 -7
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -3
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +7 -3
- package/dialog/lib/dialog-overlay/dialog-overlay.animations.d.ts +1 -0
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +5 -7
- package/dialog/lib/dialog.service.d.ts +4 -3
- package/elements/lib/directives/focus-trap.directive.d.ts +1 -1
- package/elements/lib/directives/focus.directive.d.ts +1 -3
- package/elements/lib/directives/form-submitter.directive.d.ts +9 -0
- package/elements/lib/elements.module.d.ts +25 -24
- package/elements/lib/form-error/form-error.component.d.ts +9 -5
- package/elements/lib/pipes/file-image.pipe.d.ts +2 -1
- package/elements/public_api.d.ts +1 -0
- package/esm2020/auth/lib/auth.interceptor.mjs +9 -12
- package/esm2020/auth/lib/auth.module.mjs +7 -17
- package/esm2020/auth/lib/auth.service.mjs +29 -55
- package/esm2020/auth/lib/directives/abstract.directive.mjs +40 -0
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +25 -14
- package/esm2020/auth/lib/directives/permission.directive.mjs +24 -46
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +28 -19
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +31 -20
- package/esm2020/auth/lib/guards/permission.guard.mjs +53 -0
- package/esm2020/auth/lib/helpers/jwt.helper.mjs +7 -7
- package/esm2020/auth/lib/interfaces/config.interface.mjs +1 -1
- package/esm2020/auth/lib/interfaces/permission.interface.mjs +2 -0
- package/esm2020/auth/lib/interfaces/provider.interface.mjs +1 -1
- package/esm2020/auth/lib/permissions/permissions.handler.mjs +33 -0
- package/esm2020/auth/lib/permissions/permissions.service.mjs +64 -0
- package/esm2020/auth/lib/providers/email.provider.mjs +8 -9
- package/esm2020/auth/lib/providers/verify.provider.mjs +8 -5
- package/esm2020/auth/public_api.mjs +5 -5
- package/esm2020/collections/lib/collections.module.mjs +4 -4
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
- package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +19 -6
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +4 -4
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +4 -4
- package/esm2020/controls/lib/control-error/control-error/control-error.animation.mjs +14 -0
- package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +63 -0
- package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +47 -0
- package/esm2020/controls/lib/control-error/control-error.defaults.mjs +26 -0
- package/esm2020/controls/lib/control-error/control-error.interface.mjs +3 -0
- package/esm2020/controls/lib/control-error/control-error.module.mjs +19 -0
- package/esm2020/controls/lib/controls.interfaces.mjs +2 -0
- package/esm2020/controls/lib/controls.module.mjs +45 -8
- package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +94 -0
- package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +22 -0
- package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +124 -0
- package/esm2020/controls/lib/form-control/form-control.module.mjs +33 -0
- package/esm2020/controls/public_api.mjs +10 -1
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +7 -6
- package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
- package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +17 -11
- package/esm2020/dialog/lib/dialog-container/dialog-container.animations.mjs +29 -0
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +28 -104
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +7 -14
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +4 -4
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +29 -8
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.animations.mjs +26 -0
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +29 -84
- package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
- package/esm2020/dialog/lib/dialog.module.mjs +4 -4
- package/esm2020/dialog/lib/dialog.service.mjs +8 -7
- package/esm2020/elements/lib/avatar/avatar.component.mjs +8 -6
- package/esm2020/elements/lib/button/button.component.mjs +6 -6
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +3 -3
- package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/autosize.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/focus-trap.directive.mjs +5 -5
- package/esm2020/elements/lib/directives/focus.directive.mjs +7 -9
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
- package/esm2020/elements/lib/directives/form-submitter.directive.mjs +25 -0
- package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
- package/esm2020/elements/lib/directives/template.directive.mjs +3 -3
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +6 -6
- package/esm2020/elements/lib/elements.module.mjs +9 -5
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +3 -3
- package/esm2020/elements/lib/form-control/form-control.component.mjs +3 -3
- package/esm2020/elements/lib/form-error/form-error.component.mjs +22 -7
- package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
- package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +8 -7
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
- package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
- package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
- package/esm2020/elements/public_api.mjs +2 -1
- package/esm2020/http/lib/http.module.mjs +4 -4
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
- package/esm2020/lib/core/services/clipboard.service.mjs +5 -5
- package/esm2020/lib/core/services/exif.service.mjs +5 -5
- package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
- package/esm2020/lib/core/services/image-converter.service.mjs +5 -5
- package/esm2020/lib/core/services/languages.service.mjs +3 -3
- package/esm2020/lib/core/services/network.service.mjs +7 -7
- package/esm2020/lib/core/services/patch.service.mjs +7 -7
- package/esm2020/localize/lib/localize.module.mjs +4 -4
- package/esm2020/localize/lib/localize.pipe.mjs +3 -3
- package/esm2020/localize/lib/localize.service.mjs +5 -5
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +3 -3
- package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/currency-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/date-mask.directive.mjs +3 -3
- package/esm2020/masking/lib/directives/input-mask.directive.mjs +7 -7
- package/esm2020/masking/lib/masking.module.mjs +4 -4
- package/esm2020/masking/lib/masking.service.mjs +3 -3
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +5 -5
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +7 -7
- package/esm2020/notifications/lib/notifications.module.mjs +4 -4
- package/esm2020/notifications/lib/notifications.service.mjs +5 -5
- package/esm2020/public_api.mjs +1 -2
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +10 -10
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2020/storage/lib/storage.service.mjs +5 -5
- package/esm2020/table/lib/components/table/table.component.mjs +9 -9
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
- package/esm2020/table/lib/table.module.mjs +4 -4
- package/esm2020/theming/lib/themes/checkbox-group.theme.mjs +17 -2
- package/esm2020/theming/lib/themes/checkbox.theme.mjs +35 -2
- package/esm2020/theming/lib/themes/control-error.theme.mjs +11 -0
- package/esm2020/theming/lib/themes/form-control-addon.theme.mjs +6 -0
- package/esm2020/theming/lib/themes/form-control.theme.mjs +45 -0
- package/esm2020/theming/lib/theming.data.mjs +82 -0
- package/esm2020/theming/lib/theming.directive.mjs +38 -0
- package/esm2020/theming/lib/theming.interface.mjs +2 -3
- package/esm2020/theming/lib/theming.module.mjs +12 -34
- package/esm2020/theming/lib/utils/theming.variable.mjs +41 -0
- package/esm2020/theming/public_api.mjs +6 -3
- package/fesm2015/bravobit-bb-foundation-auth.mjs +326 -284
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-controls.mjs +493 -24
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +29 -28
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +185 -233
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +140 -99
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2015/bravobit-bb-foundation-localize.mjs +20 -20
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +20 -19
- package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +18 -17
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +16 -16
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-storage.mjs +4 -4
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2015/bravobit-bb-foundation-theming.mjs +251 -128
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2015/bravobit-bb-foundation.mjs +33 -73
- package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-auth.mjs +306 -277
- package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-controls.mjs +477 -24
- package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs +29 -28
- package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-dialog.mjs +175 -233
- package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs +140 -99
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2020/bravobit-bb-foundation-localize.mjs +20 -20
- package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-masking.mjs +19 -19
- package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-notifications.mjs +17 -17
- package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +16 -16
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-storage.mjs +4 -4
- package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2020/bravobit-bb-foundation-theming.mjs +252 -120
- package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/fesm2020/bravobit-bb-foundation.mjs +32 -70
- package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
- package/lib/core/services/clipboard.service.d.ts +2 -2
- package/lib/core/services/exif.service.d.ts +1 -1
- package/lib/core/services/image-converter.service.d.ts +1 -1
- package/lib/core/services/network.service.d.ts +4 -4
- package/lib/core/services/patch.service.d.ts +4 -4
- package/localize/lib/localize.service.d.ts +1 -1
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
- package/notifications/lib/notifications.service.d.ts +1 -1
- package/package.json +4 -4
- package/public_api.d.ts +0 -1
- package/recaptcha/lib/recaptcha-loader.service.d.ts +3 -3
- package/storage/lib/storage.service.d.ts +1 -1
- package/theming/lib/themes/checkbox-group.theme.d.ts +14 -3
- package/theming/lib/themes/checkbox.theme.d.ts +30 -17
- package/theming/lib/themes/control-error.theme.d.ts +9 -0
- package/theming/lib/themes/form-control-addon.theme.d.ts +5 -0
- package/theming/lib/themes/form-control.theme.d.ts +32 -0
- package/theming/lib/theming.data.d.ts +17 -0
- package/theming/lib/theming.directive.d.ts +13 -0
- package/theming/lib/theming.interface.d.ts +19 -8
- package/theming/lib/theming.module.d.ts +3 -9
- package/theming/lib/utils/theming.variable.d.ts +16 -0
- package/theming/public_api.d.ts +5 -2
- package/auth/lib/directives/role.directive.d.ts +0 -16
- package/auth/lib/helpers/mapper.helper.d.ts +0 -23
- package/auth/lib/interfaces/mapper.interface.d.ts +0 -19
- package/auth/lib/permissions.service.d.ts +0 -14
- package/esm2020/auth/lib/directives/role.directive.mjs +0 -37
- package/esm2020/auth/lib/helpers/mapper.helper.mjs +0 -35
- package/esm2020/auth/lib/interfaces/mapper.interface.mjs +0 -2
- package/esm2020/auth/lib/permissions.service.mjs +0 -56
- package/esm2020/lib/core/services/platform.service.mjs +0 -42
- package/esm2020/theming/lib/themes/theme.mjs +0 -34
- package/esm2020/theming/lib/theming.service.mjs +0 -77
- package/lib/core/services/platform.service.d.ts +0 -18
- package/theming/lib/themes/theme.d.ts +0 -12
- package/theming/lib/theming.service.d.ts +0 -22
|
@@ -1,35 +1,46 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { firstValueFrom } from 'rxjs';
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
3
2
|
import { map } from 'rxjs/operators';
|
|
3
|
+
import { first } from 'rxjs';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "../auth.service";
|
|
6
|
+
import * as i2 from "@angular/router";
|
|
7
|
+
import * as i3 from "../interfaces/config.interface";
|
|
6
8
|
export class BbAuthenticatedGuard {
|
|
7
|
-
constructor(_auth) {
|
|
9
|
+
constructor(_auth, _router, _config) {
|
|
8
10
|
this._auth = _auth;
|
|
11
|
+
this._router = _router;
|
|
12
|
+
this._config = _config;
|
|
9
13
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
canActivate(_, state) {
|
|
15
|
+
return this._auth.user.pipe(map(user => !!user), map(isAuthenticated => {
|
|
16
|
+
if (isAuthenticated) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
// If we don't have a URL to go to we can just say
|
|
20
|
+
// the user is not allowed in this route by returning false.
|
|
21
|
+
const nextUrl = this._config?.redirects?.unauthenticated ?? null;
|
|
22
|
+
if (!nextUrl) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const setRedirectOnFailedAuth = this._config?.setRedirectOnFailedAuth ?? true;
|
|
26
|
+
const redirectUrl = state?.url ?? null;
|
|
27
|
+
const queryParams = setRedirectOnFailedAuth && redirectUrl ? { redirectUrl } : {};
|
|
28
|
+
const commands = Array.isArray(nextUrl) ? nextUrl : [nextUrl];
|
|
29
|
+
return this._router.createUrlTree(commands, { queryParams });
|
|
30
|
+
}), first());
|
|
22
31
|
}
|
|
23
32
|
canActivateChild(childRoute, state) {
|
|
24
33
|
return this.canActivate(childRoute, state);
|
|
25
34
|
}
|
|
26
35
|
}
|
|
27
|
-
BbAuthenticatedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
28
|
-
BbAuthenticatedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
36
|
+
BbAuthenticatedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbAuthenticatedGuard, deps: [{ token: i1.Auth }, { token: i2.Router }, { token: i3.AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
BbAuthenticatedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbAuthenticatedGuard, providedIn: 'root' });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbAuthenticatedGuard, decorators: [{
|
|
30
39
|
type: Injectable,
|
|
31
40
|
args: [{
|
|
32
41
|
providedIn: 'root'
|
|
33
42
|
}]
|
|
34
|
-
}], ctorParameters: function () { return [{ type: i1.Auth }
|
|
35
|
-
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i2.Router }, { type: i3.AuthConfig, decorators: [{
|
|
44
|
+
type: Optional
|
|
45
|
+
}] }]; } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRlZC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL2d1YXJkcy9hdXRoZW50aWNhdGVkLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQUszQixNQUFNLE9BQU8sb0JBQW9CO0lBRTdCLFlBQW9CLEtBQVcsRUFDWCxPQUFlLEVBQ0gsT0FBb0I7UUFGaEMsVUFBSyxHQUFMLEtBQUssQ0FBTTtRQUNYLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDSCxZQUFPLEdBQVAsT0FBTyxDQUFhO0lBQ3BELENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBeUIsRUFBRSxLQUEwQjtRQUM3RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNuQixHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxrREFBa0Q7WUFDbEQsNERBQTREO1lBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsSUFBSSxJQUFJLENBQUM7WUFDakUsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsSUFBSSxJQUFJLENBQUM7WUFDOUUsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDdkMsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEYsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDVixDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQWtDLEVBQUUsS0FBMEI7UUFDM0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDOztpSEFsQ1Esb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFLZ0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QXV0aENvbmZpZ30gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBdXRofSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Zmlyc3R9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJiQXV0aGVudGljYXRlZEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXV0aDogQXV0aCxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb25maWc/OiBBdXRoQ29uZmlnKSB7XG4gICAgfVxuXG4gICAgY2FuQWN0aXZhdGUoXzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGgudXNlci5waXBlKFxuICAgICAgICAgICAgbWFwKHVzZXIgPT4gISF1c2VyKSxcbiAgICAgICAgICAgIG1hcChpc0F1dGhlbnRpY2F0ZWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIFVSTCB0byBnbyB0byB3ZSBjYW4ganVzdCBzYXlcbiAgICAgICAgICAgICAgICAvLyB0aGUgdXNlciBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHJvdXRlIGJ5IHJldHVybmluZyBmYWxzZS5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0VXJsID0gdGhpcy5fY29uZmlnPy5yZWRpcmVjdHM/LnVuYXV0aGVudGljYXRlZCA/PyBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghbmV4dFVybCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0UmVkaXJlY3RPbkZhaWxlZEF1dGggPSB0aGlzLl9jb25maWc/LnNldFJlZGlyZWN0T25GYWlsZWRBdXRoID8/IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RVcmwgPSBzdGF0ZT8udXJsID8/IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzZXRSZWRpcmVjdE9uRmFpbGVkQXV0aCAmJiByZWRpcmVjdFVybCA/IHtyZWRpcmVjdFVybH0gOiB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kcyA9IEFycmF5LmlzQXJyYXkobmV4dFVybCkgPyBuZXh0VXJsIDogW25leHRVcmxdO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcywge3F1ZXJ5UGFyYW1zfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZUNoaWxkKGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKGNoaWxkUm91dGUsIHN0YXRlKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
import * as i2 from "../permissions/permissions.service";
|
|
7
|
+
import * as i3 from "../interfaces/config.interface";
|
|
8
|
+
export class BbPermissionGuard {
|
|
9
|
+
constructor(_router, _permissions, _config) {
|
|
10
|
+
this._router = _router;
|
|
11
|
+
this._permissions = _permissions;
|
|
12
|
+
this._config = _config;
|
|
13
|
+
}
|
|
14
|
+
canActivate(snapshot, _) {
|
|
15
|
+
const permission = snapshot?.data?.['permission'] ?? null;
|
|
16
|
+
const permission$ = this.parsePermission(permission);
|
|
17
|
+
return permission$.pipe(map(valid => {
|
|
18
|
+
if (valid) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
const nextUrl = this._config?.redirects?.permissionDenied ?? null;
|
|
22
|
+
if (!nextUrl) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const commands = Array.isArray(nextUrl) ? nextUrl : [nextUrl];
|
|
26
|
+
return valid ? true : this._router.createUrlTree(commands);
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
canActivateChild(childRoute, state) {
|
|
30
|
+
return this.canActivate(childRoute, state);
|
|
31
|
+
}
|
|
32
|
+
parsePermission(data) {
|
|
33
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode) && (data === undefined || data === null)) {
|
|
34
|
+
console?.warn?.(`No "data.permission" property was passed.`);
|
|
35
|
+
return of(false);
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(data) || typeof data === 'string') {
|
|
38
|
+
return this._permissions.has(data);
|
|
39
|
+
}
|
|
40
|
+
return this._permissions.has(data?.value, data?.options);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
BbPermissionGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbPermissionGuard, deps: [{ token: i1.Router }, { token: i2.Permissions }, { token: i3.AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
BbPermissionGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbPermissionGuard, providedIn: 'root' });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbPermissionGuard, decorators: [{
|
|
46
|
+
type: Injectable,
|
|
47
|
+
args: [{
|
|
48
|
+
providedIn: 'root'
|
|
49
|
+
}]
|
|
50
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Permissions }, { type: i3.AuthConfig, decorators: [{
|
|
51
|
+
type: Optional
|
|
52
|
+
}] }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL2d1YXJkcy9wZXJtaXNzaW9uLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQU94QixNQUFNLE9BQU8saUJBQWlCO0lBRTFCLFlBQW9CLE9BQWUsRUFDZixZQUF5QixFQUNiLE9BQW9CO1FBRmhDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQyxFQUFFLENBQXNCO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDMUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQ25CLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxFQUFFO2dCQUNQLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUM7WUFDbEUsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQWtDLEVBQUUsS0FBMEI7UUFDM0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQW1GO1FBQ3ZHLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUMxRixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUM3RCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7OEdBMUNRLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFLZ0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7UGVybWlzc2lvbk9wdGlvbnN9IGZyb20gJy4uL2ludGVyZmFjZXMvcGVybWlzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZXJtaXNzaW9uc30gZnJvbSAnLi4vcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQge0F1dGhDb25maWd9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQge0luamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge29mfSBmcm9tICdyeGpzJztcblxuZGVjbGFyZSBsZXQgbmdEZXZNb2RlO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJiUGVybWlzc2lvbkd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZz86IEF1dGhDb25maWcpIHtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgXzogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uID0gc25hcHNob3Q/LmRhdGE/LlsncGVybWlzc2lvbiddID8/IG51bGw7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb24kID0gdGhpcy5wYXJzZVBlcm1pc3Npb24ocGVybWlzc2lvbik7XG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uJC5waXBlKFxuICAgICAgICAgICAgbWFwKHZhbGlkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFVybCA9IHRoaXMuX2NvbmZpZz8ucmVkaXJlY3RzPy5wZXJtaXNzaW9uRGVuaWVkID8/IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0VXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kcyA9IEFycmF5LmlzQXJyYXkobmV4dFVybCkgPyBuZXh0VXJsIDogW25leHRVcmxdO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZCA/IHRydWUgOiB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNhbkFjdGl2YXRlQ2hpbGQoY2hpbGRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUoY2hpbGRSb3V0ZSwgc3RhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VQZXJtaXNzaW9uKGRhdGE6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBQZXJtaXNzaW9uT3B0aW9ucyB9KSB7XG4gICAgICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiAoZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09IG51bGwpKSB7XG4gICAgICAgICAgICBjb25zb2xlPy53YXJuPy4oYE5vIFwiZGF0YS5wZXJtaXNzaW9uXCIgcHJvcGVydHkgd2FzIHBhc3NlZC5gKTtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9ucy5oYXMoZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvbnMuaGFzKGRhdGE/LnZhbHVlLCBkYXRhPy5vcHRpb25zKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -11,12 +11,12 @@ export class JwtHelper {
|
|
|
11
11
|
};
|
|
12
12
|
this.parse = (data) => {
|
|
13
13
|
return {
|
|
14
|
-
id: data['iss']
|
|
15
|
-
type: data['typ']
|
|
16
|
-
audience: data['aud']
|
|
17
|
-
issuer: data['iss']
|
|
18
|
-
subject: data['sub']
|
|
19
|
-
role: data['role']
|
|
14
|
+
id: data['iss'] ?? null,
|
|
15
|
+
type: data['typ'] ?? null,
|
|
16
|
+
audience: data['aud'] ?? null,
|
|
17
|
+
issuer: data['iss'] ?? null,
|
|
18
|
+
subject: data['sub'] ?? null,
|
|
19
|
+
role: data['role'] ?? null,
|
|
20
20
|
notValidBefore: this.parseDate(data['nbf']),
|
|
21
21
|
expiresAt: this.parseDate(data['exp']),
|
|
22
22
|
issuedAt: this.parseDate(data['iat'])
|
|
@@ -66,4 +66,4 @@ export class JwtHelper {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL2hlbHBlcnMvand0LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztJQUF0QjtRQTRDWSxzQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNqQixJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztpQkFDckI7Z0JBQ0QsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUM7UUFFTSxVQUFLLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUM3QixPQUFPO2dCQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSTtnQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUk7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSTtnQkFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJO2dCQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUk7Z0JBQzFCLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0IsQ0FBQztRQUNuQixDQUFDLENBQUM7UUFFTSxjQUFTLEdBQUcsQ0FBQyxjQUFzQixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGNBQWMsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO2dCQUN4QyxPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO0lBRU4sQ0FBQztJQTFFRyxNQUFNLENBQUMsS0FBYTtRQUNoQixJQUFJO1lBQ0EsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEMsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtRQUFDLE1BQU07WUFDSixPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFvQjtRQUNsQyxNQUFNLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxHQUFHLEtBQUs7YUFDYixPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQzthQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLFFBQVEsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsS0FBSyxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsTUFBTSxJQUFJLElBQUksQ0FBQztnQkFDZixNQUFNO1lBQ1YsS0FBSyxDQUFDO2dCQUNGLE1BQU0sSUFBSSxHQUFHLENBQUM7Z0JBQ2QsTUFBTTtZQUNWO2dCQUNJLE1BQU0sMkJBQTJCLENBQUM7U0FDekM7UUFFRCxJQUFJO1lBQ0EsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekM7UUFBQyxNQUFNO1lBQ0osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkI7SUFDTCxDQUFDO0NBa0NKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBdXRoVG9rZW59IGZyb20gJy4uL2ludGVyZmFjZXMvdG9rZW4uaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIEp3dEhlbHBlciB7XG5cbiAgICBkZWNvZGUodG9rZW46IHN0cmluZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHRva2VuID09PSBudWxsIHx8IHRva2VuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QganNvbiA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgdGhpcy51cmxEZWNvZGUodG9rZW4uc3BsaXQoJy4nKVsxXSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlKGpzb24pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cmxEZWNvZGUodG9rZW46IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0b2tlbiB8fCAnJztcbiAgICAgICAgbGV0IG91dHB1dCA9IHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvLS9nLCAnKycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXy9nLCAnLycpO1xuXG4gICAgICAgIHN3aXRjaCAob3V0cHV0Lmxlbmd0aCAlIDQpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJz09JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJz0nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyAnSWxsZWdhbCBiYXNlNjR1cmwgc3RyaW5nISc7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURlY29kZVVuaWNvZGUob3V0cHV0KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gYXRvYihvdXRwdXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiYXNlRGVjb2RlVW5pY29kZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoYXRvYih2YWx1ZSkucmVwbGFjZSgvKC4pL2csIChfLCBwKSA9PiB7XG4gICAgICAgICAgICBsZXQgY29kZSA9IHAuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChjb2RlLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICBjb2RlID0gJzAnICsgY29kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnJScgKyBjb2RlO1xuICAgICAgICB9KSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgcGFyc2UgPSAoZGF0YTogb2JqZWN0KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogZGF0YVsnaXNzJ10gPz8gbnVsbCxcbiAgICAgICAgICAgIHR5cGU6IGRhdGFbJ3R5cCddID8/IG51bGwsXG4gICAgICAgICAgICBhdWRpZW5jZTogZGF0YVsnYXVkJ10gPz8gbnVsbCxcbiAgICAgICAgICAgIGlzc3VlcjogZGF0YVsnaXNzJ10gPz8gbnVsbCxcbiAgICAgICAgICAgIHN1YmplY3Q6IGRhdGFbJ3N1YiddID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhWydyb2xlJ10gPz8gbnVsbCxcbiAgICAgICAgICAgIG5vdFZhbGlkQmVmb3JlOiB0aGlzLnBhcnNlRGF0ZShkYXRhWyduYmYnXSksXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHRoaXMucGFyc2VEYXRlKGRhdGFbJ2V4cCddKSxcbiAgICAgICAgICAgIGlzc3VlZEF0OiB0aGlzLnBhcnNlRGF0ZShkYXRhWydpYXQnXSlcbiAgICAgICAgfSBhcyBBdXRoVG9rZW47XG4gICAgfTtcblxuICAgIHByaXZhdGUgcGFyc2VEYXRlID0gKGVwb2NoSW5TZWNvbmRzOiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKCFlcG9jaEluU2Vjb25kcyB8fCBlcG9jaEluU2Vjb25kcyA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShlcG9jaEluU2Vjb25kcyAqIDEwMDApO1xuICAgIH07XG5cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class AuthConfig {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvbGliL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sVUFBVTtDQW1CdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcFBlcm1pc3Npb25zfSBmcm9tICcuLi9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5oYW5kbGVyJztcblxuZXhwb3J0IGNsYXNzIEF1dGhDb25maWcge1xuICAgIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblxuICAgIGh0dHA/OiB7XG4gICAgICAgIHNjaGVtZT86IHN0cmluZyxcbiAgICAgICAgaGVhZGVyPzogc3RyaW5nXG4gICAgfTtcblxuICAgIHJlZGlyZWN0cz86IHtcbiAgICAgICAgYXV0aGVudGljYXRlZD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB1bmF1dGhlbnRpY2F0ZWQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgICAgcGVybWlzc2lvbkRlbmllZD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH07XG4gICAgc2V0UmVkaXJlY3RPbkZhaWxlZEF1dGg/OiBib29sZWFuO1xuXG4gICAgYm9vdHN0cmFwPzogYm9vbGVhbjtcbiAgICBwcm92aWRlcnM/OiBzdHJpbmdbXTtcbiAgICBhdXRvUmVmcmVzaD86IGJvb2xlYW47XG4gICAgcGVybWlzc2lvbnM/OiBBcHBQZXJtaXNzaW9uczxhbnksIGFueT47XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9pbnRlcmZhY2VzL3Blcm1pc3Npb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQZXJtaXNzaW9uRGF0YTxUIGV4dGVuZHMgc3RyaW5nLCBSPiA9IFJlY29yZDxULCBSW10+O1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uUmVjb3JkPFI+ID0gUltrZXlvZiBSXTtcblxuZXhwb3J0IHR5cGUgUGVybWlzc2lvbk1vZGUgPSAnYW5kJyB8ICdvcic7XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25PcHRpb25zID0ge1xuICAgIG1vZGU/OiBQZXJtaXNzaW9uTW9kZVxufTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlciB7XG5cbiAgICBhdXRoZW50aWNhdGUoaHR0cENsaWVudDogSHR0cENsaWVudCk6IFByb21pc2U8QXV0aFByb3ZpZGVyUmVzdWx0PjtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQcm92aWRlclJlc3BvbnNlIHtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHJlZnJlc2hfdG9rZW4/OiBzdHJpbmc7XG4gICAgcHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgdmVyaWZ5X3Rva2VuPzogc3RyaW5nO1xuICAgIHVzZXI/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFByb3ZpZGVyUmVzdWx0IHtcbiAgICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gICAgcHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgdmVyaWZ5VG9rZW4/OiBzdHJpbmc7XG4gICAgdXNlcj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoU2lnbkluUmVzcG9uc2Uge1xuICAgIHVzZXI/OiB1bmtub3duO1xuICAgIHByb3ZpZGVyPzogc3RyaW5nO1xuICAgIHZlcmlmeVRva2VuPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
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==
|
|
@@ -0,0 +1,64 @@
|
|
|
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.1.1", 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.1.1", ngImport: i0, type: Permissions });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", 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=
|
|
@@ -7,19 +7,18 @@ export class AuthEmailProvider {
|
|
|
7
7
|
}
|
|
8
8
|
async authenticate(httpClient) {
|
|
9
9
|
// Execute API call.
|
|
10
|
-
const data$ =
|
|
10
|
+
const data$ = httpClient.post(this._endpoint, {
|
|
11
11
|
email: this._email,
|
|
12
12
|
password: this._password
|
|
13
13
|
});
|
|
14
|
-
const
|
|
15
|
-
// Map the data to the correct format.
|
|
14
|
+
const data = await firstValueFrom(data$);
|
|
16
15
|
return {
|
|
17
|
-
accessToken: token,
|
|
18
|
-
refreshToken: refresh_token,
|
|
19
|
-
user: user,
|
|
20
|
-
provider: provider,
|
|
21
|
-
verifyToken: verify_token
|
|
16
|
+
accessToken: data?.token,
|
|
17
|
+
refreshToken: data?.refresh_token,
|
|
18
|
+
user: data?.user,
|
|
19
|
+
provider: data?.provider,
|
|
20
|
+
verifyToken: data?.verify_token
|
|
22
21
|
};
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2F1dGgvc3JjL2xpYi9wcm92aWRlcnMvZW1haWwucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxNQUFNLE9BQU8saUJBQWlCO0lBRTFCLFlBQW9CLE1BQWMsRUFDZCxTQUFpQixFQUNqQixTQUFpQjtRQUZqQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQ3JDLG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUF1QixJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsT0FBTztZQUNILFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSztZQUN4QixZQUFZLEVBQUUsSUFBSSxFQUFFLGFBQWE7WUFDakMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUN4QixXQUFXLEVBQUUsSUFBSSxFQUFFLFlBQVk7U0FDbEMsQ0FBQztJQUNOLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXV0aFByb3ZpZGVyLCBBdXRoUHJvdmlkZXJSZXNwb25zZSwgQXV0aFByb3ZpZGVyUmVzdWx0fSBmcm9tICcuLi9pbnRlcmZhY2VzL3Byb3ZpZGVyLmludGVyZmFjZSc7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7Zmlyc3RWYWx1ZUZyb219IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgQXV0aEVtYWlsUHJvdmlkZXIgaW1wbGVtZW50cyBBdXRoUHJvdmlkZXIge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZW1haWw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXNzd29yZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcpIHtcbiAgICB9XG5cbiAgICBhc3luYyBhdXRoZW50aWNhdGUoaHR0cENsaWVudDogSHR0cENsaWVudCk6IFByb21pc2U8QXV0aFByb3ZpZGVyUmVzdWx0PiB7XG4gICAgICAgIC8vIEV4ZWN1dGUgQVBJIGNhbGwuXG4gICAgICAgIGNvbnN0IGRhdGEkID0gaHR0cENsaWVudC5wb3N0PEF1dGhQcm92aWRlclJlc3BvbnNlPih0aGlzLl9lbmRwb2ludCwge1xuICAgICAgICAgICAgZW1haWw6IHRoaXMuX2VtYWlsLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHRoaXMuX3Bhc3N3b3JkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShkYXRhJCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY2Nlc3NUb2tlbjogZGF0YT8udG9rZW4sXG4gICAgICAgICAgICByZWZyZXNoVG9rZW46IGRhdGE/LnJlZnJlc2hfdG9rZW4sXG4gICAgICAgICAgICB1c2VyOiBkYXRhPy51c2VyLFxuICAgICAgICAgICAgcHJvdmlkZXI6IGRhdGE/LnByb3ZpZGVyLFxuICAgICAgICAgICAgdmVyaWZ5VG9rZW46IGRhdGE/LnZlcmlmeV90b2tlblxuICAgICAgICB9O1xuICAgIH1cblxufVxuIl19
|
|
@@ -7,13 +7,16 @@ export class AuthVerifyProvider {
|
|
|
7
7
|
}
|
|
8
8
|
async authenticate(httpClient) {
|
|
9
9
|
// Execute API call.
|
|
10
|
-
const data$ =
|
|
10
|
+
const data$ = httpClient.post(this._endpoint, {
|
|
11
11
|
token: this._code,
|
|
12
12
|
verify_token: this._verifyToken
|
|
13
13
|
});
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
const data = await firstValueFrom(data$);
|
|
15
|
+
return {
|
|
16
|
+
accessToken: data?.token,
|
|
17
|
+
refreshToken: data?.refresh_token,
|
|
18
|
+
user: data?.user
|
|
19
|
+
};
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvcHJvdmlkZXJzL3ZlcmlmeS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsWUFBb0IsS0FBYSxFQUNiLFlBQW9CLEVBQ3BCLFNBQWlCO1FBRmpCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCO1FBQ3JDLG9CQUFvQjtRQUNwQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFpRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFHLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDbEMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsT0FBTztZQUNILFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSztZQUN4QixZQUFZLEVBQUUsSUFBSSxFQUFFLGFBQWE7WUFDakMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1NBQ25CLENBQUM7SUFDTixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F1dGhQcm92aWRlciwgQXV0aFByb3ZpZGVyUmVzcG9uc2UsIEF1dGhQcm92aWRlclJlc3VsdH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcm92aWRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIEF1dGhWZXJpZnlQcm92aWRlciBpbXBsZW1lbnRzIEF1dGhQcm92aWRlciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb2RlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmVyaWZ5VG9rZW46IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nKSB7XG4gICAgfVxuXG4gICAgYXN5bmMgYXV0aGVudGljYXRlKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpOiBQcm9taXNlPEF1dGhQcm92aWRlclJlc3VsdD4ge1xuICAgICAgICAvLyBFeGVjdXRlIEFQSSBjYWxsLlxuICAgICAgICBjb25zdCBkYXRhJCA9IGh0dHBDbGllbnQucG9zdDxQaWNrPEF1dGhQcm92aWRlclJlc3BvbnNlLCAndG9rZW4nIHwgJ3JlZnJlc2hfdG9rZW4nIHwgJ3VzZXInPj4odGhpcy5fZW5kcG9pbnQsIHtcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLl9jb2RlLFxuICAgICAgICAgICAgdmVyaWZ5X3Rva2VuOiB0aGlzLl92ZXJpZnlUb2tlblxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oZGF0YSQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWNjZXNzVG9rZW46IGRhdGE/LnRva2VuLFxuICAgICAgICAgICAgcmVmcmVzaFRva2VuOiBkYXRhPy5yZWZyZXNoX3Rva2VuLFxuICAgICAgICAgICAgdXNlcjogZGF0YT8udXNlclxuICAgICAgICB9O1xuICAgIH1cblxufVxuIl19
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
export * from './lib/interfaces/token.interface';
|
|
2
2
|
export * from './lib/interfaces/config.interface';
|
|
3
|
-
export * from './lib/interfaces/mapper.interface';
|
|
4
3
|
export * from './lib/interfaces/provider.interface';
|
|
4
|
+
export * from './lib/interfaces/permission.interface';
|
|
5
5
|
export * from './lib/tokens/use-authorization.token';
|
|
6
6
|
export * from './lib/helpers/jwt.helper';
|
|
7
|
-
export * from './lib/helpers/mapper.helper';
|
|
8
7
|
export * from './lib/directives/authenticated.directive';
|
|
9
|
-
export * from './lib/directives/role.directive';
|
|
10
8
|
export * from './lib/directives/permission.directive';
|
|
9
|
+
export * from './lib/permissions/permissions.handler';
|
|
10
|
+
export * from './lib/permissions/permissions.service';
|
|
11
11
|
export * from './lib/guards/anonymous.guard';
|
|
12
12
|
export * from './lib/guards/authenticated.guard';
|
|
13
|
+
export * from './lib/guards/permission.guard';
|
|
13
14
|
export * from './lib/providers/email.provider';
|
|
14
15
|
export * from './lib/providers/verify.provider';
|
|
15
16
|
export * from './lib/auth.session';
|
|
16
17
|
export * from './lib/auth.service';
|
|
17
|
-
export * from './lib/permissions.service';
|
|
18
18
|
export * from './lib/auth.module';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vYXV0aC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsc0NBQXNDLENBQUM7QUFFckQsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvdG9rZW4uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3Byb3ZpZGVyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3Blcm1pc3Npb24uaW50ZXJmYWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zL3VzZS1hdXRob3JpemF0aW9uLnRva2VuJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9qd3QuaGVscGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hdXRoZW50aWNhdGVkLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuaGFuZGxlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzL2Fub255bW91cy5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFyZHMvYXV0aGVudGljYXRlZC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycy9lbWFpbC5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm92aWRlcnMvdmVyaWZ5LnByb3ZpZGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zZXNzaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLm1vZHVsZSc7XG4iXX0=
|
|
@@ -6,8 +6,8 @@ import { NgModule } from '@angular/core';
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class CollectionsModule {
|
|
8
8
|
}
|
|
9
|
-
CollectionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
10
|
-
CollectionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
9
|
+
CollectionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: CollectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
CollectionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.1", ngImport: i0, type: CollectionsModule, declarations: [
|
|
11
11
|
// Components.
|
|
12
12
|
BbCollectionsViewer,
|
|
13
13
|
BbCollectionsPager,
|
|
@@ -24,8 +24,8 @@ CollectionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
24
24
|
BbCollectionsEmpty,
|
|
25
25
|
BbCollectionsError,
|
|
26
26
|
BbCollectionsInitial] });
|
|
27
|
-
CollectionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
27
|
+
CollectionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: CollectionsModule, imports: [CommonModule] });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: CollectionsModule, decorators: [{
|
|
29
29
|
type: NgModule,
|
|
30
30
|
args: [{
|
|
31
31
|
imports: [CommonModule],
|
package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs
CHANGED
|
@@ -110,9 +110,9 @@ export class BbCollectionsPager {
|
|
|
110
110
|
.map(page => ({ page, active: pageNumber === page }));
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
BbCollectionsPager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
114
|
-
BbCollectionsPager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
113
|
+
BbCollectionsPager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsPager, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
+
BbCollectionsPager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: BbCollectionsPager, selector: "bb-collections-pager", inputs: { label: "label", collection: "collection" }, host: { classAttribute: "bb-collections-pager" }, ngImport: i0, template: "<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;-webkit-appearance:none;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsPager, decorators: [{
|
|
116
116
|
type: Component,
|
|
117
117
|
args: [{ selector: 'bb-collections-pager', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-pager' }, preserveWhitespaces: false, template: "<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;-webkit-appearance:none;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"] }]
|
|
118
118
|
}], propDecorators: { label: [{
|
package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs
CHANGED
|
@@ -8,9 +8,9 @@ export class BbCollectionsViewer {
|
|
|
8
8
|
this.collection = null;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
BbCollectionsViewer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
12
|
-
BbCollectionsViewer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
11
|
+
BbCollectionsViewer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsViewer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
BbCollectionsViewer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: BbCollectionsViewer, selector: "[bb-collections-viewer]", inputs: { collection: "collection" }, host: { classAttribute: "bb-collections-viewer" }, queries: [{ propertyName: "dataTemplate", first: true, predicate: BbCollectionsData, descendants: true, read: TemplateRef }, { propertyName: "emptyTemplate", first: true, predicate: BbCollectionsEmpty, descendants: true, read: TemplateRef }, { propertyName: "errorTemplate", first: true, predicate: BbCollectionsError, descendants: true, read: TemplateRef }, { propertyName: "initialTemplate", first: true, predicate: BbCollectionsInitial, descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error}\"></ng-container>\n </ng-container>\n</ng-container>\n", styles: [".bb-collections-viewer{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsViewer, decorators: [{
|
|
14
14
|
type: Component,
|
|
15
15
|
args: [{ selector: '[bb-collections-viewer]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-viewer' }, preserveWhitespaces: false, template: "<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error}\"></ng-container>\n </ng-container>\n</ng-container>\n", styles: [".bb-collections-viewer{display:block}\n"] }]
|
|
16
16
|
}], propDecorators: { dataTemplate: [{
|
|
@@ -2,9 +2,9 @@ import { Directive } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class BbCollectionsData {
|
|
4
4
|
}
|
|
5
|
-
BbCollectionsData.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
6
|
-
BbCollectionsData.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
5
|
+
BbCollectionsData.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsData, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6
|
+
BbCollectionsData.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: BbCollectionsData, selector: "[bbCollectionsData]", ngImport: i0 });
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsData, decorators: [{
|
|
8
8
|
type: Directive,
|
|
9
9
|
args: [{
|
|
10
10
|
selector: '[bbCollectionsData]'
|
|
@@ -12,9 +12,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImpor
|
|
|
12
12
|
}] });
|
|
13
13
|
export class BbCollectionsEmpty {
|
|
14
14
|
}
|
|
15
|
-
BbCollectionsEmpty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
16
|
-
BbCollectionsEmpty.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
15
|
+
BbCollectionsEmpty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsEmpty, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
+
BbCollectionsEmpty.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: BbCollectionsEmpty, selector: "[bbCollectionsEmpty]", ngImport: i0 });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsEmpty, decorators: [{
|
|
18
18
|
type: Directive,
|
|
19
19
|
args: [{
|
|
20
20
|
selector: '[bbCollectionsEmpty]'
|
|
@@ -22,9 +22,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImpor
|
|
|
22
22
|
}] });
|
|
23
23
|
export class BbCollectionsError {
|
|
24
24
|
}
|
|
25
|
-
BbCollectionsError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
26
|
-
BbCollectionsError.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
25
|
+
BbCollectionsError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsError, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
26
|
+
BbCollectionsError.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: BbCollectionsError, selector: "[bbCollectionsError]", ngImport: i0 });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsError, decorators: [{
|
|
28
28
|
type: Directive,
|
|
29
29
|
args: [{
|
|
30
30
|
selector: '[bbCollectionsError]'
|
|
@@ -32,9 +32,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImpor
|
|
|
32
32
|
}] });
|
|
33
33
|
export class BbCollectionsInitial {
|
|
34
34
|
}
|
|
35
|
-
BbCollectionsInitial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
36
|
-
BbCollectionsInitial.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
35
|
+
BbCollectionsInitial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsInitial, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
36
|
+
BbCollectionsInitial.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.1", type: BbCollectionsInitial, selector: "[bbCollectionsInitial]", ngImport: i0 });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BbCollectionsInitial, decorators: [{
|
|
38
38
|
type: Directive,
|
|
39
39
|
args: [{
|
|
40
40
|
selector: '[bbCollectionsInitial]'
|