@dereekb/dbx-core 1.2.0 → 3.0.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/README.md +1 -1
- package/esm2020/lib/action/action.handler.mjs +4 -126
- package/esm2020/lib/action/action.holder.mjs +13 -4
- package/esm2020/lib/action/action.machine.mjs +15 -7
- package/esm2020/lib/action/action.mjs +37 -17
- package/esm2020/lib/action/action.module.mjs +18 -18
- package/esm2020/lib/action/action.reference.mjs +7 -0
- package/esm2020/lib/action/action.store.mjs +63 -26
- package/esm2020/lib/action/action.store.source.mjs +27 -13
- package/esm2020/lib/action/directive/auto/action.automodify.directive.mjs +7 -7
- package/esm2020/lib/action/directive/auto/action.autotrigger.directive.mjs +13 -11
- package/esm2020/lib/action/directive/auto/index.mjs +2 -2
- package/esm2020/lib/action/directive/context/action.directive.mjs +7 -7
- package/esm2020/lib/action/directive/context/action.source.directive.mjs +3 -3
- package/esm2020/lib/action/directive/debug/action.logger.directive.mjs +6 -6
- package/esm2020/lib/action/directive/map/action.map.directive.mjs +3 -3
- package/esm2020/lib/action/directive/map/action.map.key.directive.mjs +3 -3
- package/esm2020/lib/action/directive/map/action.map.source.directive.mjs +3 -3
- package/esm2020/lib/action/directive/map/action.map.working.disable.directive.mjs +7 -7
- package/esm2020/lib/action/directive/state/action.disabled.directive.mjs +8 -7
- package/esm2020/lib/action/directive/state/action.enforce.modified.directive.mjs +48 -0
- package/esm2020/lib/action/directive/state/action.handler.directive.mjs +13 -12
- package/esm2020/lib/action/directive/state/action.success.directive.mjs +24 -36
- package/esm2020/lib/action/directive/state/action.success.handler.directive.mjs +48 -0
- package/esm2020/lib/action/directive/state/action.value.directive.mjs +13 -11
- package/esm2020/lib/action/directive/state/action.value.stream.directive.mjs +80 -0
- package/esm2020/lib/action/directive/state/action.value.trigger.directive.mjs +73 -0
- package/esm2020/lib/action/directive/state/action.value.trigger.instance.mjs +43 -0
- package/esm2020/lib/action/directive/state/action.working.component.mjs +29 -23
- package/esm2020/lib/action/directive/state/index.mjs +5 -3
- package/esm2020/lib/action/index.mjs +2 -2
- package/esm2020/lib/auth/auth.module.mjs +26 -0
- package/esm2020/lib/auth/auth.role.any.directive.mjs +36 -0
- package/esm2020/lib/auth/auth.role.has.directive.mjs +36 -0
- package/esm2020/lib/auth/auth.state.module.mjs +28 -0
- package/esm2020/lib/auth/auth.state.service.mjs +23 -0
- package/esm2020/lib/auth/auth.user.mjs +11 -0
- package/esm2020/lib/auth/index.mjs +10 -0
- package/esm2020/lib/auth/router/auth.router.mjs +6 -0
- package/esm2020/lib/auth/router/auth.router.module.mjs +26 -0
- package/esm2020/lib/auth/router/auth.router.service.mjs +61 -0
- package/esm2020/lib/auth/router/index.mjs +6 -0
- package/esm2020/lib/auth/router/provider/uirouter/auth.hook.mjs +23 -0
- package/esm2020/lib/auth/router/provider/uirouter/hook.mjs +65 -0
- package/esm2020/lib/auth/router/provider/uirouter/index.mjs +6 -0
- package/esm2020/lib/auth/router/provider/uirouter/redirect.mjs +29 -0
- package/esm2020/lib/auth/router/provider/uirouter/role.hook.mjs +32 -0
- package/esm2020/lib/auth/router/provider/uirouter/state.hook.mjs +53 -0
- package/esm2020/lib/auth/router/state/auth.router.state.module.mjs +32 -0
- package/esm2020/lib/auth/router/state/effect/auth.router.state.effect.mjs +46 -0
- package/esm2020/lib/auth/router/state/effect/index.mjs +2 -0
- package/esm2020/lib/auth/router/state/index.mjs +3 -0
- package/esm2020/lib/auth/service/auth.service.mjs +6 -0
- package/esm2020/lib/auth/service/auth.service.rxjs.mjs +27 -0
- package/esm2020/lib/auth/service/index.mjs +3 -0
- package/esm2020/lib/auth/state/action/auth.action.mjs +14 -0
- package/esm2020/lib/auth/state/action/index.mjs +12 -0
- package/esm2020/lib/auth/state/action/user.action.mjs +18 -0
- package/esm2020/lib/auth/state/effect/auth.effect.mjs +44 -0
- package/esm2020/lib/auth/state/index.mjs +13 -0
- package/esm2020/lib/auth/state/reducer/index.mjs +23 -0
- package/esm2020/lib/auth/state/reducer/user.reducer.mjs +12 -0
- package/esm2020/lib/auth/state/state.mjs +2 -0
- package/esm2020/lib/button/action/action.button.directive.mjs +14 -13
- package/esm2020/lib/button/action/action.button.trigger.directive.mjs +6 -6
- package/esm2020/lib/button/button.directive.mjs +7 -7
- package/esm2020/lib/button/button.loading.directive.mjs +3 -3
- package/esm2020/lib/button/button.mjs +1 -1
- package/esm2020/lib/button/button.module.mjs +4 -4
- package/esm2020/lib/button/router/button.segue.directive.mjs +8 -4
- package/esm2020/lib/context/context.directive.mjs +41 -0
- package/esm2020/lib/context/context.mjs +22 -0
- package/esm2020/lib/context/context.module.mjs +28 -0
- package/esm2020/lib/context/context.service.mjs +29 -0
- package/esm2020/lib/context/index.mjs +6 -0
- package/esm2020/lib/context/state/action/data.action.mjs +10 -0
- package/esm2020/lib/context/state/action/index.mjs +7 -0
- package/esm2020/lib/context/state/effect/index.mjs +38 -0
- package/esm2020/lib/context/state/index.mjs +13 -0
- package/esm2020/lib/context/state/reducer/data.reducer.mjs +16 -0
- package/esm2020/lib/context/state/reducer/index.mjs +25 -0
- package/esm2020/lib/context/state/state.mjs +2 -0
- package/esm2020/lib/filter/action/action.filter.source.directive.mjs +6 -6
- package/esm2020/lib/filter/filter.abstract.connector.directive.mjs +3 -3
- package/esm2020/lib/filter/filter.abstract.source.directive.mjs +4 -4
- package/esm2020/lib/filter/filter.connector.directive.mjs +3 -3
- package/esm2020/lib/filter/filter.map.connector.directive.mjs +3 -3
- package/esm2020/lib/filter/filter.map.directive.mjs +3 -3
- package/esm2020/lib/filter/filter.map.instance.directive.mjs +3 -3
- package/esm2020/lib/filter/filter.map.source.directive.mjs +3 -3
- package/esm2020/lib/filter/filter.module.mjs +4 -4
- package/esm2020/lib/filter/filter.source.directive.mjs +3 -3
- package/esm2020/lib/index.mjs +6 -2
- package/esm2020/lib/injection/index.mjs +9 -0
- package/esm2020/lib/injection/injection.component.mjs +34 -0
- package/esm2020/lib/injection/injection.component.module.mjs +31 -0
- package/esm2020/lib/injection/injection.context.directive.mjs +124 -0
- package/esm2020/lib/injection/injection.context.forward.directive.mjs +30 -0
- package/esm2020/lib/injection/injection.context.mjs +18 -0
- package/esm2020/lib/injection/injection.directive.mjs +33 -0
- package/esm2020/lib/injection/injection.instance.mjs +116 -0
- package/esm2020/lib/injection/injection.mjs +16 -0
- package/esm2020/lib/ngrx/index.mjs +2 -0
- package/esm2020/lib/ngrx/store.lockset.mjs +64 -0
- package/esm2020/lib/pipe/date/date.pipe.module.mjs +4 -4
- package/esm2020/lib/pipe/date/datedistance.pipe.mjs +3 -3
- package/esm2020/lib/pipe/date/dateformatdistance.pipe.mjs +3 -3
- package/esm2020/lib/pipe/date/datefromtoformat.pipe.mjs +3 -3
- package/esm2020/lib/pipe/date/minutesstring.pipe.mjs +3 -3
- package/esm2020/lib/pipe/date/timedistance.pipe.mjs +6 -6
- package/esm2020/lib/pipe/date/tojsdate.pipe.mjs +13 -5
- package/esm2020/lib/pipe/date/tominutes.pipe.mjs +3 -3
- package/esm2020/lib/pipe/index.mjs +3 -1
- package/esm2020/lib/pipe/misc/index.mjs +3 -0
- package/esm2020/lib/pipe/misc/misc.pipe.module.mjs +20 -0
- package/esm2020/lib/pipe/misc/prettyjson.pipe.mjs +27 -0
- package/esm2020/lib/pipe/pipe.module.mjs +21 -0
- package/esm2020/lib/router/anchor/anchor.directive.mjs +18 -5
- package/esm2020/lib/router/anchor/anchor.mjs +1 -1
- package/esm2020/lib/router/router/provider/angular/angular.router.service.mjs +8 -5
- package/esm2020/lib/router/router/provider/angular/angular.router.service.module.mjs +4 -4
- package/esm2020/lib/router/router/provider/uirouter/uirouter.router.service.mjs +32 -10
- package/esm2020/lib/router/router/provider/uirouter/uirouter.router.service.module.mjs +4 -4
- package/esm2020/lib/router/router/service/index.mjs +2 -1
- package/esm2020/lib/router/router/service/router.go.mjs +14 -0
- package/esm2020/lib/router/router/service/router.service.mjs +1 -1
- package/esm2020/lib/router/router/transition/transition.directive.mjs +7 -7
- package/esm2020/lib/router/router/transition/transition.watcher.directive.mjs +6 -6
- package/esm2020/lib/router/segue.mjs +17 -2
- package/esm2020/lib/storage/storage.accessor.simple.factory.mjs +3 -3
- package/esm2020/lib/storage/storage.module.mjs +4 -4
- package/esm2020/lib/subscription/subscription.directive.mjs +6 -6
- package/esm2020/lib/util/view.mjs +18 -2
- package/esm2020/lib/view/if.directive.mjs +30 -0
- package/esm2020/lib/view/index.mjs +2 -0
- package/fesm2015/dereekb-dbx-core.mjs +1977 -690
- package/fesm2015/dereekb-dbx-core.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-core.mjs +1970 -683
- package/fesm2020/dereekb-dbx-core.mjs.map +1 -1
- package/lib/action/action.d.ts +14 -12
- package/lib/action/action.handler.d.ts +7 -67
- package/lib/action/action.holder.d.ts +9 -5
- package/lib/action/action.machine.d.ts +21 -8
- package/lib/action/action.module.d.ts +5 -5
- package/lib/action/action.reference.d.ts +11 -0
- package/lib/action/action.store.d.ts +33 -15
- package/lib/action/action.store.source.d.ts +20 -13
- package/lib/action/directive/auto/action.automodify.directive.d.ts +5 -4
- package/lib/action/directive/auto/action.autotrigger.directive.d.ts +9 -9
- package/lib/action/directive/auto/index.d.ts +1 -1
- package/lib/action/directive/context/action.directive.d.ts +3 -3
- package/lib/action/directive/debug/action.logger.directive.d.ts +3 -3
- package/lib/action/directive/map/action.map.working.disable.directive.d.ts +6 -6
- package/lib/action/directive/state/action.disabled.directive.d.ts +5 -4
- package/lib/action/directive/state/action.enforce.modified.directive.d.ts +20 -0
- package/lib/action/directive/state/action.handler.directive.d.ts +3 -3
- package/lib/action/directive/state/action.success.directive.d.ts +11 -19
- package/lib/action/directive/state/action.success.handler.directive.d.ts +24 -0
- package/lib/action/directive/state/action.value.directive.d.ts +8 -8
- package/lib/action/directive/state/action.value.stream.directive.d.ts +25 -0
- package/lib/action/directive/state/action.value.trigger.directive.d.ts +34 -0
- package/lib/action/directive/state/action.value.trigger.instance.d.ts +34 -0
- package/lib/action/directive/state/action.working.component.d.ts +13 -7
- package/lib/action/directive/state/index.d.ts +4 -2
- package/lib/action/index.d.ts +1 -1
- package/lib/auth/auth.module.d.ts +8 -0
- package/lib/auth/auth.role.any.directive.d.ts +20 -0
- package/lib/auth/auth.role.has.directive.d.ts +20 -0
- package/lib/auth/auth.state.module.d.ts +8 -0
- package/lib/auth/auth.state.service.d.ts +13 -0
- package/lib/auth/auth.user.d.ts +28 -0
- package/lib/auth/index.d.ts +9 -0
- package/lib/auth/router/auth.router.d.ts +10 -0
- package/lib/auth/router/auth.router.module.d.ts +9 -0
- package/lib/auth/router/auth.router.service.d.ts +38 -0
- package/lib/auth/router/index.d.ts +5 -0
- package/lib/auth/router/provider/uirouter/auth.hook.d.ts +18 -0
- package/lib/auth/router/provider/uirouter/hook.d.ts +46 -0
- package/lib/auth/router/provider/uirouter/index.d.ts +5 -0
- package/lib/auth/router/provider/uirouter/redirect.d.ts +9 -0
- package/lib/auth/router/provider/uirouter/role.hook.d.ts +26 -0
- package/lib/auth/router/provider/uirouter/state.hook.d.ts +31 -0
- package/lib/auth/router/state/auth.router.state.module.d.ts +14 -0
- package/lib/auth/router/state/effect/auth.router.state.effect.d.ts +32 -0
- package/lib/auth/router/state/effect/index.d.ts +1 -0
- package/lib/auth/router/state/index.d.ts +2 -0
- package/lib/auth/service/auth.service.d.ts +46 -0
- package/lib/auth/service/auth.service.rxjs.d.ts +18 -0
- package/lib/auth/service/index.d.ts +2 -0
- package/lib/auth/state/action/auth.action.d.ts +12 -0
- package/lib/auth/state/action/index.d.ts +11 -0
- package/lib/auth/state/action/user.action.d.ts +34 -0
- package/lib/auth/state/effect/auth.effect.d.ts +31 -0
- package/lib/auth/state/index.d.ts +12 -0
- package/lib/auth/state/reducer/index.d.ts +29 -0
- package/lib/auth/state/reducer/user.reducer.d.ts +11 -0
- package/lib/auth/state/state.d.ts +5 -0
- package/lib/button/action/action.button.directive.d.ts +4 -4
- package/lib/button/action/action.button.trigger.directive.d.ts +3 -3
- package/lib/button/button.d.ts +5 -5
- package/lib/button/button.directive.d.ts +2 -2
- package/lib/button/router/button.segue.directive.d.ts +1 -0
- package/lib/context/context.d.ts +39 -0
- package/lib/context/context.directive.d.ts +19 -0
- package/lib/context/context.module.d.ts +8 -0
- package/lib/context/context.service.d.ts +16 -0
- package/lib/context/index.d.ts +5 -0
- package/lib/context/state/action/data.action.d.ts +13 -0
- package/lib/context/state/action/index.d.ts +6 -0
- package/lib/context/state/effect/index.d.ts +39 -0
- package/lib/context/state/index.d.ts +12 -0
- package/lib/context/state/reducer/data.reducer.d.ts +13 -0
- package/lib/context/state/reducer/index.d.ts +34 -0
- package/lib/context/state/state.d.ts +9 -0
- package/lib/filter/action/action.filter.source.directive.d.ts +2 -2
- package/lib/filter/filter.abstract.source.directive.d.ts +2 -2
- package/lib/index.d.ts +5 -1
- package/lib/injection/index.d.ts +8 -0
- package/lib/injection/injection.component.d.ts +15 -0
- package/lib/injection/injection.component.module.d.ts +9 -0
- package/lib/injection/injection.context.d.ts +39 -0
- package/lib/injection/injection.context.directive.d.ts +25 -0
- package/lib/injection/injection.context.forward.directive.d.ts +16 -0
- package/lib/{injected/injected.d.ts → injection/injection.d.ts} +4 -4
- package/lib/injection/injection.directive.d.ts +19 -0
- package/lib/{injected/injected.instance.d.ts → injection/injection.instance.d.ts} +8 -8
- package/lib/ngrx/index.d.ts +1 -0
- package/lib/ngrx/store.lockset.d.ts +36 -0
- package/lib/pipe/index.d.ts +2 -0
- package/lib/pipe/misc/index.d.ts +2 -0
- package/lib/pipe/misc/misc.pipe.module.d.ts +7 -0
- package/lib/pipe/misc/prettyjson.pipe.d.ts +9 -0
- package/lib/pipe/pipe.module.d.ts +8 -0
- package/lib/router/anchor/anchor.d.ts +5 -1
- package/lib/router/anchor/anchor.directive.d.ts +10 -2
- package/lib/router/router/provider/angular/angular.router.service.d.ts +7 -5
- package/lib/router/router/provider/uirouter/uirouter.router.service.d.ts +11 -5
- package/lib/router/router/service/index.d.ts +1 -0
- package/lib/router/router/service/router.go.d.ts +14 -0
- package/lib/router/router/service/router.service.d.ts +10 -4
- package/lib/router/router/transition/transition.directive.d.ts +2 -2
- package/lib/router/router/transition/transition.watcher.directive.d.ts +1 -1
- package/lib/router/segue.d.ts +10 -3
- package/lib/util/view.d.ts +12 -0
- package/lib/view/if.directive.d.ts +19 -0
- package/lib/view/index.d.ts +1 -0
- package/package.json +7 -18
- package/esm2020/lib/action/directive/auto/action.autotrigger.value.directive.mjs +0 -79
- package/esm2020/lib/action/directive/state/action.disabled.modified.directive.mjs +0 -35
- package/esm2020/lib/action/directive/state/action.success.component.mjs +0 -50
- package/esm2020/lib/action/snackbar/index.mjs +0 -3
- package/esm2020/lib/action/snackbar/snackbar.mjs +0 -24
- package/esm2020/lib/injected/index.mjs +0 -6
- package/esm2020/lib/injected/injected.component.mjs +0 -34
- package/esm2020/lib/injected/injected.component.module.mjs +0 -26
- package/esm2020/lib/injected/injected.directive.mjs +0 -33
- package/esm2020/lib/injected/injected.instance.mjs +0 -116
- package/esm2020/lib/injected/injected.mjs +0 -16
- package/lib/action/directive/auto/action.autotrigger.value.directive.d.ts +0 -25
- package/lib/action/directive/state/action.disabled.modified.directive.d.ts +0 -16
- package/lib/action/directive/state/action.success.component.d.ts +0 -15
- package/lib/action/snackbar/index.d.ts +0 -1
- package/lib/action/snackbar/snackbar.d.ts +0 -50
- package/lib/injected/index.d.ts +0 -5
- package/lib/injected/injected.component.d.ts +0 -15
- package/lib/injected/injected.component.module.d.ts +0 -8
- package/lib/injected/injected.directive.d.ts +0 -19
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import { authRolesSetContainsAnyRoleFrom, DbxAuthService } from './service';
|
|
4
|
+
import { AbstractIfDirective } from '../view/if.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./service";
|
|
7
|
+
/**
|
|
8
|
+
* Structural decorator directive similar to ngIf that embeds content if the current auth user has any of the target role(s).
|
|
9
|
+
*/
|
|
10
|
+
export class DbxAuthHasAnyRoleDirective extends AbstractIfDirective {
|
|
11
|
+
constructor(templateRef, viewContainer, dbxAuthService) {
|
|
12
|
+
super(templateRef, viewContainer);
|
|
13
|
+
this.dbxAuthService = dbxAuthService;
|
|
14
|
+
this._targetRoles = new BehaviorSubject(undefined);
|
|
15
|
+
this.targetRoles$ = this._targetRoles.asObservable();
|
|
16
|
+
this.show$ = this.dbxAuthService.authRoles$.pipe(authRolesSetContainsAnyRoleFrom(this.targetRoles$));
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
this._targetRoles.complete();
|
|
20
|
+
}
|
|
21
|
+
set targetRoles(roles) {
|
|
22
|
+
this._targetRoles.next(roles);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
DbxAuthHasAnyRoleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAuthHasAnyRoleDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.DbxAuthService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
26
|
+
DbxAuthHasAnyRoleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxAuthHasAnyRoleDirective, selector: "[dbxAuthHasAnyRole]", inputs: { targetRoles: ["dbxAuthHasAnyRole", "targetRoles"] }, usesInheritance: true, ngImport: i0 });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAuthHasAnyRoleDirective, decorators: [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{
|
|
30
|
+
selector: '[dbxAuthHasAnyRole]'
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.DbxAuthService }]; }, propDecorators: { targetRoles: [{
|
|
33
|
+
type: Input,
|
|
34
|
+
args: ['dbxAuthHasAnyRole']
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb2xlLmFueS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvYXV0aC5yb2xlLmFueS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRTNEOztHQUVHO0FBSUgsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG1CQUFtQjtJQU9qRSxZQUNFLFdBQTZCLEVBQzdCLGFBQStCLEVBQ3ZCLGNBQThCO1FBRXRDLEtBQUssQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFGMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUmhDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWdDLFNBQVMsQ0FBQyxDQUFDO1FBQzVFLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVoRCxVQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBUXpHLENBQUM7SUFFUSxXQUFXO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQ0ksV0FBVyxDQUFDLEtBQW9DO1FBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O3VIQXRCVSwwQkFBMEI7MkdBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUh0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDOzhKQXFCSyxXQUFXO3NCQURkLEtBQUs7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aFJvbGUsIEFycmF5T3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhdXRoUm9sZXNTZXRDb250YWluc0FueVJvbGVGcm9tLCBEYnhBdXRoU2VydmljZSB9IGZyb20gJy4vc2VydmljZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RJZkRpcmVjdGl2ZSB9IGZyb20gJy4uL3ZpZXcvaWYuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBTdHJ1Y3R1cmFsIGRlY29yYXRvciBkaXJlY3RpdmUgc2ltaWxhciB0byBuZ0lmIHRoYXQgZW1iZWRzIGNvbnRlbnQgaWYgdGhlIGN1cnJlbnQgYXV0aCB1c2VyIGhhcyBhbnkgb2YgdGhlIHRhcmdldCByb2xlKHMpLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4QXV0aEhhc0FueVJvbGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhBdXRoSGFzQW55Um9sZURpcmVjdGl2ZSBleHRlbmRzIEFic3RyYWN0SWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX3RhcmdldFJvbGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBcnJheU9yVmFsdWU8QXV0aFJvbGU+Pj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdGFyZ2V0Um9sZXMkID0gdGhpcy5fdGFyZ2V0Um9sZXMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcmVhZG9ubHkgc2hvdyQgPSB0aGlzLmRieEF1dGhTZXJ2aWNlLmF1dGhSb2xlcyQucGlwZShhdXRoUm9sZXNTZXRDb250YWluc0FueVJvbGVGcm9tKHRoaXMudGFyZ2V0Um9sZXMkKSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGRieEF1dGhTZXJ2aWNlOiBEYnhBdXRoU2VydmljZVxuICApIHtcbiAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lcik7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl90YXJnZXRSb2xlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQElucHV0KCdkYnhBdXRoSGFzQW55Um9sZScpXG4gIHNldCB0YXJnZXRSb2xlcyhyb2xlczogTWF5YmU8QXJyYXlPclZhbHVlPEF1dGhSb2xlPj4pIHtcbiAgICB0aGlzLl90YXJnZXRSb2xlcy5uZXh0KHJvbGVzKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import { authRolesSetContainsAllRolesFrom, DbxAuthService } from './service';
|
|
4
|
+
import { AbstractIfDirective } from '../view/if.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./service";
|
|
7
|
+
/**
|
|
8
|
+
* Structural decorator directive similar to ngIf that embeds content if the current auth user has all of the target role(s).
|
|
9
|
+
*/
|
|
10
|
+
export class DbxAuthHasRolesDirective extends AbstractIfDirective {
|
|
11
|
+
constructor(templateRef, viewContainer, dbxAuthService) {
|
|
12
|
+
super(templateRef, viewContainer);
|
|
13
|
+
this.dbxAuthService = dbxAuthService;
|
|
14
|
+
this._targetRoles = new BehaviorSubject(undefined);
|
|
15
|
+
this.targetRoles$ = this._targetRoles.asObservable();
|
|
16
|
+
this.show$ = this.dbxAuthService.authRoles$.pipe(authRolesSetContainsAllRolesFrom(this.targetRoles$));
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
this._targetRoles.complete();
|
|
20
|
+
}
|
|
21
|
+
set targetRoles(roles) {
|
|
22
|
+
this._targetRoles.next(roles);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
DbxAuthHasRolesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAuthHasRolesDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.DbxAuthService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
26
|
+
DbxAuthHasRolesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: DbxAuthHasRolesDirective, selector: "[dbxAuthHasRoles]", inputs: { targetRoles: ["dbxAuthHasRoles", "targetRoles"] }, usesInheritance: true, ngImport: i0 });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAuthHasRolesDirective, decorators: [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{
|
|
30
|
+
selector: '[dbxAuthHasRoles]'
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.DbxAuthService }]; }, propDecorators: { targetRoles: [{
|
|
33
|
+
type: Input,
|
|
34
|
+
args: ['dbxAuthHasRoles']
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb2xlLmhhcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvYXV0aC5yb2xlLmhhcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRTNEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG1CQUFtQjtJQU8vRCxZQUNFLFdBQTZCLEVBQzdCLGFBQStCLEVBQ3ZCLGNBQThCO1FBRXRDLEtBQUssQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFGMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUmhDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWdDLFNBQVMsQ0FBQyxDQUFDO1FBQzVFLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVoRCxVQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBUTFHLENBQUM7SUFFUSxXQUFXO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQ0ksV0FBVyxDQUFDLEtBQW9DO1FBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O3FIQXRCVSx3QkFBd0I7eUdBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzhKQXFCSyxXQUFXO3NCQURkLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aFJvbGUsIEFycmF5T3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhdXRoUm9sZXNTZXRDb250YWluc0FsbFJvbGVzRnJvbSwgRGJ4QXV0aFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEFic3RyYWN0SWZEaXJlY3RpdmUgfSBmcm9tICcuLi92aWV3L2lmLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogU3RydWN0dXJhbCBkZWNvcmF0b3IgZGlyZWN0aXZlIHNpbWlsYXIgdG8gbmdJZiB0aGF0IGVtYmVkcyBjb250ZW50IGlmIHRoZSBjdXJyZW50IGF1dGggdXNlciBoYXMgYWxsIG9mIHRoZSB0YXJnZXQgcm9sZShzKS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RieEF1dGhIYXNSb2xlc10nXG59KVxuZXhwb3J0IGNsYXNzIERieEF1dGhIYXNSb2xlc0RpcmVjdGl2ZSBleHRlbmRzIEFic3RyYWN0SWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX3RhcmdldFJvbGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBcnJheU9yVmFsdWU8QXV0aFJvbGU+Pj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdGFyZ2V0Um9sZXMkID0gdGhpcy5fdGFyZ2V0Um9sZXMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcmVhZG9ubHkgc2hvdyQgPSB0aGlzLmRieEF1dGhTZXJ2aWNlLmF1dGhSb2xlcyQucGlwZShhdXRoUm9sZXNTZXRDb250YWluc0FsbFJvbGVzRnJvbSh0aGlzLnRhcmdldFJvbGVzJCkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBkYnhBdXRoU2VydmljZTogRGJ4QXV0aFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXIpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fdGFyZ2V0Um9sZXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIEBJbnB1dCgnZGJ4QXV0aEhhc1JvbGVzJylcbiAgc2V0IHRhcmdldFJvbGVzKHJvbGVzOiBNYXliZTxBcnJheU9yVmFsdWU8QXV0aFJvbGU+Pikge1xuICAgIHRoaXMuX3RhcmdldFJvbGVzLm5leHQocm9sZXMpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { fromDbxAppAuth } from './state';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { EffectsModule } from '@ngrx/effects';
|
|
4
|
+
import { StoreModule } from '@ngrx/store';
|
|
5
|
+
import { DbxAppAuthEffects } from './state/effect/auth.effect';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@ngrx/store";
|
|
8
|
+
import * as i2 from "@ngrx/effects";
|
|
9
|
+
export class DbxAppAuthStateModule {
|
|
10
|
+
}
|
|
11
|
+
DbxAppAuthStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
DbxAppAuthStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthStateModule, imports: [i1.StoreFeatureModule, i2.EffectsFeatureModule] });
|
|
13
|
+
DbxAppAuthStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthStateModule, imports: [[
|
|
14
|
+
StoreModule.forFeature(fromDbxAppAuth.featureKey, fromDbxAppAuth.reducers),
|
|
15
|
+
EffectsModule.forFeature([DbxAppAuthEffects])
|
|
16
|
+
]] });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthStateModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
imports: [
|
|
21
|
+
StoreModule.forFeature(fromDbxAppAuth.featureKey, fromDbxAppAuth.reducers),
|
|
22
|
+
EffectsModule.forFeature([DbxAppAuthEffects])
|
|
23
|
+
],
|
|
24
|
+
declarations: [],
|
|
25
|
+
exports: []
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdGF0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvYXV0aC5zdGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVUvRCxNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixZQVB2QjtZQUNQLFdBQVcsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQzFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzlDOzJGQUlVLHFCQUFxQjtrQkFSakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUM7d0JBQzFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3FCQUM5QztvQkFDRCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tRGJ4QXBwQXV0aCB9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVmZmVjdHNNb2R1bGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlTW9kdWxlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgRGJ4QXBwQXV0aEVmZmVjdHMgfSBmcm9tICcuL3N0YXRlL2VmZmVjdC9hdXRoLmVmZmVjdCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKGZyb21EYnhBcHBBdXRoLmZlYXR1cmVLZXksIGZyb21EYnhBcHBBdXRoLnJlZHVjZXJzKSxcbiAgICBFZmZlY3RzTW9kdWxlLmZvckZlYXR1cmUoW0RieEFwcEF1dGhFZmZlY3RzXSlcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4QXBwQXV0aFN0YXRlTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { Store } from "@ngrx/store";
|
|
3
|
+
import { fromDbxAppAuth } from './state';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ngrx/store";
|
|
6
|
+
/**
|
|
7
|
+
* State for accessing the app's DbxAppAuthState defined within the DbxAppAuthFullState for the ngrx store.
|
|
8
|
+
*/
|
|
9
|
+
export class DbxAppAuthStateService {
|
|
10
|
+
constructor(store) {
|
|
11
|
+
this.store = store;
|
|
12
|
+
this.authStateUser$ = this.store.select(fromDbxAppAuth.selectDbxAppAuthUser);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
DbxAppAuthStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthStateService, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
DbxAppAuthStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthStateService, providedIn: 'root' });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthStateService, decorators: [{
|
|
18
|
+
type: Injectable,
|
|
19
|
+
args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
}]
|
|
22
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hdXRoL2F1dGguc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7O0FBSXpDOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFxQixLQUFpQztRQUFqQyxVQUFLLEdBQUwsS0FBSyxDQUE0QjtRQUY3QyxtQkFBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZCLENBQUM7O21IQUpoRCxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XG5pbXBvcnQgeyBmcm9tRGJ4QXBwQXV0aCB9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHsgRGJ4QXBwQXV0aEZ1bGxTdGF0ZSB9IGZyb20gXCIuL3N0YXRlL3N0YXRlXCI7XG5cblxuLyoqXG4gKiBTdGF0ZSBmb3IgYWNjZXNzaW5nIHRoZSBhcHAncyBEYnhBcHBBdXRoU3RhdGUgZGVmaW5lZCB3aXRoaW4gdGhlIERieEFwcEF1dGhGdWxsU3RhdGUgZm9yIHRoZSBuZ3J4IHN0b3JlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYnhBcHBBdXRoU3RhdGVTZXJ2aWNlIHtcblxuICByZWFkb25seSBhdXRoU3RhdGVVc2VyJCA9IHRoaXMuc3RvcmUuc2VsZWN0KGZyb21EYnhBcHBBdXRoLnNlbGVjdERieEFwcEF1dGhVc2VyKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBzdG9yZTogU3RvcmU8RGJ4QXBwQXV0aEZ1bGxTdGF0ZT4pIHsgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const NO_AUTH_USER_IDENTIFIER = '0';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an AuthUserIdentifier from the input. If the input is undefined, returns the NoAuthUserIdentifier.
|
|
4
|
+
*
|
|
5
|
+
* @param inputId
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export function authUserIdentifier(inputId) {
|
|
9
|
+
return (inputId) ? inputId : NO_AUTH_USER_IDENTIFIER;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC51c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hdXRoL2F1dGgudXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBUTNDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWtDO0lBQ25FLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmUgfSBmcm9tIFwiQGRlcmVla2IvdXRpbFwiO1xuXG5cbi8qKlxuICogQW4gYXBwbGljYXRpb24gdXNlciBzdGF0ZS5cbiAqIFxuICogR2VuZXJpYyBzdGF0ZXMgdGhhdCBkZWZpbmUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHVzZXI6XG4gKiAtIG5vbmU6IHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW5cbiAqIC0gYW5vbjogdGhlIHVzZXIgaXMgbG9nZ2VkIGluIGFzIGFuIGFub255bW91cyBhY2NvdW50XG4gKiAtIGVycm9yOiB0aGVyZSB3YXMgYW4gZXJyb3IgbG9hZGluZyB0aGUgY29ycmVjdCB1c2VyIHN0YXRlXG4gKiAtIG5ldzogdGhlIHVzZXIgaGFzIGEgZnVsbCBhY2NvdW50IGJ1dCBoYXMgbm90IGNvbXBsZXRlZCBvbmJvYXJkaW5nL3NldHVwXG4gKiAtIHVzZXI6IHRoZSB1c2VyIGhhcyBhIGZ1bGwgYWNjb3VudCBhbmQgaGFzIGNvbXBsZXRlZCBzZXR1cFxuICovXG5leHBvcnQgdHlwZSBBdXRoVXNlclN0YXRlID0gJ25vbmUnIHwgJ2Fub24nIHwgJ25ldycgfCAndXNlcicgfCAnZXJyb3InO1xuXG4vKipcbiAqIEFyYml0cmFyeSBpZGVudGlmaWVyIHVzZWQgdG8gZGlmZmVyZW50aWF0ZSB1c2Vycy5cbiAqL1xuZXhwb3J0IHR5cGUgQXV0aFVzZXJJZGVudGlmaWVyID0gc3RyaW5nO1xuXG5leHBvcnQgY29uc3QgTk9fQVVUSF9VU0VSX0lERU5USUZJRVIgPSAnMCc7XG5cbi8qKlxuICogQXV0aFVzZXJJZGVudGlmaWVyIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBjYW5ub3QgYmUgdW5pcXVlbHkgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IHR5cGUgTm9BdXRoVXNlcklkZW50aWZpZXIgPSB0eXBlb2YgTk9fQVVUSF9VU0VSX0lERU5USUZJRVI7XG5cblxuLyoqXG4gKiBDcmVhdGVzIGFuIEF1dGhVc2VySWRlbnRpZmllciBmcm9tIHRoZSBpbnB1dC4gSWYgdGhlIGlucHV0IGlzIHVuZGVmaW5lZCwgcmV0dXJucyB0aGUgTm9BdXRoVXNlcklkZW50aWZpZXIuXG4gKiBcbiAqIEBwYXJhbSBpbnB1dElkIFxuICogQHJldHVybnMgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdXRoVXNlcklkZW50aWZpZXIoaW5wdXRJZDogTWF5YmU8QXV0aFVzZXJJZGVudGlmaWVyPik6IEF1dGhVc2VySWRlbnRpZmllciB7XG4gIHJldHVybiAoaW5wdXRJZCkgPyBpbnB1dElkIDogTk9fQVVUSF9VU0VSX0lERU5USUZJRVI7XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './router';
|
|
2
|
+
export * from './service';
|
|
3
|
+
export * from './state';
|
|
4
|
+
export * from './auth.user';
|
|
5
|
+
export * from './auth.module';
|
|
6
|
+
export * from './auth.role.any.directive';
|
|
7
|
+
export * from './auth.role.has.directive';
|
|
8
|
+
export * from './auth.state.module';
|
|
9
|
+
export * from './auth.state.service';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcm91dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRlJ1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnVzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgucm9sZS5hbnkuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5yb2xlLmhhcy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnN0YXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGguc3RhdGUuc2VydmljZSc7XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth routes configurations for an app.
|
|
3
|
+
*/
|
|
4
|
+
export class DbxAppAuthRoutes {
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvcm91dGVyL2F1dGgucm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixnQkFBZ0I7Q0FLckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWd1ZVJlZk9yU2VndWVSZWZSb3V0ZXJMaW5rIH0gZnJvbSAnLi4vLi4vcm91dGVyL3NlZ3VlJztcblxuLyoqXG4gKiBBdXRoIHJvdXRlcyBjb25maWd1cmF0aW9ucyBmb3IgYW4gYXBwLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QXBwQXV0aFJvdXRlcyB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGxvZ2luUmVmOiBTZWd1ZVJlZk9yU2VndWVSZWZSb3V0ZXJMaW5rO1xuICBhYnN0cmFjdCByZWFkb25seSBsb2dnZWRPdXRSZWY/OiBTZWd1ZVJlZk9yU2VndWVSZWZSb3V0ZXJMaW5rO1xuICBhYnN0cmFjdCByZWFkb25seSBvbmJvYXJkUmVmPzogU2VndWVSZWZPclNlZ3VlUmVmUm91dGVyTGluaztcbiAgYWJzdHJhY3QgcmVhZG9ubHkgYXBwUmVmOiBTZWd1ZVJlZk9yU2VndWVSZWZSb3V0ZXJMaW5rO1xufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { DbxAppAuthRoutes } from './auth.router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DbxAppAuthRouterModule {
|
|
5
|
+
static forRoot(dbxAppAuthRoutes) {
|
|
6
|
+
return {
|
|
7
|
+
ngModule: DbxAppAuthRouterModule,
|
|
8
|
+
providers: [{
|
|
9
|
+
provide: DbxAppAuthRoutes,
|
|
10
|
+
useValue: dbxAppAuthRoutes
|
|
11
|
+
}]
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
DbxAppAuthRouterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16
|
+
DbxAppAuthRouterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterModule });
|
|
17
|
+
DbxAppAuthRouterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterModule, imports: [[]] });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterModule, decorators: [{
|
|
19
|
+
type: NgModule,
|
|
20
|
+
args: [{
|
|
21
|
+
imports: [],
|
|
22
|
+
declarations: [],
|
|
23
|
+
exports: []
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb3V0ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hdXRoL3JvdXRlci9hdXRoLnJvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9qRCxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWtDO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxnQkFBZ0I7b0JBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQzs7bUhBVlUsc0JBQXNCO29IQUF0QixzQkFBc0I7b0hBQXRCLHNCQUFzQixZQUp4QixFQUFFOzJGQUlBLHNCQUFzQjtrQkFMbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4QXBwQXV0aFJvdXRlcyB9IGZyb20gJy4vYXV0aC5yb3V0ZXInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4QXBwQXV0aFJvdXRlck1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoZGJ4QXBwQXV0aFJvdXRlczogRGJ4QXBwQXV0aFJvdXRlcyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGJ4QXBwQXV0aFJvdXRlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGJ4QXBwQXV0aFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3tcbiAgICAgICAgcHJvdmlkZTogRGJ4QXBwQXV0aFJvdXRlcyxcbiAgICAgICAgdXNlVmFsdWU6IGRieEFwcEF1dGhSb3V0ZXNcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { goWithRouter } from "../../router";
|
|
3
|
+
import { DbxRouterService } from "../../router/router/service/router.service";
|
|
4
|
+
import { DbxAppAuthRoutes } from "./auth.router";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../router/router/service/router.service";
|
|
7
|
+
import * as i2 from "./auth.router";
|
|
8
|
+
/**
|
|
9
|
+
* Helper service for navigating to important auth-related routes.
|
|
10
|
+
*/
|
|
11
|
+
export class DbxAppAuthRouterService {
|
|
12
|
+
constructor(dbxRouterService, dbxAppAuthRoutes) {
|
|
13
|
+
this.dbxRouterService = dbxRouterService;
|
|
14
|
+
this.dbxAppAuthRoutes = dbxAppAuthRoutes;
|
|
15
|
+
}
|
|
16
|
+
get hasOnboardingState() {
|
|
17
|
+
return Boolean(this.dbxAppAuthRoutes.onboardRef);
|
|
18
|
+
}
|
|
19
|
+
// MARK: Navigate
|
|
20
|
+
/**
|
|
21
|
+
* Navigates to the login state.
|
|
22
|
+
*
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
goToLogin() {
|
|
26
|
+
return goWithRouter(this.dbxRouterService)(this.dbxAppAuthRoutes.loginRef);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Navigates to the logged out state, if it exists, otherwise navigates to the login state.
|
|
30
|
+
*
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
goToLoggedOut() {
|
|
34
|
+
return goWithRouter(this.dbxRouterService)(this.dbxAppAuthRoutes.loggedOutRef ?? this.dbxAppAuthRoutes.loginRef);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Navigates to the onboarding state if it is available, otherwise navigates to the app.
|
|
38
|
+
*
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
goToOnboarding() {
|
|
42
|
+
return goWithRouter(this.dbxRouterService)(this.dbxAppAuthRoutes.onboardRef ?? this.dbxAppAuthRoutes.appRef);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Navigates to the app state.
|
|
46
|
+
*
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
goToApp() {
|
|
50
|
+
return goWithRouter(this.dbxRouterService)(this.dbxAppAuthRoutes.appRef);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
DbxAppAuthRouterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterService, deps: [{ token: i1.DbxRouterService }, { token: i2.DbxAppAuthRoutes }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
54
|
+
DbxAppAuthRouterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterService, providedIn: 'root' });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterService, decorators: [{
|
|
56
|
+
type: Injectable,
|
|
57
|
+
args: [{
|
|
58
|
+
providedIn: 'root'
|
|
59
|
+
}]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.DbxRouterService }, { type: i2.DbxAppAuthRoutes }]; } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb3V0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1jb3JlL3NyYy9saWIvYXV0aC9yb3V0ZXIvYXV0aC5yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRWpEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFxQixnQkFBa0MsRUFBVyxnQkFBa0M7UUFBL0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFXLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBSSxDQUFDO0lBRXpHLElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCOzs7O09BSUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYztRQUNaLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTztRQUNMLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDOztvSEEzQ1UsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBnb1dpdGhSb3V0ZXIgfSBmcm9tIFwiLi4vLi4vcm91dGVyXCI7XG5pbXBvcnQgeyBEYnhSb3V0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3JvdXRlci9yb3V0ZXIvc2VydmljZS9yb3V0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgRGJ4QXBwQXV0aFJvdXRlcyB9IGZyb20gXCIuL2F1dGgucm91dGVyXCI7XG5cbi8qKlxuICogSGVscGVyIHNlcnZpY2UgZm9yIG5hdmlnYXRpbmcgdG8gaW1wb3J0YW50IGF1dGgtcmVsYXRlZCByb3V0ZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERieEFwcEF1dGhSb3V0ZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhSb3V0ZXJTZXJ2aWNlOiBEYnhSb3V0ZXJTZXJ2aWNlLCByZWFkb25seSBkYnhBcHBBdXRoUm91dGVzOiBEYnhBcHBBdXRoUm91dGVzKSB7IH1cblxuICBnZXQgaGFzT25ib2FyZGluZ1N0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuZGJ4QXBwQXV0aFJvdXRlcy5vbmJvYXJkUmVmKTtcbiAgfVxuXG4gIC8vIE1BUks6IE5hdmlnYXRlXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIGxvZ2luIHN0YXRlLlxuICAgKiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBnb1RvTG9naW4oKSB7XG4gICAgcmV0dXJuIGdvV2l0aFJvdXRlcih0aGlzLmRieFJvdXRlclNlcnZpY2UpKHRoaXMuZGJ4QXBwQXV0aFJvdXRlcy5sb2dpblJlZik7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBsb2dnZWQgb3V0IHN0YXRlLCBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSBuYXZpZ2F0ZXMgdG8gdGhlIGxvZ2luIHN0YXRlLlxuICAgKiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBnb1RvTG9nZ2VkT3V0KCkge1xuICAgIHJldHVybiBnb1dpdGhSb3V0ZXIodGhpcy5kYnhSb3V0ZXJTZXJ2aWNlKSh0aGlzLmRieEFwcEF1dGhSb3V0ZXMubG9nZ2VkT3V0UmVmID8/IHRoaXMuZGJ4QXBwQXV0aFJvdXRlcy5sb2dpblJlZik7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBvbmJvYXJkaW5nIHN0YXRlIGlmIGl0IGlzIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIG5hdmlnYXRlcyB0byB0aGUgYXBwLlxuICAgKiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBnb1RvT25ib2FyZGluZygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gZ29XaXRoUm91dGVyKHRoaXMuZGJ4Um91dGVyU2VydmljZSkodGhpcy5kYnhBcHBBdXRoUm91dGVzLm9uYm9hcmRSZWYgPz8gdGhpcy5kYnhBcHBBdXRoUm91dGVzLmFwcFJlZik7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBhcHAgc3RhdGUuXG4gICAqIFxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIGdvVG9BcHAoKSB7XG4gICAgcmV0dXJuIGdvV2l0aFJvdXRlcih0aGlzLmRieFJvdXRlclNlcnZpY2UpKHRoaXMuZGJ4QXBwQXV0aFJvdXRlcy5hcHBSZWYpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './provider/uirouter';
|
|
2
|
+
export * from './state';
|
|
3
|
+
export * from './auth.router';
|
|
4
|
+
export * from './auth.router.service';
|
|
5
|
+
export * from './auth.router.module';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvcm91dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlci91aXJvdXRlcic7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5yb3V0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnJvdXRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5yb3V0ZXIubW9kdWxlJztcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { makeAuthTransitionHook } from './hook';
|
|
2
|
+
/**
|
|
3
|
+
* This hook redirects to the configured default state when a user is not logged in for configured states.
|
|
4
|
+
*/
|
|
5
|
+
export function enableIsLoggedInHook(transitionService, config) {
|
|
6
|
+
// Matches if the destination state's data property has a truthy 'isSecure' property
|
|
7
|
+
const isSecureCriteria = {
|
|
8
|
+
entering: (state) => {
|
|
9
|
+
const data = state?.data;
|
|
10
|
+
const match = Boolean(data?.requiredLogIn);
|
|
11
|
+
return match;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const assertIsLoggedIn = makeAuthTransitionHook({
|
|
15
|
+
...config.options,
|
|
16
|
+
makeDecisionsObs(transition, authService) {
|
|
17
|
+
return authService.isLoggedIn$;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
// Register the "requires auth" hook with the TransitionsService
|
|
21
|
+
transitionService.onBefore(isSecureCriteria, assertIsLoggedIn, { priority: 100 });
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hdXRoL3JvdXRlci9wcm92aWRlci91aXJvdXRlci9hdXRoLmhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFxRCxzQkFBc0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQWtCbkc7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsaUJBQW9DLEVBQUUsTUFBNEI7SUFFckcsb0ZBQW9GO0lBQ3BGLE1BQU0sZ0JBQWdCLEdBQXNCO1FBQzFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxJQUEyQyxDQUFDO1lBQ2hFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDM0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQztJQUVGLE1BQU0sZ0JBQWdCLEdBQXFCLHNCQUFzQixDQUFDO1FBQ2hFLEdBQUcsTUFBTSxDQUFDLE9BQU87UUFDakIsZ0JBQWdCLENBQUMsVUFBc0IsRUFBRSxXQUEyQjtZQUNsRSxPQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDakMsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVILGdFQUFnRTtJQUNoRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IFRyYW5zaXRpb25TZXJ2aWNlLCBUcmFuc2l0aW9uSG9va0ZuLCBUcmFuc2l0aW9uLCBIb29rTWF0Y2hDcml0ZXJpYSB9IGZyb20gJ0B1aXJvdXRlci9jb3JlJztcbmltcG9ydCB7IERieEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFRyYW5zaXRpb25EZWNpc2lvbiwgQXV0aFRyYW5zaXRpb25Ib29rT3B0aW9ucywgbWFrZUF1dGhUcmFuc2l0aW9uSG9vayB9IGZyb20gJy4vaG9vayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXNMb2dnZWRJbkhvb2tDb25maWcge1xuICBvcHRpb25zOiBBdXRoVHJhbnNpdGlvbkhvb2tPcHRpb25zO1xufVxuXG4vKipcbiAqIFVJUm91dGVyIFN0YXRlIGRhdGEgd2l0aCBjb25maWd1cmF0aW9uIGZvciB0aGUgaGFzQXV0aFJvbGVIb29rLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzTG9nZ2VkSW5TdGF0ZURhdGEge1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdXNlciBuZWVkcyB0byBiZSBsb2dnZWQgaW4gZm9yIHRoaXMgc3RhdGUuXG4gICAqL1xuICByZXF1aXJlZExvZ0luOiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogVGhpcyBob29rIHJlZGlyZWN0cyB0byB0aGUgY29uZmlndXJlZCBkZWZhdWx0IHN0YXRlIHdoZW4gYSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4gZm9yIGNvbmZpZ3VyZWQgc3RhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlSXNMb2dnZWRJbkhvb2sodHJhbnNpdGlvblNlcnZpY2U6IFRyYW5zaXRpb25TZXJ2aWNlLCBjb25maWc6IElzTG9nZ2VkSW5Ib29rQ29uZmlnKTogdm9pZCB7XG5cbiAgLy8gTWF0Y2hlcyBpZiB0aGUgZGVzdGluYXRpb24gc3RhdGUncyBkYXRhIHByb3BlcnR5IGhhcyBhIHRydXRoeSAnaXNTZWN1cmUnIHByb3BlcnR5XG4gIGNvbnN0IGlzU2VjdXJlQ3JpdGVyaWE6IEhvb2tNYXRjaENyaXRlcmlhID0ge1xuICAgIGVudGVyaW5nOiAoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBzdGF0ZT8uZGF0YSBhcyBNYXliZTxQYXJ0aWFsPElzTG9nZ2VkSW5TdGF0ZURhdGE+PjtcbiAgICAgIGNvbnN0IG1hdGNoID0gQm9vbGVhbihkYXRhPy5yZXF1aXJlZExvZ0luKTtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYXNzZXJ0SXNMb2dnZWRJbjogVHJhbnNpdGlvbkhvb2tGbiA9IG1ha2VBdXRoVHJhbnNpdGlvbkhvb2soe1xuICAgIC4uLmNvbmZpZy5vcHRpb25zLFxuICAgIG1ha2VEZWNpc2lvbnNPYnModHJhbnNpdGlvbjogVHJhbnNpdGlvbiwgYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoVHJhbnNpdGlvbkRlY2lzaW9uPiB7XG4gICAgICByZXR1cm4gYXV0aFNlcnZpY2UuaXNMb2dnZWRJbiQ7XG4gICAgfVxuICB9KTtcblxuICAvLyBSZWdpc3RlciB0aGUgXCJyZXF1aXJlcyBhdXRoXCIgaG9vayB3aXRoIHRoZSBUcmFuc2l0aW9uc1NlcnZpY2VcbiAgdHJhbnNpdGlvblNlcnZpY2Uub25CZWZvcmUoaXNTZWN1cmVDcml0ZXJpYSwgYXNzZXJ0SXNMb2dnZWRJbiwgeyBwcmlvcml0eTogMTAwIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { catchError, map, first, firstValueFrom, of, switchMap } from 'rxjs';
|
|
2
|
+
import { DbxAuthService } from '../../../service/auth.service';
|
|
3
|
+
import { getValueFromGetter, isGetter } from '@dereekb/util';
|
|
4
|
+
/**
|
|
5
|
+
* This generates a TransitionHookFn that can be used with redirecting routes.
|
|
6
|
+
*/
|
|
7
|
+
export function makeAuthTransitionHook(config) {
|
|
8
|
+
const { defaultRedirectTarget, errorRedirectTarget = defaultRedirectTarget } = config;
|
|
9
|
+
// https://ui-router.github.io/ng2/docs/latest/modules/transition.html#hookresult
|
|
10
|
+
const assertIsAuthenticated = (transition) => {
|
|
11
|
+
const injector = transition.injector();
|
|
12
|
+
const authService = injector.get(DbxAuthService);
|
|
13
|
+
const $state = transition.router.stateService;
|
|
14
|
+
const decisionObs = config.makeDecisionsObs(transition, authService, injector);
|
|
15
|
+
function redirectOut() {
|
|
16
|
+
const stateData = transition.targetState().state().data;
|
|
17
|
+
const redirectTo = stateData?.redirectTo;
|
|
18
|
+
let redirectToObs;
|
|
19
|
+
if (redirectTo) {
|
|
20
|
+
let resultObs;
|
|
21
|
+
if (isGetter(redirectTo)) {
|
|
22
|
+
resultObs = getValueFromGetter(redirectTo, { authService, injector, transition });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
resultObs = of(redirectTo);
|
|
26
|
+
}
|
|
27
|
+
redirectToObs = resultObs.pipe(map((stateRef) => {
|
|
28
|
+
let redirectTarget;
|
|
29
|
+
let redirectParams;
|
|
30
|
+
if (stateRef) {
|
|
31
|
+
redirectTarget = stateRef.ref;
|
|
32
|
+
redirectParams = stateRef.refParams;
|
|
33
|
+
}
|
|
34
|
+
if (!redirectTarget) {
|
|
35
|
+
redirectTarget = defaultRedirectTarget;
|
|
36
|
+
}
|
|
37
|
+
return $state.target(redirectTarget, redirectParams);
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
redirectToObs = of($state.target(defaultRedirectTarget));
|
|
42
|
+
}
|
|
43
|
+
return redirectToObs;
|
|
44
|
+
}
|
|
45
|
+
const resultObs = decisionObs.pipe(first(), switchMap((decision) => {
|
|
46
|
+
if (typeof decision === 'boolean') {
|
|
47
|
+
if (decision) {
|
|
48
|
+
return of(true);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return redirectOut();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return of($state.target(decision.ref, decision.refParams, decision.refOptions));
|
|
56
|
+
}
|
|
57
|
+
}), catchError((x) => {
|
|
58
|
+
console.warn('Encountered error in auth transition hook.', x);
|
|
59
|
+
return of($state.target(errorRedirectTarget, { location: true })); // Redirect to home
|
|
60
|
+
}));
|
|
61
|
+
return firstValueFrom(resultObs);
|
|
62
|
+
};
|
|
63
|
+
return assertIsAuthenticated;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1jb3JlL3NyYy9saWIvYXV0aC9yb3V0ZXIvcHJvdmlkZXIvdWlyb3V0ZXIvaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBOEMsa0JBQWtCLEVBQUUsUUFBUSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBb0RoSDs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUFnQztJQUNyRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEdBQUcscUJBQXFCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFdEYsaUZBQWlGO0lBQ2pGLE1BQU0scUJBQXFCLEdBQXFCLENBQUMsVUFBc0IsRUFBYyxFQUFFO1FBQ3JGLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBbUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBaUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFL0UsU0FBUyxXQUFXO1lBQ2xCLE1BQU0sU0FBUyxHQUE0QixVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2pGLE1BQU0sVUFBVSxHQUFHLFNBQVMsRUFBRSxVQUFVLENBQUM7WUFFekMsSUFBSSxhQUFxQyxDQUFDO1lBRTFDLElBQUksVUFBVSxFQUFFO2dCQUNkLElBQUksU0FBc0MsQ0FBQztnQkFFM0MsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQ3hCLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBdUMsQ0FBQyxDQUFDO2lCQUN4SDtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsRUFBRSxDQUFDLFVBQXNCLENBQUMsQ0FBQztpQkFDeEM7Z0JBRUQsYUFBYSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLFFBQXlCLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxjQUFjLENBQUM7b0JBQ25CLElBQUksY0FBYyxDQUFDO29CQUVuQixJQUFJLFFBQVEsRUFBRTt3QkFDWixjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQzt3QkFDOUIsY0FBYyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7cUJBQ3JDO29CQUVELElBQUksQ0FBQyxjQUFjLEVBQUU7d0JBQ25CLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQztxQkFDeEM7b0JBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDdkQsQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLGFBQWEsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7YUFDMUQ7WUFFRCxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FDaEMsS0FBSyxFQUFFLEVBQ1AsU0FBUyxDQUFDLENBQUMsUUFBZ0MsRUFBMEIsRUFBRTtZQUNyRSxJQUFJLE9BQU8sUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDakMsSUFBSSxRQUFRLEVBQUU7b0JBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2pCO3FCQUFNO29CQUNMLE9BQU8sV0FBVyxFQUFFLENBQUM7aUJBQ3RCO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxTQUFzQixFQUFFLFFBQVEsQ0FBQyxVQUErQixDQUFDLENBQUMsQ0FBQzthQUNuSDtRQUNILENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUN4RixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFlLENBQUM7SUFDakQsQ0FBQyxDQUFDO0lBRUYsT0FBTyxxQkFBcUIsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNpdGlvbkhvb2tGbiwgVHJhbnNpdGlvbiwgSG9va1Jlc3VsdCwgU3RhdGVTZXJ2aWNlLCBVSUluamVjdG9yLCBUcmFuc2l0aW9uT3B0aW9ucywgUmF3UGFyYW1zIH0gZnJvbSAnQHVpcm91dGVyL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBmaXJzdCwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlZ3VlUmVmIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi9yb3V0ZXIvc2VndWUnO1xuaW1wb3J0IHsgRGJ4QXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBGYWN0b3J5V2l0aElucHV0LCBGYWN0b3J5V2l0aFJlcXVpcmVkSW5wdXQsIGdldFZhbHVlRnJvbUdldHRlciwgaXNHZXR0ZXIsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIGF1dGhUcmFuc2l0aW9uSG9va0ZuKCkgY29uZmlndXJhdGlvbi4gVGhlIHZhbHVlcyBhcmUgaGFuZGxlZCBhczpcbiAqIC0gdHJ1ZTogY29udGludWUgdG8gdGhlIHN0YXRlLlxuICogLSBmYWxzZTogcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2UuXG4gKiAtIFN0YXRlT3JOYW1lOiByZWRpcmVjdCB0byB0aGUgdGFyZ2V0IHBhZ2UgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IHR5cGUgQXV0aFRyYW5zaXRpb25EZWNpc2lvbiA9IHRydWUgfCBmYWxzZSB8IFNlZ3VlUmVmO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhUcmFuc2l0aW9uRGVjaXNpb25HZXR0ZXJJbnB1dCB7XG4gIHJlYWRvbmx5IHRyYW5zaXRpb246IFRyYW5zaXRpb247XG4gIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcjtcbiAgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlO1xufVxuXG5leHBvcnQgdHlwZSBBdXRoVHJhbnNpdGlvblJlZGlyZWN0VGFyZ2V0R2V0dGVyID0gRmFjdG9yeVdpdGhSZXF1aXJlZElucHV0PE9ic2VydmFibGU8TWF5YmU8U2VndWVSZWY+PiwgQXV0aFRyYW5zaXRpb25EZWNpc2lvbkdldHRlcklucHV0PjtcbmV4cG9ydCB0eXBlIEF1dGhUcmFuc2l0aW9uUmVkaXJlY3RUYXJnZXRPckdldHRlciA9IE1heWJlPFNlZ3VlUmVmPiB8IEF1dGhUcmFuc2l0aW9uUmVkaXJlY3RUYXJnZXRHZXR0ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFRyYW5zaXRpb25Ib29rT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSB0byByZWRpcmVjdCB0aGUgdXNlciB0byB3aGVuIHRoZWlyIGF1dGggZmFpbHMuXG4gICAqL1xuICBkZWZhdWx0UmVkaXJlY3RUYXJnZXQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXRlIHRvIHJlZGlyZWN0IHRoZSB1c2VyIHRvLiBEZWZhdWx0cyB0byBkZWZhdWx0UmVkaXJlY3RUYXJnZXQuXG4gICAqL1xuICBlcnJvclJlZGlyZWN0VGFyZ2V0Pzogc3RyaW5nO1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFRyYW5zaXRpb25Ib29rQ29uZmlnIGV4dGVuZHMgQXV0aFRyYW5zaXRpb25Ib29rT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGRlY2lzaW9uIG9ic2VydmFibGUgZm9yIHRoZSB0cmFuc2l0aW9uIHRoYXQgZGVjaWRlcyB3aGV0aGVyIG9yIG5vdCB0byByZWRpcmVjdCBvciBjb250aW51ZS5cbiAgICovXG4gIG1ha2VEZWNpc2lvbnNPYnM6ICh0cmFuc2l0aW9uOiBUcmFuc2l0aW9uLCBhdXRoU2VydmljZTogRGJ4QXV0aFNlcnZpY2UsIGluamVjdG9yOiBVSUluamVjdG9yKSA9PiBPYnNlcnZhYmxlPEF1dGhUcmFuc2l0aW9uRGVjaXNpb24+O1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFRyYW5zaXRpb25TdGF0ZURhdGEge1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBnZXR0ZXIvZGVjaXNpb24gbWFrZXIgd2hlbiBhIHJvbGUgbmVlZHMgdG8gYmUgXG4gICAqL1xuICByZWRpcmVjdFRvPzogQXV0aFRyYW5zaXRpb25SZWRpcmVjdFRhcmdldE9yR2V0dGVyO1xuXG59XG5cbi8qKlxuICogVGhpcyBnZW5lcmF0ZXMgYSBUcmFuc2l0aW9uSG9va0ZuIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCByZWRpcmVjdGluZyByb3V0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQXV0aFRyYW5zaXRpb25Ib29rKGNvbmZpZzogQXV0aFRyYW5zaXRpb25Ib29rQ29uZmlnKTogVHJhbnNpdGlvbkhvb2tGbiB7XG4gIGNvbnN0IHsgZGVmYXVsdFJlZGlyZWN0VGFyZ2V0LCBlcnJvclJlZGlyZWN0VGFyZ2V0ID0gZGVmYXVsdFJlZGlyZWN0VGFyZ2V0IH0gPSBjb25maWc7XG5cbiAgLy8gaHR0cHM6Ly91aS1yb3V0ZXIuZ2l0aHViLmlvL25nMi9kb2NzL2xhdGVzdC9tb2R1bGVzL3RyYW5zaXRpb24uaHRtbCNob29rcmVzdWx0XG4gIGNvbnN0IGFzc2VydElzQXV0aGVudGljYXRlZDogVHJhbnNpdGlvbkhvb2tGbiA9ICh0cmFuc2l0aW9uOiBUcmFuc2l0aW9uKTogSG9va1Jlc3VsdCA9PiB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0cmFuc2l0aW9uLmluamVjdG9yKCk7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KERieEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCAkc3RhdGU6IFN0YXRlU2VydmljZSA9IHRyYW5zaXRpb24ucm91dGVyLnN0YXRlU2VydmljZTtcbiAgICBjb25zdCBkZWNpc2lvbk9icyA9IGNvbmZpZy5tYWtlRGVjaXNpb25zT2JzKHRyYW5zaXRpb24sIGF1dGhTZXJ2aWNlLCBpbmplY3Rvcik7XG5cbiAgICBmdW5jdGlvbiByZWRpcmVjdE91dCgpOiBPYnNlcnZhYmxlPEhvb2tSZXN1bHQ+IHtcbiAgICAgIGNvbnN0IHN0YXRlRGF0YTogQXV0aFRyYW5zaXRpb25TdGF0ZURhdGEgPSB0cmFuc2l0aW9uLnRhcmdldFN0YXRlKCkuc3RhdGUoKS5kYXRhO1xuICAgICAgY29uc3QgcmVkaXJlY3RUbyA9IHN0YXRlRGF0YT8ucmVkaXJlY3RUbztcblxuICAgICAgbGV0IHJlZGlyZWN0VG9PYnM6IE9ic2VydmFibGU8SG9va1Jlc3VsdD47XG5cbiAgICAgIGlmIChyZWRpcmVjdFRvKSB7XG4gICAgICAgIGxldCByZXN1bHRPYnM6IE9ic2VydmFibGU8TWF5YmU8U2VndWVSZWY+PjtcblxuICAgICAgICBpZiAoaXNHZXR0ZXIocmVkaXJlY3RUbykpIHtcbiAgICAgICAgICByZXN1bHRPYnMgPSBnZXRWYWx1ZUZyb21HZXR0ZXIocmVkaXJlY3RUbywgeyBhdXRoU2VydmljZSwgaW5qZWN0b3IsIHRyYW5zaXRpb24gfSBhcyBBdXRoVHJhbnNpdGlvbkRlY2lzaW9uR2V0dGVySW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdE9icyA9IG9mKHJlZGlyZWN0VG8gYXMgU2VndWVSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVkaXJlY3RUb09icyA9IHJlc3VsdE9icy5waXBlKFxuICAgICAgICAgIG1hcCgoc3RhdGVSZWY6IE1heWJlPFNlZ3VlUmVmPikgPT4ge1xuICAgICAgICAgICAgbGV0IHJlZGlyZWN0VGFyZ2V0O1xuICAgICAgICAgICAgbGV0IHJlZGlyZWN0UGFyYW1zO1xuXG4gICAgICAgICAgICBpZiAoc3RhdGVSZWYpIHtcbiAgICAgICAgICAgICAgcmVkaXJlY3RUYXJnZXQgPSBzdGF0ZVJlZi5yZWY7XG4gICAgICAgICAgICAgIHJlZGlyZWN0UGFyYW1zID0gc3RhdGVSZWYucmVmUGFyYW1zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXJlZGlyZWN0VGFyZ2V0KSB7XG4gICAgICAgICAgICAgIHJlZGlyZWN0VGFyZ2V0ID0gZGVmYXVsdFJlZGlyZWN0VGFyZ2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJHN0YXRlLnRhcmdldChyZWRpcmVjdFRhcmdldCwgcmVkaXJlY3RQYXJhbXMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWRpcmVjdFRvT2JzID0gb2YoJHN0YXRlLnRhcmdldChkZWZhdWx0UmVkaXJlY3RUYXJnZXQpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlZGlyZWN0VG9PYnM7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0T2JzID0gZGVjaXNpb25PYnMucGlwZShcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKGRlY2lzaW9uOiBBdXRoVHJhbnNpdGlvbkRlY2lzaW9uKTogT2JzZXJ2YWJsZTxIb29rUmVzdWx0PiA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVjaXNpb24gPT09ICdib29sZWFuJykge1xuICAgICAgICAgIGlmIChkZWNpc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkaXJlY3RPdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCRzdGF0ZS50YXJnZXQoZGVjaXNpb24ucmVmLCBkZWNpc2lvbi5yZWZQYXJhbXMgYXMgUmF3UGFyYW1zLCBkZWNpc2lvbi5yZWZPcHRpb25zIGFzIFRyYW5zaXRpb25PcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoeCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0VuY291bnRlcmVkIGVycm9yIGluIGF1dGggdHJhbnNpdGlvbiBob29rLicsIHgpO1xuICAgICAgICByZXR1cm4gb2YoJHN0YXRlLnRhcmdldChlcnJvclJlZGlyZWN0VGFyZ2V0LCB7IGxvY2F0aW9uOiB0cnVlIH0pKTsgLy8gUmVkaXJlY3QgdG8gaG9tZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHJlc3VsdE9icykgYXMgSG9va1Jlc3VsdDtcbiAgfTtcblxuICByZXR1cm4gYXNzZXJ0SXNBdXRoZW50aWNhdGVkO1xufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './hook';
|
|
2
|
+
export * from './redirect';
|
|
3
|
+
export * from './auth.hook';
|
|
4
|
+
export * from './role.hook';
|
|
5
|
+
export * from './state.hook';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvcm91dGVyL3Byb3ZpZGVyL3Vpcm91dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ob29rJztcbmV4cG9ydCAqIGZyb20gJy4vcmVkaXJlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLmhvb2snO1xuZXhwb3J0ICogZnJvbSAnLi9yb2xlLmhvb2snO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0ZS5ob29rJztcbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { first, of, switchMap } from 'rxjs';
|
|
2
|
+
import { getValueFromGetter, isGetter } from "@dereekb/util";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a AuthTransitionRedirectTargetGetter that can redirect values based on the current authUserState.
|
|
5
|
+
*
|
|
6
|
+
* @param stateMap
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export function redirectBasedOnAuthUserState(stateMap) {
|
|
10
|
+
return (input) => {
|
|
11
|
+
return input.authService.authUserState$.pipe(first(), switchMap((authUserState) => {
|
|
12
|
+
const getter = stateMap[authUserState];
|
|
13
|
+
let result;
|
|
14
|
+
if (getter) {
|
|
15
|
+
if (isGetter(getter)) {
|
|
16
|
+
result = getValueFromGetter(getter, input);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
result = of(getter);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (!result) {
|
|
23
|
+
result = of(undefined);
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}));
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL2F1dGgvcm91dGVyL3Byb3ZpZGVyL3Vpcm91dGVyL3JlZGlyZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUsvRTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxRQUF5RDtJQUNwRyxPQUFPLENBQUMsS0FBd0MsRUFBRSxFQUFFO1FBQ2xELE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUMxQyxLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsQ0FBQyxhQUE0QixFQUFFLEVBQUU7WUFDekMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksTUFBbUMsQ0FBQztZQUV4QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDcEIsTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDNUM7cUJBQU07b0JBQ0wsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUF5QixDQUFDLENBQUM7aUJBQ3hDO2FBQ0Y7WUFFRCxJQUFJLENBQUMsTUFBTyxFQUFFO2dCQUNaLE1BQU0sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEI7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0LCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRWYWx1ZUZyb21HZXR0ZXIsIGlzR2V0dGVyLCBNYXliZSwgT2JqZWN0TWFwIH0gZnJvbSBcIkBkZXJlZWtiL3V0aWxcIjtcbmltcG9ydCB7IEF1dGhUcmFuc2l0aW9uRGVjaXNpb25HZXR0ZXJJbnB1dCwgQXV0aFRyYW5zaXRpb25SZWRpcmVjdFRhcmdldEdldHRlciwgQXV0aFRyYW5zaXRpb25SZWRpcmVjdFRhcmdldE9yR2V0dGVyIH0gZnJvbSBcIi4vaG9va1wiO1xuaW1wb3J0IHsgU2VndWVSZWYgfSBmcm9tICcuLi8uLi8uLi8uLi9yb3V0ZXIvc2VndWUnO1xuaW1wb3J0IHsgQXV0aFVzZXJTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2F1dGgudXNlcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIEF1dGhUcmFuc2l0aW9uUmVkaXJlY3RUYXJnZXRHZXR0ZXIgdGhhdCBjYW4gcmVkaXJlY3QgdmFsdWVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGF1dGhVc2VyU3RhdGUuXG4gKiBcbiAqIEBwYXJhbSBzdGF0ZU1hcCBcbiAqIEByZXR1cm5zIFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkaXJlY3RCYXNlZE9uQXV0aFVzZXJTdGF0ZShzdGF0ZU1hcDogT2JqZWN0TWFwPEF1dGhUcmFuc2l0aW9uUmVkaXJlY3RUYXJnZXRPckdldHRlcj4pOiBBdXRoVHJhbnNpdGlvblJlZGlyZWN0VGFyZ2V0R2V0dGVyIHtcbiAgcmV0dXJuIChpbnB1dDogQXV0aFRyYW5zaXRpb25EZWNpc2lvbkdldHRlcklucHV0KSA9PiB7XG4gICAgcmV0dXJuIGlucHV0LmF1dGhTZXJ2aWNlLmF1dGhVc2VyU3RhdGUkLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKChhdXRoVXNlclN0YXRlOiBBdXRoVXNlclN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IGdldHRlciA9IHN0YXRlTWFwW2F1dGhVc2VyU3RhdGVdO1xuICAgICAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPE1heWJlPFNlZ3VlUmVmPj47XG5cbiAgICAgICAgaWYgKGdldHRlcikge1xuICAgICAgICAgIGlmIChpc0dldHRlcihnZXR0ZXIpKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBnZXRWYWx1ZUZyb21HZXR0ZXIoZ2V0dGVyLCBpbnB1dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IG9mKGdldHRlciBhcyBNYXliZTxTZWd1ZVJlZj4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0ISkge1xuICAgICAgICAgIHJlc3VsdCA9IG9mKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { map } from 'rxjs';
|
|
2
|
+
import { setIncludesFunction } from '@dereekb/util';
|
|
3
|
+
import { makeAuthTransitionHook } from './hook';
|
|
4
|
+
/**
|
|
5
|
+
* This hook redirects to the configured default state when a user:
|
|
6
|
+
*
|
|
7
|
+
* - does not have an allowed state
|
|
8
|
+
* - has a disallowed state
|
|
9
|
+
*/
|
|
10
|
+
export function enableHasAuthRoleHook(transitionService, config) {
|
|
11
|
+
// Matches if the destination state's data property has a truthy 'isSecure' property
|
|
12
|
+
const isSecureCriteria = {
|
|
13
|
+
entering: (state) => {
|
|
14
|
+
const data = state?.data;
|
|
15
|
+
const match = Boolean(data?.authRoles);
|
|
16
|
+
return match;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const assertHasAuthRole = makeAuthTransitionHook({
|
|
20
|
+
...config.options,
|
|
21
|
+
makeDecisionsObs(transition, authService) {
|
|
22
|
+
const targetState = transition.targetState();
|
|
23
|
+
const data = targetState.state().data;
|
|
24
|
+
const requiredRoles = new Set(data.authRoles);
|
|
25
|
+
const setIncludes = setIncludesFunction(requiredRoles, data.authRolesMode);
|
|
26
|
+
return authService.authUserState$.pipe(map(x => setIncludes(x)));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// Register the "requires auth" hook with the TransitionsService
|
|
30
|
+
transitionService.onBefore(isSecureCriteria, assertHasAuthRole, { priority: 100 });
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5ob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hdXRoL3JvdXRlci9wcm92aWRlci91aXJvdXRlci9yb2xlLmhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQWtELG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BHLE9BQU8sRUFBOEUsc0JBQXNCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUF1QjVIOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLGlCQUFvQyxFQUFFLE1BQTZCO0lBRXZHLG9GQUFvRjtJQUNwRixNQUFNLGdCQUFnQixHQUFzQjtRQUMxQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNsQixNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsSUFBNEMsQ0FBQztZQUNqRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztLQUNGLENBQUM7SUFFRixNQUFNLGlCQUFpQixHQUFxQixzQkFBc0IsQ0FBQztRQUNqRSxHQUFHLE1BQU0sQ0FBQyxPQUFPO1FBQ2pCLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsV0FBMkI7WUFDbEUsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUF5QixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQzVELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4RCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTNFLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN6QixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVILGdFQUFnRTtJQUNoRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoUm9sZSwgU2V0SW5jbHVkZXNNb2RlLCBBcnJheU9yVmFsdWUsIE1heWJlLCBzZXRJbmNsdWRlc0Z1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uU2VydmljZSwgVHJhbnNpdGlvbkhvb2tGbiwgVHJhbnNpdGlvbiwgSG9va01hdGNoQ3JpdGVyaWEgfSBmcm9tICdAdWlyb3V0ZXIvY29yZSc7XG5pbXBvcnQgeyBEYnhBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhUcmFuc2l0aW9uRGVjaXNpb24sIEF1dGhUcmFuc2l0aW9uSG9va09wdGlvbnMsIEF1dGhUcmFuc2l0aW9uU3RhdGVEYXRhLCBtYWtlQXV0aFRyYW5zaXRpb25Ib29rIH0gZnJvbSAnLi9ob29rJztcblxuZXhwb3J0IGludGVyZmFjZSBIYXNBdXRoUm9sZUhvb2tDb25maWcge1xuICBvcHRpb25zOiBBdXRoVHJhbnNpdGlvbkhvb2tPcHRpb25zO1xufVxuXG4vKipcbiAqIFVJUm91dGVyIFN0YXRlIGRhdGEgd2l0aCBjb25maWd1cmF0aW9uIGZvciB0aGUgaGFzQXV0aFJvbGVIb29rLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhhc0F1dGhSb2xlU3RhdGVEYXRhIGV4dGVuZHMgQXV0aFRyYW5zaXRpb25TdGF0ZURhdGEge1xuXG4gIC8qKlxuICAgKiBBdXRoIHJvbGVzIG1hcmtlZCBmb3IgdGhpcyBzdGF0ZVxuICAgKi9cbiAgYXV0aFJvbGVzOiBBcnJheU9yVmFsdWU8QXV0aFJvbGU+O1xuXG4gIC8qKlxuICAgKiBIb3cgdG8gdXNlIHRoZSBhYm92ZSBhdXRoIHJvbGVzLiBUaGlzIGRlZmF1bHRzIHRvICdhbGwnIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBhdXRoUm9sZXNNb2RlPzogU2V0SW5jbHVkZXNNb2RlO1xuXG59XG5cbi8qKlxuICogVGhpcyBob29rIHJlZGlyZWN0cyB0byB0aGUgY29uZmlndXJlZCBkZWZhdWx0IHN0YXRlIHdoZW4gYSB1c2VyOlxuICogXG4gKiAtIGRvZXMgbm90IGhhdmUgYW4gYWxsb3dlZCBzdGF0ZVxuICogLSBoYXMgYSBkaXNhbGxvd2VkIHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVIYXNBdXRoUm9sZUhvb2sodHJhbnNpdGlvblNlcnZpY2U6IFRyYW5zaXRpb25TZXJ2aWNlLCBjb25maWc6IEhhc0F1dGhSb2xlSG9va0NvbmZpZyk6IHZvaWQge1xuXG4gIC8vIE1hdGNoZXMgaWYgdGhlIGRlc3RpbmF0aW9uIHN0YXRlJ3MgZGF0YSBwcm9wZXJ0eSBoYXMgYSB0cnV0aHkgJ2lzU2VjdXJlJyBwcm9wZXJ0eVxuICBjb25zdCBpc1NlY3VyZUNyaXRlcmlhOiBIb29rTWF0Y2hDcml0ZXJpYSA9IHtcbiAgICBlbnRlcmluZzogKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gc3RhdGU/LmRhdGEgYXMgTWF5YmU8UGFydGlhbDxIYXNBdXRoUm9sZVN0YXRlRGF0YT4+O1xuICAgICAgY29uc3QgbWF0Y2ggPSBCb29sZWFuKGRhdGE/LmF1dGhSb2xlcyk7XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFzc2VydEhhc0F1dGhSb2xlOiBUcmFuc2l0aW9uSG9va0ZuID0gbWFrZUF1dGhUcmFuc2l0aW9uSG9vayh7XG4gICAgLi4uY29uZmlnLm9wdGlvbnMsXG4gICAgbWFrZURlY2lzaW9uc09icyh0cmFuc2l0aW9uOiBUcmFuc2l0aW9uLCBhdXRoU2VydmljZTogRGJ4QXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhUcmFuc2l0aW9uRGVjaXNpb24+IHtcbiAgICAgIGNvbnN0IHRhcmdldFN0YXRlID0gdHJhbnNpdGlvbi50YXJnZXRTdGF0ZSgpO1xuICAgICAgY29uc3QgZGF0YTogSGFzQXV0aFJvbGVTdGF0ZURhdGEgPSB0YXJnZXRTdGF0ZS5zdGF0ZSgpLmRhdGE7XG4gICAgICBjb25zdCByZXF1aXJlZFJvbGVzID0gbmV3IFNldDxBdXRoUm9sZT4oZGF0YS5hdXRoUm9sZXMpO1xuICAgICAgY29uc3Qgc2V0SW5jbHVkZXMgPSBzZXRJbmNsdWRlc0Z1bmN0aW9uKHJlcXVpcmVkUm9sZXMsIGRhdGEuYXV0aFJvbGVzTW9kZSk7XG5cbiAgICAgIHJldHVybiBhdXRoU2VydmljZS5hdXRoVXNlclN0YXRlJC5waXBlKFxuICAgICAgICBtYXAoeCA9PiBzZXRJbmNsdWRlcyh4KSlcbiAgICAgICk7XG4gICAgfVxuICB9KTtcblxuICAvLyBSZWdpc3RlciB0aGUgXCJyZXF1aXJlcyBhdXRoXCIgaG9vayB3aXRoIHRoZSBUcmFuc2l0aW9uc1NlcnZpY2VcbiAgdHJhbnNpdGlvblNlcnZpY2Uub25CZWZvcmUoaXNTZWN1cmVDcml0ZXJpYSwgYXNzZXJ0SGFzQXV0aFJvbGUsIHsgcHJpb3JpdHk6IDEwMCB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { map } from 'rxjs';
|
|
2
|
+
import { isAllowed, maybeSet } from '@dereekb/util';
|
|
3
|
+
import { makeAuthTransitionHook } from './hook';
|
|
4
|
+
/**
|
|
5
|
+
* This hook redirects to the configured default state when a user:
|
|
6
|
+
*
|
|
7
|
+
* - does not have an allowed state
|
|
8
|
+
* - has a disallowed state
|
|
9
|
+
*/
|
|
10
|
+
export function enableHasAuthStateHook(transitionService, config) {
|
|
11
|
+
// Matches if the destination state's data property has a truthy 'isSecure' property
|
|
12
|
+
const isSecureCriteria = {
|
|
13
|
+
entering: (state) => {
|
|
14
|
+
const data = state?.data;
|
|
15
|
+
const match = Boolean(data?.authStates);
|
|
16
|
+
return match;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const assertHasAuthState = makeAuthTransitionHook({
|
|
20
|
+
...config.options,
|
|
21
|
+
makeDecisionsObs(transition, authService) {
|
|
22
|
+
const targetState = transition.targetState();
|
|
23
|
+
const data = targetState.state().data;
|
|
24
|
+
const config = toHasAuthStateObjectConfig(data.authStates);
|
|
25
|
+
const parsed = toParsedHasAuthStateConfig(config);
|
|
26
|
+
return authService.authUserState$.pipe(map(x => isAllowed(x, parsed)));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// Register the "requires auth" hook with the TransitionsService
|
|
30
|
+
transitionService.onBefore(isSecureCriteria, assertHasAuthState, { priority: 100 });
|
|
31
|
+
}
|
|
32
|
+
// MARK: Utility
|
|
33
|
+
function toHasAuthStateObjectConfig(input) {
|
|
34
|
+
const isString = typeof input === 'string';
|
|
35
|
+
if ((Array.isArray(input) || isString)) {
|
|
36
|
+
if (isString) {
|
|
37
|
+
input = [input];
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
allowedStates: input
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return input;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function toParsedHasAuthStateConfig(input) {
|
|
48
|
+
return {
|
|
49
|
+
allowed: maybeSet(input.allowedStates),
|
|
50
|
+
disallowed: maybeSet(input.disallowedStates)
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1jb3JlL3NyYy9saWIvYXV0aC9yb3V0ZXIvcHJvdmlkZXIvdWlyb3V0ZXIvc3RhdGUuaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBYyxTQUFTLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUlyRixPQUFPLEVBQXFELHNCQUFzQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBK0JuRzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxpQkFBb0MsRUFBRSxNQUE4QjtJQUV6RyxvRkFBb0Y7SUFDcEYsTUFBTSxnQkFBZ0IsR0FBc0I7UUFDMUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLElBQXdDLENBQUM7WUFDN0QsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4QyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FDRixDQUFDO0lBRUYsTUFBTSxrQkFBa0IsR0FBcUIsc0JBQXNCLENBQUM7UUFDbEUsR0FBRyxNQUFNLENBQUMsT0FBTztRQUNqQixnQkFBZ0IsQ0FBQyxVQUFzQixFQUFFLFdBQTJCO1lBQ2xFLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksR0FBcUIsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQztZQUN4RCxNQUFNLE1BQU0sR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0QsTUFBTSxNQUFNLEdBQTZCLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTVFLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FDL0IsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDLENBQUM7SUFFSCxnRUFBZ0U7SUFDaEUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEYsQ0FBQztBQUVELGdCQUFnQjtBQUNoQixTQUFTLDBCQUEwQixDQUFDLEtBQXlCO0lBQzNELE1BQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztJQUUzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRTtRQUN0QyxJQUFJLFFBQVEsRUFBRTtZQUNaLEtBQUssR0FBRyxDQUFDLEtBQXNCLENBQUMsQ0FBQztTQUNsQztRQUVELE9BQU87WUFDTCxhQUFhLEVBQUUsS0FBd0I7U0FDeEMsQ0FBQztLQUNIO1NBQU07UUFDTCxPQUFPLEtBQWlDLENBQUM7S0FDMUM7QUFDSCxDQUFDO0FBSUQsU0FBUywwQkFBMEIsQ0FBQyxLQUErQjtJQUNqRSxPQUFPO1FBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3RDLFVBQVUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0tBQzdDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGxvd2VkU2V0LCBpc0FsbG93ZWQsIG1heWJlU2V0LCBBcnJheU9yVmFsdWUsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uU2VydmljZSwgVHJhbnNpdGlvbkhvb2tGbiwgVHJhbnNpdGlvbiwgSG9va01hdGNoQ3JpdGVyaWEgfSBmcm9tICdAdWlyb3V0ZXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoVXNlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC51c2VyJztcbmltcG9ydCB7IERieEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFRyYW5zaXRpb25EZWNpc2lvbiwgQXV0aFRyYW5zaXRpb25Ib29rT3B0aW9ucywgbWFrZUF1dGhUcmFuc2l0aW9uSG9vayB9IGZyb20gJy4vaG9vayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzQXV0aFN0YXRlSG9va0NvbmZpZyB7XG4gIG9wdGlvbnM6IEF1dGhUcmFuc2l0aW9uSG9va09wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIEhhc0F1dGhTdGF0ZUNvbmZpZyA9IEFycmF5T3JWYWx1ZTxBdXRoVXNlclN0YXRlPiB8IEhhc0F1dGhTdGF0ZU9iamVjdENvbmZpZztcblxuZXhwb3J0IGludGVyZmFjZSBIYXNBdXRoU3RhdGVPYmplY3RDb25maWcge1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIHN0YXRlIG9yIGFueSBjaGlsZCBzdGF0ZSBpcyBjb25zaWRlcmVkIFwic2VjdXJlXCIsIHdoaWNoIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbi5cbiAgICovXG4gIGFsbG93ZWRTdGF0ZXM/OiBBcnJheU9yVmFsdWU8QXV0aFVzZXJTdGF0ZT47XG5cbiAgLyoqXG4gICAqIFN0YXRlcyB0aGF0IGFyZSBub3QgYWxsb3dlZC4gSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgdGhpcyBzdGF0ZSwgYSByZWplY3Rpb24gaXMgcmV0dXJuZWQuXG4gICAqL1xuICBkaXNhbGxvd2VkU3RhdGVzPzogQXJyYXlPclZhbHVlPEF1dGhVc2VyU3RhdGU+O1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzQXV0aFN0YXRlRGF0YSB7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBoYXNBdXRoU3RhdGVIb29rLlxuICAgKi9cbiAgYXV0aFN0YXRlczogSGFzQXV0aFN0YXRlQ29uZmlnO1xuXG59XG5cbi8qKlxuICogVGhpcyBob29rIHJlZGlyZWN0cyB0byB0aGUgY29uZmlndXJlZCBkZWZhdWx0IHN0YXRlIHdoZW4gYSB1c2VyOlxuICogXG4gKiAtIGRvZXMgbm90IGhhdmUgYW4gYWxsb3dlZCBzdGF0ZVxuICogLSBoYXMgYSBkaXNhbGxvd2VkIHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVIYXNBdXRoU3RhdGVIb29rKHRyYW5zaXRpb25TZXJ2aWNlOiBUcmFuc2l0aW9uU2VydmljZSwgY29uZmlnOiBIYXNBdXRoU3RhdGVIb29rQ29uZmlnKTogdm9pZCB7XG5cbiAgLy8gTWF0Y2hlcyBpZiB0aGUgZGVzdGluYXRpb24gc3RhdGUncyBkYXRhIHByb3BlcnR5IGhhcyBhIHRydXRoeSAnaXNTZWN1cmUnIHByb3BlcnR5XG4gIGNvbnN0IGlzU2VjdXJlQ3JpdGVyaWE6IEhvb2tNYXRjaENyaXRlcmlhID0ge1xuICAgIGVudGVyaW5nOiAoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBzdGF0ZT8uZGF0YSBhcyBNYXliZTxQYXJ0aWFsPEhhc0F1dGhTdGF0ZURhdGE+PjtcbiAgICAgIGNvbnN0IG1hdGNoID0gQm9vbGVhbihkYXRhPy5hdXRoU3RhdGVzKTtcbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYXNzZXJ0SGFzQXV0aFN0YXRlOiBUcmFuc2l0aW9uSG9va0ZuID0gbWFrZUF1dGhUcmFuc2l0aW9uSG9vayh7XG4gICAgLi4uY29uZmlnLm9wdGlvbnMsXG4gICAgbWFrZURlY2lzaW9uc09icyh0cmFuc2l0aW9uOiBUcmFuc2l0aW9uLCBhdXRoU2VydmljZTogRGJ4QXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhUcmFuc2l0aW9uRGVjaXNpb24+IHtcbiAgICAgIGNvbnN0IHRhcmdldFN0YXRlID0gdHJhbnNpdGlvbi50YXJnZXRTdGF0ZSgpO1xuICAgICAgY29uc3QgZGF0YTogSGFzQXV0aFN0YXRlRGF0YSA9IHRhcmdldFN0YXRlLnN0YXRlKCkuZGF0YTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRvSGFzQXV0aFN0YXRlT2JqZWN0Q29uZmlnKGRhdGEuYXV0aFN0YXRlcyk7XG4gICAgICBjb25zdCBwYXJzZWQ6IFBhcnNlZEhhc0F1dGhTdGF0ZUNvbmZpZyA9IHRvUGFyc2VkSGFzQXV0aFN0YXRlQ29uZmlnKGNvbmZpZyk7XG5cbiAgICAgIHJldHVybiBhdXRoU2VydmljZS5hdXRoVXNlclN0YXRlJC5waXBlKFxuICAgICAgICBtYXAoeCA9PiBpc0FsbG93ZWQoeCwgcGFyc2VkKSlcbiAgICAgICk7XG4gICAgfVxuICB9KTtcblxuICAvLyBSZWdpc3RlciB0aGUgXCJyZXF1aXJlcyBhdXRoXCIgaG9vayB3aXRoIHRoZSBUcmFuc2l0aW9uc1NlcnZpY2VcbiAgdHJhbnNpdGlvblNlcnZpY2Uub25CZWZvcmUoaXNTZWN1cmVDcml0ZXJpYSwgYXNzZXJ0SGFzQXV0aFN0YXRlLCB7IHByaW9yaXR5OiAxMDAgfSk7XG59XG5cbi8vIE1BUks6IFV0aWxpdHlcbmZ1bmN0aW9uIHRvSGFzQXV0aFN0YXRlT2JqZWN0Q29uZmlnKGlucHV0OiBIYXNBdXRoU3RhdGVDb25maWcpOiBIYXNBdXRoU3RhdGVPYmplY3RDb25maWcge1xuICBjb25zdCBpc1N0cmluZyA9IHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZyc7XG5cbiAgaWYgKChBcnJheS5pc0FycmF5KGlucHV0KSB8fCBpc1N0cmluZykpIHtcbiAgICBpZiAoaXNTdHJpbmcpIHtcbiAgICAgIGlucHV0ID0gW2lucHV0IGFzIEF1dGhVc2VyU3RhdGVdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhbGxvd2VkU3RhdGVzOiBpbnB1dCBhcyBBdXRoVXNlclN0YXRlW11cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dCBhcyBIYXNBdXRoU3RhdGVPYmplY3RDb25maWc7XG4gIH1cbn1cblxudHlwZSBQYXJzZWRIYXNBdXRoU3RhdGVDb25maWcgPSBBbGxvd2VkU2V0PEF1dGhVc2VyU3RhdGU+O1xuXG5mdW5jdGlvbiB0b1BhcnNlZEhhc0F1dGhTdGF0ZUNvbmZpZyhpbnB1dDogSGFzQXV0aFN0YXRlT2JqZWN0Q29uZmlnKTogUGFyc2VkSGFzQXV0aFN0YXRlQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBhbGxvd2VkOiBtYXliZVNldChpbnB1dC5hbGxvd2VkU3RhdGVzKSxcbiAgICBkaXNhbGxvd2VkOiBtYXliZVNldChpbnB1dC5kaXNhbGxvd2VkU3RhdGVzKVxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { EffectsModule } from '@ngrx/effects';
|
|
3
|
+
import { DbxAppAuthRouterEffects, DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN } from './effect/auth.router.state.effect';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ngrx/effects";
|
|
6
|
+
export class DbxAppAuthRouterStateModule {
|
|
7
|
+
static forRoot(config) {
|
|
8
|
+
return {
|
|
9
|
+
ngModule: DbxAppAuthRouterStateModule,
|
|
10
|
+
providers: [{
|
|
11
|
+
provide: DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN,
|
|
12
|
+
useValue: config.activeRoutesToApplyEffects
|
|
13
|
+
}]
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
DbxAppAuthRouterStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
+
DbxAppAuthRouterStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterStateModule, imports: [i1.EffectsFeatureModule] });
|
|
19
|
+
DbxAppAuthRouterStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterStateModule, imports: [[
|
|
20
|
+
EffectsModule.forFeature([DbxAppAuthRouterEffects])
|
|
21
|
+
]] });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAppAuthRouterStateModule, decorators: [{
|
|
23
|
+
type: NgModule,
|
|
24
|
+
args: [{
|
|
25
|
+
imports: [
|
|
26
|
+
EffectsModule.forFeature([DbxAppAuthRouterEffects])
|
|
27
|
+
],
|
|
28
|
+
declarations: [],
|
|
29
|
+
exports: []
|
|
30
|
+
}]
|
|
31
|
+
}] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yb3V0ZXIuc3RhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hdXRoL3JvdXRlci9zdGF0ZS9hdXRoLnJvdXRlci5zdGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBYS9HLE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUF5QztRQUN0RCxPQUFPO1lBQ0wsUUFBUSxFQUFFLDJCQUEyQjtZQUNyQyxTQUFTLEVBQUUsQ0FBQztvQkFDVixPQUFPLEVBQUUsaUNBQWlDO29CQUMxQyxRQUFRLEVBQUUsTUFBTSxDQUFDLDBCQUEwQjtpQkFDNUMsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDOzt3SEFWVSwyQkFBMkI7eUhBQTNCLDJCQUEyQjt5SEFBM0IsMkJBQTJCLFlBTjdCO1lBQ1AsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDcEQ7MkZBSVUsMkJBQTJCO2tCQVB2QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQztxQkFDcEQ7b0JBQ0QsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRWZmZWN0c01vZHVsZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgRGJ4QXBwQ29udGV4dFN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dCc7XG5pbXBvcnQgeyBEYnhBcHBBdXRoUm91dGVyRWZmZWN0cywgREJYX0FQUF9BVVRIX1JPVVRFUl9FRkZFQ1RTX1RPS0VOIH0gZnJvbSAnLi9lZmZlY3QvYXV0aC5yb3V0ZXIuc3RhdGUuZWZmZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhBcHBBdXRoUm91dGVyU3RhdGVNb2R1bGVDb25maWcge1xuICByZWFkb25seSBhY3RpdmVSb3V0ZXNUb0FwcGx5RWZmZWN0czogQXJyYXlPclZhbHVlPERieEFwcENvbnRleHRTdGF0ZT47XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBFZmZlY3RzTW9kdWxlLmZvckZlYXR1cmUoW0RieEFwcEF1dGhSb3V0ZXJFZmZlY3RzXSlcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4QXBwQXV0aFJvdXRlclN0YXRlTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IERieEFwcEF1dGhSb3V0ZXJTdGF0ZU1vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGJ4QXBwQXV0aFJvdXRlclN0YXRlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEYnhBcHBBdXRoUm91dGVyU3RhdGVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IERCWF9BUFBfQVVUSF9ST1VURVJfRUZGRUNUU19UT0tFTixcbiAgICAgICAgdXNlVmFsdWU6IGNvbmZpZy5hY3RpdmVSb3V0ZXNUb0FwcGx5RWZmZWN0c1xuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==
|