@dereekb/dbx-core 9.20.2 → 9.20.3

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.
@@ -0,0 +1,54 @@
1
+ import { DbxAuthService } from '../../../auth/service/auth.service';
2
+ import { map, first, switchMap, firstValueFrom, of } from 'rxjs';
3
+ export const DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_VALUE = '0';
4
+ export const DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_KEY = 'id';
5
+ /**
6
+ * This hook asserts the user is allowed to view a route with an identifier as a state parameter.
7
+ */
8
+ export function redirectForIdentifierParamHook(input) {
9
+ const { defaultAllowedValue, idParam = DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_KEY, defaultParamValue = DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_VALUE, priority = 100, transitionService, canViewModelWithId: canViewUser } = input;
10
+ const criteria = typeof input.criteria === 'string' ? { entering: input.criteria } : input.criteria;
11
+ // https://ui-router.github.io/ng2/docs/latest/modules/transition.html#hookresult
12
+ const assertAllowedId = (transition) => {
13
+ const $state = transition.router.stateService;
14
+ const injector = transition.injector();
15
+ const authService = injector.get(DbxAuthService);
16
+ const params = transition.params();
17
+ const transitionTargetId = params[idParam];
18
+ const defaultAllowedValueObs$ = defaultAllowedValue(authService, injector, transition);
19
+ return firstValueFrom(defaultAllowedValueObs$.pipe(first(), switchMap((defaultAllowedIdValue) => {
20
+ let result = of(true);
21
+ let redirectToId;
22
+ if (!transitionTargetId || transitionTargetId === defaultParamValue) {
23
+ // If the param isn't set, default to the default value
24
+ redirectToId = of(defaultAllowedIdValue);
25
+ }
26
+ else if (defaultAllowedIdValue !== transitionTargetId) {
27
+ redirectToId = canViewUser(transitionTargetId, authService, injector).pipe(map((x) => {
28
+ if (x == null || typeof x === 'boolean') {
29
+ return x ? transitionTargetId : defaultAllowedIdValue;
30
+ }
31
+ else {
32
+ return x;
33
+ }
34
+ }));
35
+ }
36
+ if (redirectToId != null) {
37
+ result = redirectToId.pipe(first(), map((targetId) => {
38
+ if (targetId !== transitionTargetId) {
39
+ const target = transition.targetState();
40
+ const state = target.state();
41
+ return $state.target(state, { ...params, [idParam]: targetId }, { location: true });
42
+ }
43
+ else {
44
+ return true;
45
+ }
46
+ }));
47
+ }
48
+ return result;
49
+ })));
50
+ };
51
+ // Register the "requires auth" hook with the TransitionsService
52
+ transitionService.onBefore(criteria, assertAllowedId, { priority });
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1jb3JlL3NyYy9saWIvcm91dGVyL2F1dGgvaG9vay9pZC5ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUdwRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc3RSxNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FBRyxHQUFHLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsSUFBSSxDQUFDO0FBb0M5RDs7R0FFRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxLQUEwQztJQUN2RixNQUFNLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxHQUFHLHlDQUF5QyxFQUFFLGlCQUFpQixHQUFHLDJDQUEyQyxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2hPLE1BQU0sUUFBUSxHQUFzQixPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFFdkgsaUZBQWlGO0lBQ2pGLE1BQU0sZUFBZSxHQUFxQixDQUFDLFVBQXNCLEVBQWMsRUFBRTtRQUMvRSxNQUFNLE1BQU0sR0FBaUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFtQixRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVuQyxNQUFNLGtCQUFrQixHQUFrQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXZGLE9BQU8sY0FBYyxDQUNuQix1QkFBdUIsQ0FBQyxJQUFJLENBQzFCLEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEVBQUU7WUFDbEMsSUFBSSxNQUFNLEdBQTJCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU5QyxJQUFJLFlBQWdELENBQUM7WUFFckQsSUFBSSxDQUFDLGtCQUFrQixJQUFJLGtCQUFrQixLQUFLLGlCQUFpQixFQUFFO2dCQUNuRSx1REFBdUQ7Z0JBQ3ZELFlBQVksR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUMxQztpQkFBTSxJQUFJLHFCQUFxQixLQUFLLGtCQUFrQixFQUFFO2dCQUN2RCxZQUFZLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNSLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxTQUFTLEVBQUU7d0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7cUJBQ3ZEO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxDQUFDO3FCQUNWO2dCQUNILENBQUMsQ0FBQyxDQUNILENBQUM7YUFDSDtZQUVELElBQUksWUFBWSxJQUFJLElBQUksRUFBRTtnQkFDeEIsTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQ3hCLEtBQUssRUFBRSxFQUNQLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNmLElBQUksUUFBUSxLQUFLLGtCQUFrQixFQUFFO3dCQUNuQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztxQkFDckY7eUJBQU07d0JBQ0wsT0FBTyxJQUFJLENBQUM7cUJBQ2I7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FDWSxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUVGLGdFQUFnRTtJQUNoRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERieEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC9zZXJ2aWNlL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uU2VydmljZSwgVHJhbnNpdGlvbkhvb2tGbiwgVHJhbnNpdGlvbiwgSG9va1Jlc3VsdCwgU3RhdGVTZXJ2aWNlLCBIb29rTWF0Y2hDcml0ZXJpYSB9IGZyb20gJ0B1aXJvdXRlci9jb3JlJztcbmltcG9ydCB7IE1heWJlLCBNb2RlbEtleSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgbWFwLCBmaXJzdCwgc3dpdGNoTWFwLCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFRElSRUNUX0ZPUl9JREVOVElGSUVSX1BBUkFNX1ZBTFVFID0gJzAnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVESVJFQ1RfRk9SX0lERU5USUZJRVJfUEFSQU1fS0VZID0gJ2lkJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdEZvcklkZW50aWZpZXJQYXJhbUhvb2tJbnB1dCB7XG4gIC8qKlxuICAgKiBGYWN0b3J5IHRoYXQgcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgc2VuZHMgdGhlIGRlZmF1bHQgYWxsb3dlZCBpZGVudGlmaWVyIHRvIHVzZSB3aGVuIGFjY2Vzc2luZyB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QWxsb3dlZFZhbHVlOiAoYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlLCBpbmplY3RvcjogSW5qZWN0b3IsIHRyYW5zaXRpb246IFRyYW5zaXRpb24pID0+IE9ic2VydmFibGU8TW9kZWxLZXk+O1xuICAvKipcbiAgICogUm91dGUgcGFyYW1ldGVyIHRvIHVzZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gXCJ1aWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgaWRQYXJhbT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHBhcmFtIHZhbHVlIHRvIGNoZWNrIGFnYWluc3QuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDAuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0UGFyYW1WYWx1ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIENyaXRlcmlhIG9yIHJvdXRlIHRvIHdhdGNoIGFuZCBpbnRlcmNlcHQuXG4gICAqL1xuICByZWFkb25seSBjcml0ZXJpYTogSG9va01hdGNoQ3JpdGVyaWEgfCBzdHJpbmc7XG4gIHJlYWRvbmx5IHRyYW5zaXRpb25TZXJ2aWNlOiBUcmFuc2l0aW9uU2VydmljZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHVzZXIgY2FuIHZpZXcgdGhlIHRhcmdldCBpZC5cbiAgICpcbiAgICogQ2FuIHJldHVybiBhbm90aGVyIGlkZW50aWZpZXIsIG9yIHRydWUgdG8gYWxsb3cgYWNjZXNzLCBvciBmYWxzZS9udWxsL3VuZGVmaW5lZCB0byBkZW55IGFjY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IGNhblZpZXdNb2RlbFdpdGhJZDogKHRhcmdldElkOiBNb2RlbEtleSwgYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IE9ic2VydmFibGU8TWF5YmU8Ym9vbGVhbiB8IE1vZGVsS2V5Pj47XG4gIC8qKlxuICAgKiBIb29rIHByaW9yaXR5XG4gICAqL1xuICByZWFkb25seSBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGlzIGhvb2sgYXNzZXJ0cyB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIHZpZXcgYSByb3V0ZSB3aXRoIGFuIGlkZW50aWZpZXIgYXMgYSBzdGF0ZSBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWRpcmVjdEZvcklkZW50aWZpZXJQYXJhbUhvb2soaW5wdXQ6IFJlZGlyZWN0Rm9ySWRlbnRpZmllclBhcmFtSG9va0lucHV0KTogdm9pZCB7XG4gIGNvbnN0IHsgZGVmYXVsdEFsbG93ZWRWYWx1ZSwgaWRQYXJhbSA9IERFRkFVTFRfUkVESVJFQ1RfRk9SX0lERU5USUZJRVJfUEFSQU1fS0VZLCBkZWZhdWx0UGFyYW1WYWx1ZSA9IERFRkFVTFRfUkVESVJFQ1RfRk9SX0lERU5USUZJRVJfUEFSQU1fVkFMVUUsIHByaW9yaXR5ID0gMTAwLCB0cmFuc2l0aW9uU2VydmljZSwgY2FuVmlld01vZGVsV2l0aElkOiBjYW5WaWV3VXNlciB9ID0gaW5wdXQ7XG4gIGNvbnN0IGNyaXRlcmlhOiBIb29rTWF0Y2hDcml0ZXJpYSA9IHR5cGVvZiBpbnB1dC5jcml0ZXJpYSA9PT0gJ3N0cmluZycgPyB7IGVudGVyaW5nOiBpbnB1dC5jcml0ZXJpYSB9IDogaW5wdXQuY3JpdGVyaWE7XG5cbiAgLy8gaHR0cHM6Ly91aS1yb3V0ZXIuZ2l0aHViLmlvL25nMi9kb2NzL2xhdGVzdC9tb2R1bGVzL3RyYW5zaXRpb24uaHRtbCNob29rcmVzdWx0XG4gIGNvbnN0IGFzc2VydEFsbG93ZWRJZDogVHJhbnNpdGlvbkhvb2tGbiA9ICh0cmFuc2l0aW9uOiBUcmFuc2l0aW9uKTogSG9va1Jlc3VsdCA9PiB7XG4gICAgY29uc3QgJHN0YXRlOiBTdGF0ZVNlcnZpY2UgPSB0cmFuc2l0aW9uLnJvdXRlci5zdGF0ZVNlcnZpY2U7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0cmFuc2l0aW9uLmluamVjdG9yKCk7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KERieEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCBwYXJhbXMgPSB0cmFuc2l0aW9uLnBhcmFtcygpO1xuXG4gICAgY29uc3QgdHJhbnNpdGlvblRhcmdldElkOiBNYXliZTxzdHJpbmc+ID0gcGFyYW1zW2lkUGFyYW1dO1xuICAgIGNvbnN0IGRlZmF1bHRBbGxvd2VkVmFsdWVPYnMkID0gZGVmYXVsdEFsbG93ZWRWYWx1ZShhdXRoU2VydmljZSwgaW5qZWN0b3IsIHRyYW5zaXRpb24pO1xuXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgZGVmYXVsdEFsbG93ZWRWYWx1ZU9icyQucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgc3dpdGNoTWFwKChkZWZhdWx0QWxsb3dlZElkVmFsdWUpID0+IHtcbiAgICAgICAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPEhvb2tSZXN1bHQ+ID0gb2YodHJ1ZSk7XG5cbiAgICAgICAgICBsZXQgcmVkaXJlY3RUb0lkOiBNYXliZTxPYnNlcnZhYmxlPE1heWJlPE1vZGVsS2V5Pj4+O1xuXG4gICAgICAgICAgaWYgKCF0cmFuc2l0aW9uVGFyZ2V0SWQgfHwgdHJhbnNpdGlvblRhcmdldElkID09PSBkZWZhdWx0UGFyYW1WYWx1ZSkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmFtIGlzbid0IHNldCwgZGVmYXVsdCB0byB0aGUgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgcmVkaXJlY3RUb0lkID0gb2YoZGVmYXVsdEFsbG93ZWRJZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRlZmF1bHRBbGxvd2VkSWRWYWx1ZSAhPT0gdHJhbnNpdGlvblRhcmdldElkKSB7XG4gICAgICAgICAgICByZWRpcmVjdFRvSWQgPSBjYW5WaWV3VXNlcih0cmFuc2l0aW9uVGFyZ2V0SWQsIGF1dGhTZXJ2aWNlLCBpbmplY3RvcikucGlwZShcbiAgICAgICAgICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHggPT0gbnVsbCB8fCB0eXBlb2YgeCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4geCA/IHRyYW5zaXRpb25UYXJnZXRJZCA6IGRlZmF1bHRBbGxvd2VkSWRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVkaXJlY3RUb0lkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlZGlyZWN0VG9JZC5waXBlKFxuICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICBtYXAoKHRhcmdldElkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldElkICE9PSB0cmFuc2l0aW9uVGFyZ2V0SWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRyYW5zaXRpb24udGFyZ2V0U3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGFyZ2V0LnN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gJHN0YXRlLnRhcmdldChzdGF0ZSwgeyAuLi5wYXJhbXMsIFtpZFBhcmFtXTogdGFyZ2V0SWQgfSwgeyBsb2NhdGlvbjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICkgYXMgSG9va1Jlc3VsdDtcbiAgfTtcblxuICAvLyBSZWdpc3RlciB0aGUgXCJyZXF1aXJlcyBhdXRoXCIgaG9vayB3aXRoIHRoZSBUcmFuc2l0aW9uc1NlcnZpY2VcbiAgdHJhbnNpdGlvblNlcnZpY2Uub25CZWZvcmUoY3JpdGVyaWEsIGFzc2VydEFsbG93ZWRJZCwgeyBwcmlvcml0eSB9KTtcbn1cbiJdfQ==
@@ -1,2 +1,3 @@
1
+ export * from './id.hook';
1
2
  export * from './uid.hook';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL3JvdXRlci9hdXRoL2hvb2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3VpZC5ob29rJztcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL3JvdXRlci9hdXRoL2hvb2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lkLmhvb2snO1xuZXhwb3J0ICogZnJvbSAnLi91aWQuaG9vayc7XG4iXX0=
@@ -1,55 +1,19 @@
1
- import { DbxAuthService } from '../../../auth/service/auth.service';
2
- import { map, first, switchMap, firstValueFrom, of } from 'rxjs';
1
+ import { redirectForIdentifierParamHook } from './id.hook';
3
2
  export const DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE = '0';
4
3
  export const DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY = 'uid';
5
4
  /**
6
5
  * This hook asserts the user is allowed to view a route with a user identifier as a parameter.
7
- *
8
- * If not, or
9
6
  */
10
7
  export function redirectForUserIdentifierParamHook(input) {
11
- const { uidParam = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, defaultParamValue = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, priority = 100, transitionService, canViewUser } = input;
12
- const criteria = typeof input.criteria === 'string' ? { entering: input.criteria } : input.criteria;
13
- // https://ui-router.github.io/ng2/docs/latest/modules/transition.html#hookresult
14
- const assertAllowedUid = (transition) => {
15
- const $state = transition.router.stateService;
16
- const injector = transition.injector();
17
- const authService = injector.get(DbxAuthService);
18
- const params = transition.params();
19
- const transitionTargetUid = params[uidParam];
20
- return firstValueFrom(authService.userIdentifier$.pipe(first(), switchMap((currentUserId) => {
21
- let result = of(true);
22
- let redirectToUid;
23
- if (!transitionTargetUid || transitionTargetUid === defaultParamValue) {
24
- // If uid isn't set, default to the current user.
25
- redirectToUid = of(currentUserId);
26
- }
27
- else if (currentUserId !== transitionTargetUid) {
28
- redirectToUid = canViewUser(transitionTargetUid, authService, injector).pipe(map((x) => {
29
- if (x == null || typeof x === 'boolean') {
30
- return x ? transitionTargetUid : currentUserId;
31
- }
32
- else {
33
- return x;
34
- }
35
- }));
36
- }
37
- if (redirectToUid != null) {
38
- result = redirectToUid.pipe(first(), map((targetUid) => {
39
- if (targetUid !== transitionTargetUid) {
40
- const target = transition.targetState();
41
- const state = target.state();
42
- return $state.target(state, { ...params, uid: targetUid }, { location: true });
43
- }
44
- else {
45
- return true;
46
- }
47
- }));
48
- }
49
- return result;
50
- })));
51
- };
52
- // Register the "requires auth" hook with the TransitionsService
53
- transitionService.onBefore(criteria, assertAllowedUid, { priority });
8
+ const { uidParam = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, defaultParamValue = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, criteria, priority = 100, transitionService, canViewUser } = input;
9
+ return redirectForIdentifierParamHook({
10
+ defaultAllowedValue: (authService) => authService.userIdentifier$,
11
+ idParam: uidParam,
12
+ defaultParamValue,
13
+ criteria,
14
+ transitionService,
15
+ canViewModelWithId: canViewUser,
16
+ priority
17
+ });
54
18
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlkLmhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL3JvdXRlci9hdXRoL2hvb2svdWlkLmhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzdFLE1BQU0sQ0FBQyxNQUFNLGdEQUFnRCxHQUFHLEdBQUcsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSw4Q0FBOEMsR0FBRyxLQUFLLENBQUM7QUFnQ3BFOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsS0FBOEM7SUFDL0YsTUFBTSxFQUFFLFFBQVEsR0FBRyw4Q0FBOEMsRUFBRSxpQkFBaUIsR0FBRyxnREFBZ0QsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNsTSxNQUFNLFFBQVEsR0FBc0IsT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBRXZILGlGQUFpRjtJQUNqRixNQUFNLGdCQUFnQixHQUFxQixDQUFDLFVBQXNCLEVBQWMsRUFBRTtRQUNoRixNQUFNLE1BQU0sR0FBaUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFtQixRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVuQyxNQUFNLG1CQUFtQixHQUFrQixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUQsT0FBTyxjQUFjLENBQ25CLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM5QixLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUMxQixJQUFJLE1BQU0sR0FBMkIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTlDLElBQUksYUFBMkQsQ0FBQztZQUVoRSxJQUFJLENBQUMsbUJBQW1CLElBQUksbUJBQW1CLEtBQUssaUJBQWlCLEVBQUU7Z0JBQ3JFLGlEQUFpRDtnQkFDakQsYUFBYSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQztpQkFBTSxJQUFJLGFBQWEsS0FBSyxtQkFBbUIsRUFBRTtnQkFDaEQsYUFBYSxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUMxRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDUixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUyxFQUFFO3dCQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztxQkFDaEQ7eUJBQU07d0JBQ0wsT0FBTyxDQUFDLENBQUM7cUJBQ1Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO1lBRUQsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUN6QixNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FDekIsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ2hCLElBQUksU0FBUyxLQUFLLG1CQUFtQixFQUFFO3dCQUNyQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO3FCQUNoRjt5QkFBTTt3QkFDTCxPQUFPLElBQUksQ0FBQztxQkFDYjtnQkFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUNZLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsZ0VBQWdFO0lBQ2hFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoVXNlcklkZW50aWZpZXIgfSBmcm9tICcuLi8uLi8uLi9hdXRoL2F1dGgudXNlcic7XG5pbXBvcnQgeyBEYnhBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2F1dGgvc2VydmljZS9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNpdGlvblNlcnZpY2UsIFRyYW5zaXRpb25Ib29rRm4sIFRyYW5zaXRpb24sIEhvb2tSZXN1bHQsIFN0YXRlU2VydmljZSwgSG9va01hdGNoQ3JpdGVyaWEgfSBmcm9tICdAdWlyb3V0ZXIvY29yZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgbWFwLCBmaXJzdCwgc3dpdGNoTWFwLCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFRElSRUNUX0ZPUl9VU0VSX0lERU5USUZJRVJfUEFSQU1fVkFMVUUgPSAnMCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SRURJUkVDVF9GT1JfVVNFUl9JREVOVElGSUVSX1BBUkFNX0tFWSA9ICd1aWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0Rm9yVXNlcklkZW50aWZpZXJQYXJhbUhvb2tJbnB1dCB7XG4gIC8qKlxuICAgKiBSb3V0ZSBwYXJhbWV0ZXIgdG8gdXNlLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcInVpZFwiXG4gICAqL1xuICByZWFkb25seSB1aWRQYXJhbT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHBhcmFtIHZhbHVlIHRvIGNoZWNrIGFnYWluc3QuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDAuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0UGFyYW1WYWx1ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIENyaXRlcmlhIG9yIHJvdXRlIHRvIHdhdGNoIGFuZCBpbnRlcmNlcHQuXG4gICAqL1xuICByZWFkb25seSBjcml0ZXJpYTogSG9va01hdGNoQ3JpdGVyaWEgfCBzdHJpbmc7XG4gIHJlYWRvbmx5IHRyYW5zaXRpb25TZXJ2aWNlOiBUcmFuc2l0aW9uU2VydmljZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHVzZXIgY2FuIHZpZXcgdGhlIHRhcmdldCB1c2VyLlxuICAgKlxuICAgKiBDYW4gcmV0dXJuIGFub3RoZXIgdXNlcnMgaWRlbnRpZmllciwgb3IgdHJ1ZSB0byBhbGxvdyBhY2Nlc3MsIG9yIGZhbHNlL251bGwvdW5kZWZpbmVkIHRvIGRlbnkgYWNjZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FuVmlld1VzZXI6ICh0YXJnZXRVaWQ6IEF1dGhVc2VySWRlbnRpZmllciwgYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IE9ic2VydmFibGU8TWF5YmU8Ym9vbGVhbiB8IEF1dGhVc2VySWRlbnRpZmllcj4+O1xuICAvKipcbiAgICogSG9vayBwcmlvcml0eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpb3JpdHk/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhpcyBob29rIGFzc2VydHMgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byB2aWV3IGEgcm91dGUgd2l0aCBhIHVzZXIgaWRlbnRpZmllciBhcyBhIHBhcmFtZXRlci5cbiAqXG4gKiBJZiBub3QsIG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWRpcmVjdEZvclVzZXJJZGVudGlmaWVyUGFyYW1Ib29rKGlucHV0OiBSZWRpcmVjdEZvclVzZXJJZGVudGlmaWVyUGFyYW1Ib29rSW5wdXQpOiB2b2lkIHtcbiAgY29uc3QgeyB1aWRQYXJhbSA9IERFRkFVTFRfUkVESVJFQ1RfRk9SX1VTRVJfSURFTlRJRklFUl9QQVJBTV9LRVksIGRlZmF1bHRQYXJhbVZhbHVlID0gREVGQVVMVF9SRURJUkVDVF9GT1JfVVNFUl9JREVOVElGSUVSX1BBUkFNX1ZBTFVFLCBwcmlvcml0eSA9IDEwMCwgdHJhbnNpdGlvblNlcnZpY2UsIGNhblZpZXdVc2VyIH0gPSBpbnB1dDtcbiAgY29uc3QgY3JpdGVyaWE6IEhvb2tNYXRjaENyaXRlcmlhID0gdHlwZW9mIGlucHV0LmNyaXRlcmlhID09PSAnc3RyaW5nJyA/IHsgZW50ZXJpbmc6IGlucHV0LmNyaXRlcmlhIH0gOiBpbnB1dC5jcml0ZXJpYTtcblxuICAvLyBodHRwczovL3VpLXJvdXRlci5naXRodWIuaW8vbmcyL2RvY3MvbGF0ZXN0L21vZHVsZXMvdHJhbnNpdGlvbi5odG1sI2hvb2tyZXN1bHRcbiAgY29uc3QgYXNzZXJ0QWxsb3dlZFVpZDogVHJhbnNpdGlvbkhvb2tGbiA9ICh0cmFuc2l0aW9uOiBUcmFuc2l0aW9uKTogSG9va1Jlc3VsdCA9PiB7XG4gICAgY29uc3QgJHN0YXRlOiBTdGF0ZVNlcnZpY2UgPSB0cmFuc2l0aW9uLnJvdXRlci5zdGF0ZVNlcnZpY2U7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0cmFuc2l0aW9uLmluamVjdG9yKCk7XG4gICAgY29uc3QgYXV0aFNlcnZpY2U6IERieEF1dGhTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KERieEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCBwYXJhbXMgPSB0cmFuc2l0aW9uLnBhcmFtcygpO1xuXG4gICAgY29uc3QgdHJhbnNpdGlvblRhcmdldFVpZDogTWF5YmU8c3RyaW5nPiA9IHBhcmFtc1t1aWRQYXJhbV07XG5cbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICBhdXRoU2VydmljZS51c2VySWRlbnRpZmllciQucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgc3dpdGNoTWFwKChjdXJyZW50VXNlcklkKSA9PiB7XG4gICAgICAgICAgbGV0IHJlc3VsdDogT2JzZXJ2YWJsZTxIb29rUmVzdWx0PiA9IG9mKHRydWUpO1xuXG4gICAgICAgICAgbGV0IHJlZGlyZWN0VG9VaWQ6IE1heWJlPE9ic2VydmFibGU8TWF5YmU8QXV0aFVzZXJJZGVudGlmaWVyPj4+O1xuXG4gICAgICAgICAgaWYgKCF0cmFuc2l0aW9uVGFyZ2V0VWlkIHx8IHRyYW5zaXRpb25UYXJnZXRVaWQgPT09IGRlZmF1bHRQYXJhbVZhbHVlKSB7XG4gICAgICAgICAgICAvLyBJZiB1aWQgaXNuJ3Qgc2V0LCBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICAgICAgICByZWRpcmVjdFRvVWlkID0gb2YoY3VycmVudFVzZXJJZCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50VXNlcklkICE9PSB0cmFuc2l0aW9uVGFyZ2V0VWlkKSB7XG4gICAgICAgICAgICByZWRpcmVjdFRvVWlkID0gY2FuVmlld1VzZXIodHJhbnNpdGlvblRhcmdldFVpZCwgYXV0aFNlcnZpY2UsIGluamVjdG9yKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoeCA9PSBudWxsIHx8IHR5cGVvZiB4ID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB4ID8gdHJhbnNpdGlvblRhcmdldFVpZCA6IGN1cnJlbnRVc2VySWQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlZGlyZWN0VG9VaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVkaXJlY3RUb1VpZC5waXBlKFxuICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICBtYXAoKHRhcmdldFVpZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRVaWQgIT09IHRyYW5zaXRpb25UYXJnZXRVaWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRyYW5zaXRpb24udGFyZ2V0U3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGFyZ2V0LnN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gJHN0YXRlLnRhcmdldChzdGF0ZSwgeyAuLi5wYXJhbXMsIHVpZDogdGFyZ2V0VWlkIH0sIHsgbG9jYXRpb246IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApIGFzIEhvb2tSZXN1bHQ7XG4gIH07XG5cbiAgLy8gUmVnaXN0ZXIgdGhlIFwicmVxdWlyZXMgYXV0aFwiIGhvb2sgd2l0aCB0aGUgVHJhbnNpdGlvbnNTZXJ2aWNlXG4gIHRyYW5zaXRpb25TZXJ2aWNlLm9uQmVmb3JlKGNyaXRlcmlhLCBhc3NlcnRBbGxvd2VkVWlkLCB7IHByaW9yaXR5IH0pO1xufVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlkLmhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL3JvdXRlci9hdXRoL2hvb2svdWlkLmhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLGdEQUFnRCxHQUFHLEdBQUcsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSw4Q0FBOEMsR0FBRyxLQUFLLENBQUM7QUFnQ3BFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLEtBQThDO0lBQy9GLE1BQU0sRUFBRSxRQUFRLEdBQUcsOENBQThDLEVBQUUsaUJBQWlCLEdBQUcsZ0RBQWdELEVBQUUsUUFBUSxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVNLE9BQU8sOEJBQThCLENBQUM7UUFDcEMsbUJBQW1CLEVBQUUsQ0FBQyxXQUEyQixFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsZUFBZTtRQUNqRixPQUFPLEVBQUUsUUFBUTtRQUNqQixpQkFBaUI7UUFDakIsUUFBUTtRQUNSLGlCQUFpQjtRQUNqQixrQkFBa0IsRUFBRSxXQUFXO1FBQy9CLFFBQVE7S0FDVCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aFVzZXJJZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC9hdXRoLnVzZXInO1xuaW1wb3J0IHsgRGJ4QXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hdXRoL3NlcnZpY2UvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zaXRpb25TZXJ2aWNlLCBIb29rTWF0Y2hDcml0ZXJpYSB9IGZyb20gJ0B1aXJvdXRlci9jb3JlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVkaXJlY3RGb3JJZGVudGlmaWVyUGFyYW1Ib29rIH0gZnJvbSAnLi9pZC5ob29rJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVESVJFQ1RfRk9SX1VTRVJfSURFTlRJRklFUl9QQVJBTV9WQUxVRSA9ICcwJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFRElSRUNUX0ZPUl9VU0VSX0lERU5USUZJRVJfUEFSQU1fS0VZID0gJ3VpZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXJlY3RGb3JVc2VySWRlbnRpZmllclBhcmFtSG9va0lucHV0IHtcbiAgLyoqXG4gICAqIFJvdXRlIHBhcmFtZXRlciB0byB1c2UuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIFwidWlkXCJcbiAgICovXG4gIHJlYWRvbmx5IHVpZFBhcmFtPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcGFyYW0gdmFsdWUgdG8gY2hlY2sgYWdhaW5zdC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gMC5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRQYXJhbVZhbHVlPzogc3RyaW5nO1xuICAvKipcbiAgICogQ3JpdGVyaWEgb3Igcm91dGUgdG8gd2F0Y2ggYW5kIGludGVyY2VwdC5cbiAgICovXG4gIHJlYWRvbmx5IGNyaXRlcmlhOiBIb29rTWF0Y2hDcml0ZXJpYSB8IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhbnNpdGlvblNlcnZpY2U6IFRyYW5zaXRpb25TZXJ2aWNlO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgdXNlciBjYW4gdmlldyB0aGUgdGFyZ2V0IHVzZXIuXG4gICAqXG4gICAqIENhbiByZXR1cm4gYW5vdGhlciB1c2VycyBpZGVudGlmaWVyLCBvciB0cnVlIHRvIGFsbG93IGFjY2Vzcywgb3IgZmFsc2UvbnVsbC91bmRlZmluZWQgdG8gZGVueSBhY2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBjYW5WaWV3VXNlcjogKHRhcmdldFVpZDogQXV0aFVzZXJJZGVudGlmaWVyLCBhdXRoU2VydmljZTogRGJ4QXV0aFNlcnZpY2UsIGluamVjdG9yOiBJbmplY3RvcikgPT4gT2JzZXJ2YWJsZTxNYXliZTxib29sZWFuIHwgQXV0aFVzZXJJZGVudGlmaWVyPj47XG4gIC8qKlxuICAgKiBIb29rIHByaW9yaXR5XG4gICAqL1xuICByZWFkb25seSBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGlzIGhvb2sgYXNzZXJ0cyB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIHZpZXcgYSByb3V0ZSB3aXRoIGEgdXNlciBpZGVudGlmaWVyIGFzIGEgcGFyYW1ldGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkaXJlY3RGb3JVc2VySWRlbnRpZmllclBhcmFtSG9vayhpbnB1dDogUmVkaXJlY3RGb3JVc2VySWRlbnRpZmllclBhcmFtSG9va0lucHV0KTogdm9pZCB7XG4gIGNvbnN0IHsgdWlkUGFyYW0gPSBERUZBVUxUX1JFRElSRUNUX0ZPUl9VU0VSX0lERU5USUZJRVJfUEFSQU1fS0VZLCBkZWZhdWx0UGFyYW1WYWx1ZSA9IERFRkFVTFRfUkVESVJFQ1RfRk9SX1VTRVJfSURFTlRJRklFUl9QQVJBTV9WQUxVRSwgY3JpdGVyaWEsIHByaW9yaXR5ID0gMTAwLCB0cmFuc2l0aW9uU2VydmljZSwgY2FuVmlld1VzZXIgfSA9IGlucHV0O1xuXG4gIHJldHVybiByZWRpcmVjdEZvcklkZW50aWZpZXJQYXJhbUhvb2soe1xuICAgIGRlZmF1bHRBbGxvd2VkVmFsdWU6IChhdXRoU2VydmljZTogRGJ4QXV0aFNlcnZpY2UpID0+IGF1dGhTZXJ2aWNlLnVzZXJJZGVudGlmaWVyJCxcbiAgICBpZFBhcmFtOiB1aWRQYXJhbSxcbiAgICBkZWZhdWx0UGFyYW1WYWx1ZSxcbiAgICBjcml0ZXJpYSxcbiAgICB0cmFuc2l0aW9uU2VydmljZSxcbiAgICBjYW5WaWV3TW9kZWxXaXRoSWQ6IGNhblZpZXdVc2VyLFxuICAgIHByaW9yaXR5XG4gIH0pO1xufVxuIl19
@@ -2400,46 +2400,45 @@ function clickableUrlTel(tel) {
2400
2400
  };
2401
2401
  }
2402
2402
 
2403
- const DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE = '0';
2404
- const DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY = 'uid';
2403
+ const DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_VALUE = '0';
2404
+ const DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_KEY = 'id';
2405
2405
  /**
2406
- * This hook asserts the user is allowed to view a route with a user identifier as a parameter.
2407
- *
2408
- * If not, or
2406
+ * This hook asserts the user is allowed to view a route with an identifier as a state parameter.
2409
2407
  */
2410
- function redirectForUserIdentifierParamHook(input) {
2411
- const { uidParam = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, defaultParamValue = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, priority = 100, transitionService, canViewUser } = input;
2408
+ function redirectForIdentifierParamHook(input) {
2409
+ const { defaultAllowedValue, idParam = DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_KEY, defaultParamValue = DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_VALUE, priority = 100, transitionService, canViewModelWithId: canViewUser } = input;
2412
2410
  const criteria = typeof input.criteria === 'string' ? { entering: input.criteria } : input.criteria;
2413
2411
  // https://ui-router.github.io/ng2/docs/latest/modules/transition.html#hookresult
2414
- const assertAllowedUid = (transition) => {
2412
+ const assertAllowedId = (transition) => {
2415
2413
  const $state = transition.router.stateService;
2416
2414
  const injector = transition.injector();
2417
2415
  const authService = injector.get(DbxAuthService);
2418
2416
  const params = transition.params();
2419
- const transitionTargetUid = params[uidParam];
2420
- return firstValueFrom(authService.userIdentifier$.pipe(first(), switchMap((currentUserId) => {
2417
+ const transitionTargetId = params[idParam];
2418
+ const defaultAllowedValueObs$ = defaultAllowedValue(authService, injector, transition);
2419
+ return firstValueFrom(defaultAllowedValueObs$.pipe(first(), switchMap((defaultAllowedIdValue) => {
2421
2420
  let result = of(true);
2422
- let redirectToUid;
2423
- if (!transitionTargetUid || transitionTargetUid === defaultParamValue) {
2424
- // If uid isn't set, default to the current user.
2425
- redirectToUid = of(currentUserId);
2421
+ let redirectToId;
2422
+ if (!transitionTargetId || transitionTargetId === defaultParamValue) {
2423
+ // If the param isn't set, default to the default value
2424
+ redirectToId = of(defaultAllowedIdValue);
2426
2425
  }
2427
- else if (currentUserId !== transitionTargetUid) {
2428
- redirectToUid = canViewUser(transitionTargetUid, authService, injector).pipe(map((x) => {
2426
+ else if (defaultAllowedIdValue !== transitionTargetId) {
2427
+ redirectToId = canViewUser(transitionTargetId, authService, injector).pipe(map((x) => {
2429
2428
  if (x == null || typeof x === 'boolean') {
2430
- return x ? transitionTargetUid : currentUserId;
2429
+ return x ? transitionTargetId : defaultAllowedIdValue;
2431
2430
  }
2432
2431
  else {
2433
2432
  return x;
2434
2433
  }
2435
2434
  }));
2436
2435
  }
2437
- if (redirectToUid != null) {
2438
- result = redirectToUid.pipe(first(), map((targetUid) => {
2439
- if (targetUid !== transitionTargetUid) {
2436
+ if (redirectToId != null) {
2437
+ result = redirectToId.pipe(first(), map((targetId) => {
2438
+ if (targetId !== transitionTargetId) {
2440
2439
  const target = transition.targetState();
2441
2440
  const state = target.state();
2442
- return $state.target(state, Object.assign(Object.assign({}, params), { uid: targetUid }), { location: true });
2441
+ return $state.target(state, Object.assign(Object.assign({}, params), { [idParam]: targetId }), { location: true });
2443
2442
  }
2444
2443
  else {
2445
2444
  return true;
@@ -2450,7 +2449,25 @@ function redirectForUserIdentifierParamHook(input) {
2450
2449
  })));
2451
2450
  };
2452
2451
  // Register the "requires auth" hook with the TransitionsService
2453
- transitionService.onBefore(criteria, assertAllowedUid, { priority });
2452
+ transitionService.onBefore(criteria, assertAllowedId, { priority });
2453
+ }
2454
+
2455
+ const DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE = '0';
2456
+ const DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY = 'uid';
2457
+ /**
2458
+ * This hook asserts the user is allowed to view a route with a user identifier as a parameter.
2459
+ */
2460
+ function redirectForUserIdentifierParamHook(input) {
2461
+ const { uidParam = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, defaultParamValue = DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, criteria, priority = 100, transitionService, canViewUser } = input;
2462
+ return redirectForIdentifierParamHook({
2463
+ defaultAllowedValue: (authService) => authService.userIdentifier$,
2464
+ idParam: uidParam,
2465
+ defaultParamValue,
2466
+ criteria,
2467
+ transitionService,
2468
+ canViewModelWithId: canViewUser,
2469
+ priority
2470
+ });
2454
2471
  }
2455
2472
 
2456
2473
  var DbxRouterTransitionEventType;
@@ -5016,5 +5033,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
5016
5033
  * Generated bundle index. Do not edit.
5017
5034
  */
5018
5035
 
5019
- export { APP_ACTION_DISABLED_DIRECTIVE_KEY, APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY, APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY, AbstractDbxActionHandlerDirective, AbstractDbxActionValueOnTriggerDirective, AbstractDbxAnchorDirective, AbstractDbxButtonDirective, AbstractDbxFilterMapInstanceDirective, AbstractDbxInjectionDirective, AbstractFilterSourceConnectorDirective, AbstractFilterSourceDirective, AbstractForwardDbxInjectionContextDirective, AbstractIfDirective, AbstractLockSetSubscriptionDirective, AbstractSubscriptionDirective, AbstractTransitionDirective, AbstractTransitionWatcherDirective, ActionContextStore, ActionContextStoreSource, ActionContextStoreSourceMap, AnchorType, DBX_ACTION_HANDLER_LOCK_KEY, DBX_APP_APP_CONTEXT_STATE, DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN, DBX_AUTH_APP_CONTEXT_STATE, DBX_INIT_APP_CONTEXT_STATE, DBX_INJECTION_COMPONENT_DATA, DBX_KNOWN_APP_CONTEXT_STATES, DBX_ONBOARDING_APP_CONTEXT_STATE, DBX_ONBOARD_APP_CONTEXT_STATE, DBX_PUBLIC_APP_CONTEXT_STATE, DEFAULT_ACTION_DISABLED_KEY, DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, DEFAULT_STORAGE_ACCESSOR_FACTORY_TOKEN, DEFAULT_STORAGE_OBJECT_TOKEN, DateDistancePipe, DateFormatDistancePipe, DateFromToTimePipe, DbxActionAutoModifyDirective, DbxActionAutoTriggerDirective, DbxActionButtonDirective, DbxActionButtonTriggerDirective, DbxActionContextBaseSource, DbxActionContextLoggerDirective, DbxActionContextMachine, DbxActionContextMachineAsService, DbxActionContextMapDirective, DbxActionContextMapDirectiveSourceInstance, DbxActionContextStoreSourceInstance, DbxActionDirective, DbxActionDisabledDirective, DbxActionDisabledOnSuccessDirective, DbxActionEnforceModifiedDirective, DbxActionFromMapDirective, DbxActionHandlerDirective, DbxActionHandlerInstance, DbxActionHasSuccessDirective, DbxActionIsWorkingDirective, DbxActionMapSourceDirective, DbxActionMapWorkingDisableDirective, DbxActionPreSuccessDirective, DbxActionSourceDirective, DbxActionState, DbxActionSuccessHandlerDirective, DbxActionValueDirective, DbxActionValueOnTriggerInstance, DbxActionValueTriggerDirective, DbxActionWorkInstanceDelegate, DbxAnchor, DbxAngularRouterService, DbxAppAuthRouterEffects, DbxAppAuthRouterModule, DbxAppAuthRouterService, DbxAppAuthRouterStateModule, DbxAppAuthRoutes, DbxAppAuthStateModule, DbxAppAuthStateService, DbxAppContextService, DbxAppContextStateDirective, DbxAppContextStateModule, DbxAuthHasAnyRoleDirective, DbxAuthHasRolesDirective, DbxAuthNotAnyRolesDirective, DbxAuthService, DbxButton, DbxButtonDirective, DbxButtonSegueDirective, DbxCoreActionModule, DbxCoreAngularRouterSegueModule, DbxCoreAuthModule, DbxCoreButtonModule, DbxCoreFilterModule, DbxCoreUIRouterSegueModule, DbxDatePipeModule, DbxFilterConnectSourceDirective, DbxFilterMapDirective, DbxFilterMapSourceConnectorDirective, DbxFilterMapSourceDirective, DbxFilterSourceConnectorDirective, DbxFilterSourceDirective, DbxInjectionComponent, DbxInjectionComponentModule, DbxInjectionContext, DbxInjectionContextDirective, DbxInjectionInstance, DbxLoadingButtonDirective, DbxMiscPipeModule, DbxPipesModule, DbxRouteParamDefaultRedirectInstance, DbxRouteParamReaderInstance, DbxRouterService, DbxRouterTransitionEventType, DbxRouterTransitionService, DbxStorageModule, DbxUIRouterService, FilterSourceDirective, FullLocalStorageObject, InstantStorageAccessor, LimitedStorageAccessor, LockSetComponentStore, MemoryStorageObject, MinutesStringPipe, NO_AUTH_USER_IDENTIFIER, PrettyJsonPipe, SecondaryActionContextStoreSource, SimpleStorageAccessor, SimpleStorageAccessorFactory, StorageAccessor, StringStorageAccessor, StringifySimpleStorageAccessorConverter, TimeDistanceCountdownPipe, TimeDistancePipe, ToJsDatePipe, ToMinutesPipe, WrapperSimpleStorageAccessorDelegate, actionContextHasNoErrorAndIsModifiedAndCanTrigger, actionContextIsModifiedAndCanTrigger, actionContextStoreSourceInstanceFactory, actionContextStoreSourceMachineFactory, actionContextStoreSourcePipe, anchorTypeForAnchor, asSegueRef, asSegueRefString, authRolesSetContainsAllRolesFrom, authRolesSetContainsAnyRoleFrom, authRolesSetContainsNoRolesFrom, authUserIdentifier, canReadyValue, canTriggerAction, canTriggerActionState, checkNgContentWrapperHasContent, clickableUrlInNewTab, clickableUrlMailTo, clickableUrlTel, dbxActionValueStreamDirective, defaultStorageObjectFactory, enableHasAuthRoleHook, enableHasAuthStateHook, enableIsLoggedInHook, expandClickableAnchorLinkTree, expandClickableAnchorLinkTreeNode, expandClickableAnchorLinkTrees, filterTransitionEvent, filterTransitionSuccess, flattenExpandedClickableAnchorLinkTree, flattenExpandedClickableAnchorLinkTreeToLinks, index as fromDbxAppAuth, index$2 as fromDbxAppContext, goWithRouter, isActionContextDisabled, isActionContextEnabled, isDisabledActionContextState, isIdleActionState, isLatestSuccessfulRoute, isSegueRef, isSegueRefActive, isSegueRefActiveFunction, isSegueRefActiveOnTransitionSuccess, isWorkingActionState, loadingStateForActionContextState, loadingStateTypeForActionContextState, loadingStateTypeForActionState, loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, makeAuthTransitionHook, makeDbxActionContextSourceReference, mapRefStringObsToSegueRefObs, mergeDbxInjectionComponentConfigs, index$1 as onDbxAppAuth, index$3 as onDbxAppContext, onRouterTransitionEventType, onRouterTransitionSuccessEvent, pipeActionStore, provideActionStoreSource, provideDbxAnchor, provideDbxButton, provideDbxInjectionContext, provideFilterSource, provideFilterSourceConnector, provideFilterSourceDirective, provideSecondaryActionStoreSource, redirectBasedOnAuthUserState, redirectForUserIdentifierParamHook, refStringToSegueRef, safeDetectChanges, safeMarkForCheck, safeUseCdRef, successTransition, tapDetectChanges, tapSafeMarkForCheck, useActionStore };
5036
+ export { APP_ACTION_DISABLED_DIRECTIVE_KEY, APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY, APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY, AbstractDbxActionHandlerDirective, AbstractDbxActionValueOnTriggerDirective, AbstractDbxAnchorDirective, AbstractDbxButtonDirective, AbstractDbxFilterMapInstanceDirective, AbstractDbxInjectionDirective, AbstractFilterSourceConnectorDirective, AbstractFilterSourceDirective, AbstractForwardDbxInjectionContextDirective, AbstractIfDirective, AbstractLockSetSubscriptionDirective, AbstractSubscriptionDirective, AbstractTransitionDirective, AbstractTransitionWatcherDirective, ActionContextStore, ActionContextStoreSource, ActionContextStoreSourceMap, AnchorType, DBX_ACTION_HANDLER_LOCK_KEY, DBX_APP_APP_CONTEXT_STATE, DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN, DBX_AUTH_APP_CONTEXT_STATE, DBX_INIT_APP_CONTEXT_STATE, DBX_INJECTION_COMPONENT_DATA, DBX_KNOWN_APP_CONTEXT_STATES, DBX_ONBOARDING_APP_CONTEXT_STATE, DBX_ONBOARD_APP_CONTEXT_STATE, DBX_PUBLIC_APP_CONTEXT_STATE, DEFAULT_ACTION_DISABLED_KEY, DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY, DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_KEY, DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_VALUE, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, DEFAULT_STORAGE_ACCESSOR_FACTORY_TOKEN, DEFAULT_STORAGE_OBJECT_TOKEN, DateDistancePipe, DateFormatDistancePipe, DateFromToTimePipe, DbxActionAutoModifyDirective, DbxActionAutoTriggerDirective, DbxActionButtonDirective, DbxActionButtonTriggerDirective, DbxActionContextBaseSource, DbxActionContextLoggerDirective, DbxActionContextMachine, DbxActionContextMachineAsService, DbxActionContextMapDirective, DbxActionContextMapDirectiveSourceInstance, DbxActionContextStoreSourceInstance, DbxActionDirective, DbxActionDisabledDirective, DbxActionDisabledOnSuccessDirective, DbxActionEnforceModifiedDirective, DbxActionFromMapDirective, DbxActionHandlerDirective, DbxActionHandlerInstance, DbxActionHasSuccessDirective, DbxActionIsWorkingDirective, DbxActionMapSourceDirective, DbxActionMapWorkingDisableDirective, DbxActionPreSuccessDirective, DbxActionSourceDirective, DbxActionState, DbxActionSuccessHandlerDirective, DbxActionValueDirective, DbxActionValueOnTriggerInstance, DbxActionValueTriggerDirective, DbxActionWorkInstanceDelegate, DbxAnchor, DbxAngularRouterService, DbxAppAuthRouterEffects, DbxAppAuthRouterModule, DbxAppAuthRouterService, DbxAppAuthRouterStateModule, DbxAppAuthRoutes, DbxAppAuthStateModule, DbxAppAuthStateService, DbxAppContextService, DbxAppContextStateDirective, DbxAppContextStateModule, DbxAuthHasAnyRoleDirective, DbxAuthHasRolesDirective, DbxAuthNotAnyRolesDirective, DbxAuthService, DbxButton, DbxButtonDirective, DbxButtonSegueDirective, DbxCoreActionModule, DbxCoreAngularRouterSegueModule, DbxCoreAuthModule, DbxCoreButtonModule, DbxCoreFilterModule, DbxCoreUIRouterSegueModule, DbxDatePipeModule, DbxFilterConnectSourceDirective, DbxFilterMapDirective, DbxFilterMapSourceConnectorDirective, DbxFilterMapSourceDirective, DbxFilterSourceConnectorDirective, DbxFilterSourceDirective, DbxInjectionComponent, DbxInjectionComponentModule, DbxInjectionContext, DbxInjectionContextDirective, DbxInjectionInstance, DbxLoadingButtonDirective, DbxMiscPipeModule, DbxPipesModule, DbxRouteParamDefaultRedirectInstance, DbxRouteParamReaderInstance, DbxRouterService, DbxRouterTransitionEventType, DbxRouterTransitionService, DbxStorageModule, DbxUIRouterService, FilterSourceDirective, FullLocalStorageObject, InstantStorageAccessor, LimitedStorageAccessor, LockSetComponentStore, MemoryStorageObject, MinutesStringPipe, NO_AUTH_USER_IDENTIFIER, PrettyJsonPipe, SecondaryActionContextStoreSource, SimpleStorageAccessor, SimpleStorageAccessorFactory, StorageAccessor, StringStorageAccessor, StringifySimpleStorageAccessorConverter, TimeDistanceCountdownPipe, TimeDistancePipe, ToJsDatePipe, ToMinutesPipe, WrapperSimpleStorageAccessorDelegate, actionContextHasNoErrorAndIsModifiedAndCanTrigger, actionContextIsModifiedAndCanTrigger, actionContextStoreSourceInstanceFactory, actionContextStoreSourceMachineFactory, actionContextStoreSourcePipe, anchorTypeForAnchor, asSegueRef, asSegueRefString, authRolesSetContainsAllRolesFrom, authRolesSetContainsAnyRoleFrom, authRolesSetContainsNoRolesFrom, authUserIdentifier, canReadyValue, canTriggerAction, canTriggerActionState, checkNgContentWrapperHasContent, clickableUrlInNewTab, clickableUrlMailTo, clickableUrlTel, dbxActionValueStreamDirective, defaultStorageObjectFactory, enableHasAuthRoleHook, enableHasAuthStateHook, enableIsLoggedInHook, expandClickableAnchorLinkTree, expandClickableAnchorLinkTreeNode, expandClickableAnchorLinkTrees, filterTransitionEvent, filterTransitionSuccess, flattenExpandedClickableAnchorLinkTree, flattenExpandedClickableAnchorLinkTreeToLinks, index as fromDbxAppAuth, index$2 as fromDbxAppContext, goWithRouter, isActionContextDisabled, isActionContextEnabled, isDisabledActionContextState, isIdleActionState, isLatestSuccessfulRoute, isSegueRef, isSegueRefActive, isSegueRefActiveFunction, isSegueRefActiveOnTransitionSuccess, isWorkingActionState, loadingStateForActionContextState, loadingStateTypeForActionContextState, loadingStateTypeForActionState, loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, makeAuthTransitionHook, makeDbxActionContextSourceReference, mapRefStringObsToSegueRefObs, mergeDbxInjectionComponentConfigs, index$1 as onDbxAppAuth, index$3 as onDbxAppContext, onRouterTransitionEventType, onRouterTransitionSuccessEvent, pipeActionStore, provideActionStoreSource, provideDbxAnchor, provideDbxButton, provideDbxInjectionContext, provideFilterSource, provideFilterSourceConnector, provideFilterSourceDirective, provideSecondaryActionStoreSource, redirectBasedOnAuthUserState, redirectForIdentifierParamHook, redirectForUserIdentifierParamHook, refStringToSegueRef, safeDetectChanges, safeMarkForCheck, safeUseCdRef, successTransition, tapDetectChanges, tapSafeMarkForCheck, useActionStore };
5020
5037
  //# sourceMappingURL=dereekb-dbx-core.mjs.map