@lenne.tech/ng-base 15.0.0-beta-2 → 16.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/base-components/base-components.module.d.ts +1 -2
- package/base-components/components/checkbox/checkbox.component.d.ts +1 -1
- package/base-components/components/delete-account/delete-account.component.d.ts +1 -1
- package/base-components/components/fab-button/fab-button.component.d.ts +1 -1
- package/base-components/components/input/input.component.d.ts +1 -1
- package/base-components/components/loading-bar/loading-bar.component.d.ts +1 -1
- package/base-components/components/model-form/model-form-base.component.d.ts +1 -1
- package/base-components/components/model-form/model-form.component.d.ts +1 -1
- package/base-components/components/model-form-sub/model-form-sub.component.d.ts +1 -1
- package/base-components/components/model-table/model-table.component.d.ts +17 -5
- package/base-components/components/refence-input/refence-input.component.d.ts +1 -1
- package/base-components/components/select/select.component.d.ts +1 -1
- package/base-components/components/skeleton-loader/skeleton-loader.component.d.ts +1 -1
- package/base-components/components/tags/tags.component.d.ts +1 -1
- package/base-components/components/textarea/textarea.component.d.ts +1 -1
- package/base-components/components/toast/toast.component.d.ts +1 -1
- package/base-components/components/upload-image/upload-image.component.d.ts +1 -1
- package/base-components/directives/context-menu.directive.d.ts +1 -1
- package/base-components/directives/sort.directive.d.ts +3 -2
- package/base-prototype/pages/login/login.component.d.ts +1 -1
- package/base-prototype/pages/profile/profile.component.d.ts +1 -1
- package/base-prototype/pages/set-password/set-password.component.d.ts +1 -1
- package/esm2022/base-cms/base-cms-routing.module.mjs +33 -0
- package/esm2022/base-cms/base-cms.module.mjs +61 -0
- package/esm2022/base-cms/pages/base-cms/base-cms.component.mjs +233 -0
- package/esm2022/base-components/base-components.module.mjs +123 -0
- package/esm2022/base-components/components/breadcrumb/breadcrumb.component.mjs +21 -0
- package/esm2022/base-components/components/change-password/change-password.component.mjs +96 -0
- package/esm2022/base-components/components/checkbox/checkbox.component.mjs +35 -0
- package/esm2022/base-components/components/delete-account/delete-account.component.mjs +61 -0
- package/esm2022/base-components/components/fab-button/fab-button.component.mjs +21 -0
- package/esm2022/base-components/components/input/input.component.mjs +72 -0
- package/esm2022/base-components/components/loading-bar/loading-bar.component.mjs +39 -0
- package/esm2022/base-components/components/model-form/model-form-base.component.mjs +145 -0
- package/esm2022/base-components/components/model-form/model-form.component.mjs +585 -0
- package/esm2022/base-components/components/model-form-sub/model-form-sub.component.mjs +111 -0
- package/esm2022/base-components/components/model-table/model-table.component.mjs +470 -0
- package/esm2022/base-components/components/refence-input/refence-input.component.mjs +273 -0
- package/esm2022/base-components/components/select/select.component.mjs +59 -0
- package/esm2022/base-components/components/skeleton-loader/skeleton-loader.component.mjs +32 -0
- package/esm2022/base-components/components/tags/tags.component.mjs +224 -0
- package/esm2022/base-components/components/textarea/textarea.component.mjs +76 -0
- package/esm2022/base-components/components/toast/toast.component.mjs +70 -0
- package/esm2022/base-components/components/upload-image/upload-image.component.mjs +343 -0
- package/esm2022/base-components/directives/back-button.directive.mjs +25 -0
- package/esm2022/base-components/directives/context-menu.directive.mjs +112 -0
- package/esm2022/base-components/directives/sort.directive.mjs +61 -0
- package/esm2022/base-components/directives/stop-propagation.directive.mjs +24 -0
- package/esm2022/base-components/pipes/ellipses.pipe.mjs +23 -0
- package/esm2022/base-prototype/base-prototype.module.mjs +54 -0
- package/esm2022/base-prototype/pages/email-verification/email-verification.component.mjs +62 -0
- package/esm2022/base-prototype/pages/forgot-password/forgot-password.component.mjs +75 -0
- package/esm2022/base-prototype/pages/login/login.component.mjs +111 -0
- package/esm2022/base-prototype/pages/profile/profile.component.mjs +86 -0
- package/esm2022/base-prototype/pages/register/register.component.mjs +94 -0
- package/esm2022/base-prototype/pages/set-password/set-password.component.mjs +90 -0
- package/esm2022/shared/classes/auth.class.mjs +14 -0
- package/esm2022/shared/classes/basic-user.class.mjs +49 -0
- package/esm2022/shared/classes/graphql-enum.class.mjs +10 -0
- package/esm2022/shared/classes/graphql-meta.class.mjs +345 -0
- package/esm2022/shared/classes/graphql-type.class.mjs +14 -0
- package/esm2022/shared/classes/sort.class.mjs +38 -0
- package/esm2022/shared/services/auth.service.mjs +153 -0
- package/esm2022/shared/services/breadcrumb.service.mjs +70 -0
- package/{esm2020 → esm2022}/shared/services/cms.service.mjs +7 -5
- package/esm2022/shared/services/file.service.mjs +87 -0
- package/esm2022/shared/services/forms.service.mjs +62 -0
- package/esm2022/shared/services/graphql-meta.service.mjs +133 -0
- package/esm2022/shared/services/graphql-plus.service.mjs +94 -0
- package/esm2022/shared/services/graphql.service.mjs +511 -0
- package/esm2022/shared/services/image.service.mjs +103 -0
- package/esm2022/shared/services/loader.service.mjs +79 -0
- package/esm2022/shared/services/navigation.service.mjs +39 -0
- package/esm2022/shared/services/scroll.service.mjs +208 -0
- package/esm2022/shared/services/storage.service.mjs +142 -0
- package/esm2022/shared/services/toast.service.mjs +40 -0
- package/esm2022/shared/services/user.service.mjs +161 -0
- package/esm2022/shared/services/ws.service.mjs +18 -0
- package/esm2022/src/base.module.mjs +98 -0
- package/esm2022/src/directives/lazy-load.directive.mjs +48 -0
- package/esm2022/src/directives/match-height.directive.mjs +92 -0
- package/esm2022/src/directives/resizable.directive.mjs +92 -0
- package/esm2022/src/factories/apollo-options.factory.mjs +108 -0
- package/esm2022/src/functions/extract-files.function.mjs +87 -0
- package/esm2022/src/guards/auth.guard.mjs +84 -0
- package/esm2022/src/guards/can-deactivate.guard.mjs +17 -0
- package/esm2022/src/guards/logout.guard.mjs +35 -0
- package/esm2022/src/pipes/date-ago.pipe.mjs +64 -0
- package/esm2022/src/pipes/safe-html.pipe.mjs +23 -0
- package/esm2022/src/services/fullscreen.service.mjs +52 -0
- package/esm2022/src/services/seo.service.mjs +100 -0
- package/esm2022/src/services/theme.service.mjs +45 -0
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-cms.mjs +42 -30
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-cms.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-components.mjs +467 -286
- package/fesm2022/lenne.tech-ng-base-base-components.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-prototype.mjs +127 -87
- package/{fesm2015 → fesm2022}/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-shared.mjs +165 -113
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base.mjs +113 -90
- package/fesm2022/lenne.tech-ng-base.mjs.map +1 -0
- package/package.json +27 -42
- package/src/directives/lazy-load.directive.d.ts +1 -1
- package/src/directives/match-height.directive.d.ts +1 -1
- package/src/directives/resizable.directive.d.ts +1 -1
- package/src/guards/auth.guard.d.ts +2 -2
- package/src/guards/can-deactivate.guard.d.ts +1 -2
- package/src/guards/logout.guard.d.ts +2 -2
- package/esm2020/base-cms/base-cms-routing.module.mjs +0 -32
- package/esm2020/base-cms/base-cms.module.mjs +0 -59
- package/esm2020/base-cms/pages/base-cms/base-cms.component.mjs +0 -222
- package/esm2020/base-components/base-components.module.mjs +0 -123
- package/esm2020/base-components/components/breadcrumb/breadcrumb.component.mjs +0 -18
- package/esm2020/base-components/components/change-password/change-password.component.mjs +0 -90
- package/esm2020/base-components/components/checkbox/checkbox.component.mjs +0 -31
- package/esm2020/base-components/components/delete-account/delete-account.component.mjs +0 -56
- package/esm2020/base-components/components/fab-button/fab-button.component.mjs +0 -21
- package/esm2020/base-components/components/input/input.component.mjs +0 -67
- package/esm2020/base-components/components/loading-bar/loading-bar.component.mjs +0 -35
- package/esm2020/base-components/components/model-form/model-form-base.component.mjs +0 -136
- package/esm2020/base-components/components/model-form/model-form.component.mjs +0 -564
- package/esm2020/base-components/components/model-form-sub/model-form-sub.component.mjs +0 -102
- package/esm2020/base-components/components/model-table/model-table.component.mjs +0 -397
- package/esm2020/base-components/components/refence-input/refence-input.component.mjs +0 -261
- package/esm2020/base-components/components/select/select.component.mjs +0 -54
- package/esm2020/base-components/components/skeleton-loader/skeleton-loader.component.mjs +0 -32
- package/esm2020/base-components/components/tags/tags.component.mjs +0 -218
- package/esm2020/base-components/components/textarea/textarea.component.mjs +0 -72
- package/esm2020/base-components/components/toast/toast.component.mjs +0 -68
- package/esm2020/base-components/components/upload-image/upload-image.component.mjs +0 -324
- package/esm2020/base-components/directives/back-button.directive.mjs +0 -23
- package/esm2020/base-components/directives/context-menu.directive.mjs +0 -108
- package/esm2020/base-components/directives/sort.directive.mjs +0 -54
- package/esm2020/base-components/directives/stop-propagation.directive.mjs +0 -23
- package/esm2020/base-components/pipes/ellipses.pipe.mjs +0 -22
- package/esm2020/base-prototype/base-prototype.module.mjs +0 -53
- package/esm2020/base-prototype/pages/email-verification/email-verification.component.mjs +0 -55
- package/esm2020/base-prototype/pages/forgot-password/forgot-password.component.mjs +0 -67
- package/esm2020/base-prototype/pages/login/login.component.mjs +0 -102
- package/esm2020/base-prototype/pages/profile/profile.component.mjs +0 -81
- package/esm2020/base-prototype/pages/register/register.component.mjs +0 -86
- package/esm2020/base-prototype/pages/set-password/set-password.component.mjs +0 -82
- package/esm2020/shared/classes/auth.class.mjs +0 -17
- package/esm2020/shared/classes/basic-user.class.mjs +0 -52
- package/esm2020/shared/classes/graphql-enum.class.mjs +0 -9
- package/esm2020/shared/classes/graphql-meta.class.mjs +0 -344
- package/esm2020/shared/classes/graphql-type.class.mjs +0 -17
- package/esm2020/shared/classes/sort.class.mjs +0 -40
- package/esm2020/shared/services/auth.service.mjs +0 -148
- package/esm2020/shared/services/breadcrumb.service.mjs +0 -68
- package/esm2020/shared/services/file.service.mjs +0 -84
- package/esm2020/shared/services/forms.service.mjs +0 -59
- package/esm2020/shared/services/graphql-meta.service.mjs +0 -123
- package/esm2020/shared/services/graphql-plus.service.mjs +0 -89
- package/esm2020/shared/services/graphql.service.mjs +0 -507
- package/esm2020/shared/services/image.service.mjs +0 -102
- package/esm2020/shared/services/loader.service.mjs +0 -79
- package/esm2020/shared/services/navigation.service.mjs +0 -36
- package/esm2020/shared/services/scroll.service.mjs +0 -179
- package/esm2020/shared/services/storage.service.mjs +0 -140
- package/esm2020/shared/services/toast.service.mjs +0 -41
- package/esm2020/shared/services/user.service.mjs +0 -155
- package/esm2020/shared/services/ws.service.mjs +0 -16
- package/esm2020/src/base.module.mjs +0 -97
- package/esm2020/src/directives/lazy-load.directive.mjs +0 -45
- package/esm2020/src/directives/match-height.directive.mjs +0 -84
- package/esm2020/src/directives/resizable.directive.mjs +0 -90
- package/esm2020/src/factories/apollo-options.factory.mjs +0 -106
- package/esm2020/src/functions/extract-files.function.mjs +0 -84
- package/esm2020/src/guards/auth.guard.mjs +0 -80
- package/esm2020/src/guards/can-deactivate.guard.mjs +0 -16
- package/esm2020/src/guards/logout.guard.mjs +0 -32
- package/esm2020/src/pipes/date-ago.pipe.mjs +0 -65
- package/esm2020/src/pipes/safe-html.pipe.mjs +0 -21
- package/esm2020/src/services/fullscreen.service.mjs +0 -51
- package/esm2020/src/services/seo.service.mjs +0 -97
- package/esm2020/src/services/theme.service.mjs +0 -43
- package/fesm2015/lenne.tech-ng-base-base-cms.mjs +0 -322
- package/fesm2015/lenne.tech-ng-base-base-cms.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +0 -2806
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +0 -495
- package/fesm2015/lenne.tech-ng-base-shared.mjs +0 -2749
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base.mjs +0 -902
- package/fesm2015/lenne.tech-ng-base.mjs.map +0 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +0 -1
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +0 -1
- package/fesm2020/lenne.tech-ng-base.mjs.map +0 -1
- /package/{esm2020 → esm2022}/base-cms/interfaces/base-cms-module-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/base-cms/lenne.tech-ng-base-base-cms.mjs +0 -0
- /package/{esm2020 → esm2022}/base-cms/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/base-components/lenne.tech-ng-base-base-components.mjs +0 -0
- /package/{esm2020 → esm2022}/base-components/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/base-prototype/lenne.tech-ng-base-base-prototype.mjs +0 -0
- /package/{esm2020 → esm2022}/base-prototype/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lenne.tech-ng-base.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/classes/helper.class.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/classes/standard.class.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/decorators/debounce.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/comparison-operator.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/graphql-request-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/logical-operator.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/skeleton-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/sort-order.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/toast-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/functions/ws-client.function.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/base-module-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/breadcrumb.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/can-component-deactivate.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-enum-values.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-field-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-model-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-table-field.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/combined-filter-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/compress-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cropping-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/field-object.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/field.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/filter-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/find-args.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-crud-type.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-fields-object.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-plus-options.interfacen.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-type-collection.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/login-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/single-filter-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/sort-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/time-components.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/toast.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/lenne.tech-ng-base-shared.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/types/graphql-fields.type.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/types/storage.type.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/validators/email.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/validators/match.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/validators/secure-password.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/src/decorators/auto-unsubscribe.decorator.mjs +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Truncate string with ellipses
|
|
5
|
-
*/
|
|
6
|
-
export class EllipsesPipe {
|
|
7
|
-
transform(value, limit) {
|
|
8
|
-
if (!value) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
return value.length > limit ? value.substring(0, limit) + '...' : value;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
EllipsesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: EllipsesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
15
|
-
EllipsesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: EllipsesPipe, name: "baseEllipses" });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: EllipsesPipe, decorators: [{
|
|
17
|
-
type: Pipe,
|
|
18
|
-
args: [{
|
|
19
|
-
name: 'baseEllipses',
|
|
20
|
-
}]
|
|
21
|
-
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL3BpcGVzL2VsbGlwc2VzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFDdkIsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUUsQ0FBQzs7eUdBUFUsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGNBQWM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRydW5jYXRlIHN0cmluZyB3aXRoIGVsbGlwc2VzXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ2Jhc2VFbGxpcHNlcycsXG59KVxuZXhwb3J0IGNsYXNzIEVsbGlwc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxpbWl0ID8gdmFsdWUuc3Vic3RyaW5nKDAsIGxpbWl0KSArICcuLi4nIDogdmFsdWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { RouterModule } from '@angular/router';
|
|
5
|
-
import { BaseModule } from '@lenne.tech/ng-base';
|
|
6
|
-
import { BaseComponentsModule } from '@lenne.tech/ng-base/base-components';
|
|
7
|
-
import { LoginComponent } from './pages/login/login.component';
|
|
8
|
-
import { RegisterComponent } from './pages/register/register.component';
|
|
9
|
-
import { ForgotPasswordComponent } from './pages/forgot-password/forgot-password.component';
|
|
10
|
-
import { ProfileComponent } from './pages/profile/profile.component';
|
|
11
|
-
import { SetPasswordComponent } from './pages/set-password/set-password.component';
|
|
12
|
-
import { EmailVerificationComponent } from './pages/email-verification/email-verification.component';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
// Modules
|
|
15
|
-
const imports = [BaseModule, FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule];
|
|
16
|
-
// Imported and exported elements
|
|
17
|
-
const elements = [
|
|
18
|
-
// Components
|
|
19
|
-
LoginComponent,
|
|
20
|
-
RegisterComponent,
|
|
21
|
-
ForgotPasswordComponent,
|
|
22
|
-
ProfileComponent,
|
|
23
|
-
SetPasswordComponent,
|
|
24
|
-
EmailVerificationComponent,
|
|
25
|
-
];
|
|
26
|
-
export class BasePrototypeModule {
|
|
27
|
-
}
|
|
28
|
-
BasePrototypeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BasePrototypeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
29
|
-
BasePrototypeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: BasePrototypeModule, declarations: [
|
|
30
|
-
// Components
|
|
31
|
-
LoginComponent,
|
|
32
|
-
RegisterComponent,
|
|
33
|
-
ForgotPasswordComponent,
|
|
34
|
-
ProfileComponent,
|
|
35
|
-
SetPasswordComponent,
|
|
36
|
-
EmailVerificationComponent], imports: [BaseModule, FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule], exports: [
|
|
37
|
-
// Components
|
|
38
|
-
LoginComponent,
|
|
39
|
-
RegisterComponent,
|
|
40
|
-
ForgotPasswordComponent,
|
|
41
|
-
ProfileComponent,
|
|
42
|
-
SetPasswordComponent,
|
|
43
|
-
EmailVerificationComponent] });
|
|
44
|
-
BasePrototypeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BasePrototypeModule, imports: [imports] });
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BasePrototypeModule, decorators: [{
|
|
46
|
-
type: NgModule,
|
|
47
|
-
args: [{
|
|
48
|
-
declarations: elements,
|
|
49
|
-
imports,
|
|
50
|
-
exports: elements,
|
|
51
|
-
}]
|
|
52
|
-
}] });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm90b3R5cGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLXByb3RvdHlwZS9iYXNlLXByb3RvdHlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOztBQUVyRyxVQUFVO0FBQ1YsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUVqSCxpQ0FBaUM7QUFDakMsTUFBTSxRQUFRLEdBQUc7SUFDZixhQUFhO0lBQ2IsY0FBYztJQUNkLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQiwwQkFBMEI7Q0FDM0IsQ0FBQztBQU9GLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQjtRQWQ5QixhQUFhO1FBQ2IsY0FBYztRQUNkLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQiwwQkFBMEIsYUFWWCxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsb0JBQW9CO1FBSTdHLGFBQWE7UUFDYixjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2QixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLDBCQUEwQjtpSEFRZixtQkFBbUIsWUFIOUIsT0FBTzsyRkFHSSxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLFFBQVE7b0JBQ3RCLE9BQU87b0JBQ1AsT0FBTyxFQUFFLFFBQVE7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEJhc2VNb2R1bGUgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvbG9naW4vbG9naW4uY29tcG9uZW50JztcbmltcG9ydCB7IFJlZ2lzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9yZWdpc3Rlci9yZWdpc3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9yZ290UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2ZpbGVDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2V0UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3NldC1wYXNzd29yZC9zZXQtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEVtYWlsVmVyaWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9lbWFpbC12ZXJpZmljYXRpb24vZW1haWwtdmVyaWZpY2F0aW9uLmNvbXBvbmVudCc7XG5cbi8vIE1vZHVsZXNcbmNvbnN0IGltcG9ydHMgPSBbQmFzZU1vZHVsZSwgRm9ybXNNb2R1bGUsIFJvdXRlck1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlLCBCYXNlQ29tcG9uZW50c01vZHVsZV07XG5cbi8vIEltcG9ydGVkIGFuZCBleHBvcnRlZCBlbGVtZW50c1xuY29uc3QgZWxlbWVudHMgPSBbXG4gIC8vIENvbXBvbmVudHNcbiAgTG9naW5Db21wb25lbnQsXG4gIFJlZ2lzdGVyQ29tcG9uZW50LFxuICBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCxcbiAgUHJvZmlsZUNvbXBvbmVudCxcbiAgU2V0UGFzc3dvcmRDb21wb25lbnQsXG4gIEVtYWlsVmVyaWZpY2F0aW9uQ29tcG9uZW50LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBlbGVtZW50cyxcbiAgaW1wb3J0cyxcbiAgZXhwb3J0czogZWxlbWVudHMsXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VQcm90b3R5cGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { ToastType } from '@lenne.tech/ng-base/shared';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/router";
|
|
5
|
-
import * as i2 from "@lenne.tech/ng-base/shared";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
export class EmailVerificationComponent {
|
|
8
|
-
constructor(route, userService, toastService, router) {
|
|
9
|
-
this.route = route;
|
|
10
|
-
this.userService = userService;
|
|
11
|
-
this.toastService = toastService;
|
|
12
|
-
this.router = router;
|
|
13
|
-
this.loading = false;
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
this.token = this.route.snapshot.params?.token;
|
|
17
|
-
if (!this.token) {
|
|
18
|
-
this.mode = 'ERROR';
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
this.verifyUser();
|
|
22
|
-
}
|
|
23
|
-
verifyUser() {
|
|
24
|
-
this.userService.verifyUser(this.token).subscribe({
|
|
25
|
-
next: (response) => {
|
|
26
|
-
if (response) {
|
|
27
|
-
this.toastService.show({
|
|
28
|
-
id: 'email-verification-success',
|
|
29
|
-
title: 'Erfolgreich',
|
|
30
|
-
description: 'Du hast deine E-Mail erfolgreich verifiziert.',
|
|
31
|
-
type: ToastType.SUCCESS,
|
|
32
|
-
});
|
|
33
|
-
this.mode = 'SUCCESS';
|
|
34
|
-
setTimeout(() => {
|
|
35
|
-
this.router.navigate(['/']);
|
|
36
|
-
}, 3000);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
this.mode = 'ERROR';
|
|
40
|
-
}
|
|
41
|
-
this.loading = false;
|
|
42
|
-
},
|
|
43
|
-
error: () => {
|
|
44
|
-
this.mode = 'ERROR';
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
EmailVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: EmailVerificationComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.UserService }, { token: i2.ToastService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
EmailVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: EmailVerificationComponent, selector: "base-email-verification", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column verification-container\">\n <div class=\"container text-center\">\n <h2 class=\"mb-4\">E-Mail best\u00E4tigen</h2>\n\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"mode === 'ERROR'\">\n Etwas ist schiefgelaufen und wir konnten Deine E-Mail leider nicht verifizieren. Bitte probiere es sp\u00E4ter erneut\n oder wende dich an den Support.\n </div>\n\n <div class=\"alert alert-success\" role=\"alert\" *ngIf=\"mode === 'SUCCESS'\">\n Deine E-Mail wurde erfolgreich verifiziert. Du wirst nun weitergeleitet.\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center\" *ngIf=\"loading\">\n <div class=\"spinner-border text-secondary\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".verification-container{width:100%;padding:20px 0}@media (min-width: 768px){.verification-container{max-width:500px}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: EmailVerificationComponent, decorators: [{
|
|
52
|
-
type: Component,
|
|
53
|
-
args: [{ selector: 'base-email-verification', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column verification-container\">\n <div class=\"container text-center\">\n <h2 class=\"mb-4\">E-Mail best\u00E4tigen</h2>\n\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"mode === 'ERROR'\">\n Etwas ist schiefgelaufen und wir konnten Deine E-Mail leider nicht verifizieren. Bitte probiere es sp\u00E4ter erneut\n oder wende dich an den Support.\n </div>\n\n <div class=\"alert alert-success\" role=\"alert\" *ngIf=\"mode === 'SUCCESS'\">\n Deine E-Mail wurde erfolgreich verifiziert. Du wirst nun weitergeleitet.\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center\" *ngIf=\"loading\">\n <div class=\"spinner-border text-secondary\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".verification-container{width:100%;padding:20px 0}@media (min-width: 768px){.verification-container{max-width:500px}}\n"] }]
|
|
54
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.UserService }, { type: i2.ToastService }, { type: i1.Router }]; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1wcm90b3R5cGUvcGFnZXMvZW1haWwtdmVyaWZpY2F0aW9uL2VtYWlsLXZlcmlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL2VtYWlsLXZlcmlmaWNhdGlvbi9lbWFpbC12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQWdCLFNBQVMsRUFBZSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQU9sRixNQUFNLE9BQU8sMEJBQTBCO0lBS3JDLFlBQ1UsS0FBcUIsRUFDckIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsTUFBYztRQUhkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOeEIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQU9iLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBRS9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDcEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNoRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEVBQUUsRUFBRSw0QkFBNEI7d0JBQ2hDLEtBQUssRUFBRSxhQUFhO3dCQUNwQixXQUFXLEVBQUUsK0NBQStDO3dCQUM1RCxJQUFJLEVBQUUsU0FBUyxDQUFDLE9BQU87cUJBQ3hCLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztvQkFFdEIsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDVjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztpQkFDckI7Z0JBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQWpEVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwrRENUdkMsODhCQXNCQTsyRkRiYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYXNlLWVtYWlsLXZlcmlmaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbWFpbC12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbWFpbC12ZXJpZmljYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRW1haWxWZXJpZmljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB0b2tlbjogc3RyaW5nO1xuICBtb2RlOiAnRVJST1InIHwgJ1NVQ0NFU1MnO1xuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXM/LnRva2VuO1xuXG4gICAgaWYgKCF0aGlzLnRva2VuKSB7XG4gICAgICB0aGlzLm1vZGUgPSAnRVJST1InO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudmVyaWZ5VXNlcigpO1xuICB9XG5cbiAgdmVyaWZ5VXNlcigpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnZlcmlmeVVzZXIodGhpcy50b2tlbikuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgIGlkOiAnZW1haWwtdmVyaWZpY2F0aW9uLXN1Y2Nlc3MnLFxuICAgICAgICAgICAgdGl0bGU6ICdFcmZvbGdyZWljaCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0R1IGhhc3QgZGVpbmUgRS1NYWlsIGVyZm9sZ3JlaWNoIHZlcmlmaXppZXJ0LicsXG4gICAgICAgICAgICB0eXBlOiBUb2FzdFR5cGUuU1VDQ0VTUyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMubW9kZSA9ICdTVUNDRVNTJztcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9kZSA9ICdFUlJPUic7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGUgPSAnRVJST1InO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBoLTEwMCBweS01XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gdmVyaWZpY2F0aW9uLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxoMiBjbGFzcz1cIm1iLTRcIj5FLU1haWwgYmVzdMOkdGlnZW48L2gyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCIgKm5nSWY9XCJtb2RlID09PSAnRVJST1InXCI+XG4gICAgICAgIEV0d2FzIGlzdCBzY2hpZWZnZWxhdWZlbiB1bmQgd2lyIGtvbm50ZW4gRGVpbmUgRS1NYWlsIGxlaWRlciBuaWNodCB2ZXJpZml6aWVyZW4uIEJpdHRlIHByb2JpZXJlIGVzIHNww6R0ZXIgZXJuZXV0XG4gICAgICAgIG9kZXIgd2VuZGUgZGljaCBhbiBkZW4gU3VwcG9ydC5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtc3VjY2Vzc1wiIHJvbGU9XCJhbGVydFwiICpuZ0lmPVwibW9kZSA9PT0gJ1NVQ0NFU1MnXCI+XG4gICAgICAgIERlaW5lIEUtTWFpbCB3dXJkZSBlcmZvbGdyZWljaCB2ZXJpZml6aWVydC4gRHUgd2lyc3QgbnVuIHdlaXRlcmdlbGVpdGV0LlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtc2Vjb25kYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
|
|
3
|
-
import { fullEmail, ToastType } from '@lenne.tech/ng-base/shared';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
6
|
-
import * as i2 from "@angular/router";
|
|
7
|
-
import * as i3 from "@angular/forms";
|
|
8
|
-
import * as i4 from "@angular/common";
|
|
9
|
-
import * as i5 from "@lenne.tech/ng-base/base-components";
|
|
10
|
-
export class ForgotPasswordComponent {
|
|
11
|
-
constructor(formsService, userService, router, toastService) {
|
|
12
|
-
this.formsService = formsService;
|
|
13
|
-
this.userService = userService;
|
|
14
|
-
this.router = router;
|
|
15
|
-
this.toastService = toastService;
|
|
16
|
-
}
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
this.createForm();
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Create login form
|
|
22
|
-
*/
|
|
23
|
-
createForm() {
|
|
24
|
-
this.form = new UntypedFormGroup({
|
|
25
|
-
email: new UntypedFormControl('', [Validators.required, fullEmail()]),
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Submit form
|
|
30
|
-
*/
|
|
31
|
-
submit() {
|
|
32
|
-
this.loading = true;
|
|
33
|
-
if (this.form.invalid) {
|
|
34
|
-
this.formsService.validateAllFormFields(this.form);
|
|
35
|
-
this.loading = false;
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
this.userService.requestPasswordResetMail(this.form.get('email').value).subscribe({
|
|
39
|
-
next: (response) => {
|
|
40
|
-
if (response) {
|
|
41
|
-
this.toastService.show({
|
|
42
|
-
id: 'password-forgot-success',
|
|
43
|
-
title: 'Erfolgreich',
|
|
44
|
-
description: 'Wir haben Dir eine E-Mail geschickt. Bitte überprüfe Dein Postfach.',
|
|
45
|
-
type: ToastType.SUCCESS,
|
|
46
|
-
});
|
|
47
|
-
this.router.navigate(['/']);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
51
|
-
}
|
|
52
|
-
this.loading = false;
|
|
53
|
-
},
|
|
54
|
-
error: () => {
|
|
55
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
56
|
-
this.loading = false;
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }, { token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
-
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: ForgotPasswordComponent, selector: "base-forgot-password", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column forgot-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [autocomplete]=\"'email'\"\n [control]=\"form.get('email')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">E-Mail senden</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../login\">Bereits ein Konto? Dann logge Dich hier ein!</a>\n <a routerLink=\"../registrieren\">Noch kein Konto? Dann registriere Dich jetzt!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".forgot-container{width:100%;padding:20px 0}@media (min-width: 768px){.forgot-container{max-width:400px}}\n"], dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.InputComponent, selector: "base-input", inputs: ["id", "name", "infoText", "label", "placeholder", "autocomplete", "tabIndex", "control", "type", "required", "eyeButton", "objectPath"], outputs: ["enter"] }] });
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
64
|
-
type: Component,
|
|
65
|
-
args: [{ selector: 'base-forgot-password', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column forgot-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [autocomplete]=\"'email'\"\n [control]=\"form.get('email')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">E-Mail senden</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../login\">Bereits ein Konto? Dann logge Dich hier ein!</a>\n <a routerLink=\"../registrieren\">Noch kein Konto? Dann registriere Dich jetzt!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".forgot-container{width:100%;padding:20px 0}@media (min-width: 768px){.forgot-container{max-width:400px}}\n"] }]
|
|
66
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }, { type: i1.ToastService }]; } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1wcm90b3R5cGUvcGFnZXMvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFnQixTQUFTLEVBQWdCLFNBQVMsRUFBZSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBUTNHLE1BQU0sT0FBTyx1QkFBdUI7SUFLbEMsWUFDVSxZQUEwQixFQUMxQixXQUF3QixFQUN4QixNQUFjLEVBQ2QsWUFBMEI7UUFIMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQ2pDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZ0JBQWdCLENBQUM7WUFDL0IsS0FBSyxFQUFFLElBQUksa0JBQWtCLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hGLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLFFBQVEsRUFBRTtvQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDckIsRUFBRSxFQUFFLHlCQUF5Qjt3QkFDN0IsS0FBSyxFQUFFLGFBQWE7d0JBQ3BCLFdBQVcsRUFBRSxxRUFBcUU7d0JBQ2xGLElBQUksRUFBRSxTQUFTLENBQUMsT0FBTztxQkFDeEIsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDN0I7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyw0REFBNEQsQ0FBQztpQkFDM0U7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyw0REFBNEQsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O29IQTFEVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw0RENWcEMsNHNDQTZCQTsyRkRuQmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3Jtc1NlcnZpY2UsIGZ1bGxFbWFpbCwgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS1mb3Jnb3QtcGFzc3dvcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgZXJyb3I6IHN0cmluZztcbiAgbG9hZGluZzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1zU2VydmljZTogRm9ybXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGxvZ2luIGZvcm1cbiAgICovXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgdGhpcy5mb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZW1haWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBmdWxsRW1haWwoKV0pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBmb3JtXG4gICAqL1xuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3Jtc1NlcnZpY2UudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuZm9ybSk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnJlcXVlc3RQYXNzd29yZFJlc2V0TWFpbCh0aGlzLmZvcm0uZ2V0KCdlbWFpbCcpLnZhbHVlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgaWQ6ICdwYXNzd29yZC1mb3Jnb3Qtc3VjY2VzcycsXG4gICAgICAgICAgICB0aXRsZTogJ0VyZm9sZ3JlaWNoJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnV2lyIGhhYmVuIERpciBlaW5lIEUtTWFpbCBnZXNjaGlja3QuIEJpdHRlIMO8YmVycHLDvGZlIERlaW4gUG9zdGZhY2guJyxcbiAgICAgICAgICAgIHR5cGU6IFRvYXN0VHlwZS5TVUNDRVNTLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSAnRXR3YXMgaXN0IHNjaGllZmdlbGF1ZmVuLiBCaXR0ZSBwcm9iaWVyZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSAnRXR3YXMgaXN0IHNjaGllZmdlbGF1ZmVuLiBCaXR0ZSBwcm9iaWVyZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAgcHktNVwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZvcmdvdC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiIHJvbGU9XCJhbGVydFwiICpuZ0lmPVwiZXJyb3JcIj5cbiAgICAgICAgICB7eyBlcnJvciB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJhc2UtaW5wdXRcbiAgICAgICAgICBbaWRdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgW25hbWVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgW2xhYmVsXT1cIidFLU1haWwgQWRyZXNzZSdcIlxuICAgICAgICAgIFt0eXBlXT1cIidlbWFpbCdcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ2VtYWlsJylcIlxuICAgICAgICA+PC9iYXNlLWlucHV0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ncmlkIGdhcC0yIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5FLU1haWwgc2VuZGVuPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBkaXNhYmxlZCAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxociAvPlxuICAgICAgICAgIDxhIHJvdXRlckxpbms9XCIuLi9sb2dpblwiPkJlcmVpdHMgZWluIEtvbnRvPyBEYW5uIGxvZ2dlIERpY2ggaGllciBlaW4hPC9hPlxuICAgICAgICAgIDxhIHJvdXRlckxpbms9XCIuLi9yZWdpc3RyaWVyZW5cIj5Ob2NoIGtlaW4gS29udG8/IERhbm4gcmVnaXN0cmllcmUgRGljaCBqZXR6dCE8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
|
|
3
|
-
import { fullEmail } from '@lenne.tech/ng-base/shared';
|
|
4
|
-
import { Subscription } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
7
|
-
import * as i2 from "@angular/router";
|
|
8
|
-
import * as i3 from "@angular/forms";
|
|
9
|
-
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "@lenne.tech/ng-base/base-components";
|
|
11
|
-
export class LoginComponent {
|
|
12
|
-
constructor(formsService, userService, router, route) {
|
|
13
|
-
this.formsService = formsService;
|
|
14
|
-
this.userService = userService;
|
|
15
|
-
this.router = router;
|
|
16
|
-
this.route = route;
|
|
17
|
-
this.config = {};
|
|
18
|
-
this.subscription = new Subscription();
|
|
19
|
-
this.loginConfig = {
|
|
20
|
-
redirectUrl: '/main',
|
|
21
|
-
showPasswordForget: true,
|
|
22
|
-
showRegister: true,
|
|
23
|
-
logoUrl: '',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
ngOnInit() {
|
|
27
|
-
this.loginConfig = { ...this.loginConfig, ...this.config };
|
|
28
|
-
this.createForm();
|
|
29
|
-
this.subscription.add(this.route.data.subscribe((data) => {
|
|
30
|
-
// Merge config from route to component
|
|
31
|
-
if (data?.config) {
|
|
32
|
-
this.loginConfig = { ...this.loginConfig, ...data.config };
|
|
33
|
-
}
|
|
34
|
-
}));
|
|
35
|
-
this.subscription.add(this.route.queryParams.subscribe((params) => {
|
|
36
|
-
this.redirectUrl = params.redirectUrl;
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
ngOnDestroy() {
|
|
40
|
-
this.subscription.unsubscribe();
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Create login form
|
|
44
|
-
*/
|
|
45
|
-
createForm() {
|
|
46
|
-
this.form = new UntypedFormGroup({
|
|
47
|
-
email: new UntypedFormControl('', [Validators.required, fullEmail()]),
|
|
48
|
-
password: new UntypedFormControl('', Validators.required),
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Submit login form
|
|
53
|
-
*/
|
|
54
|
-
submit() {
|
|
55
|
-
this.error = '';
|
|
56
|
-
this.loading = true;
|
|
57
|
-
if (this.form.invalid) {
|
|
58
|
-
this.formsService.validateAllFormFields(this.form);
|
|
59
|
-
this.scrollToTop();
|
|
60
|
-
this.loading = false;
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.userService.login(this.form.value).subscribe({
|
|
64
|
-
next: (response) => {
|
|
65
|
-
if (response) {
|
|
66
|
-
this.router.navigate([this.redirectUrl ? this.redirectUrl : this.loginConfig.redirectUrl]);
|
|
67
|
-
this.form.reset();
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
71
|
-
this.scrollToTop();
|
|
72
|
-
}
|
|
73
|
-
this.loading = false;
|
|
74
|
-
},
|
|
75
|
-
error: (error) => {
|
|
76
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
77
|
-
// Wrong password
|
|
78
|
-
if (error?.message?.includes('Unauthorized')) {
|
|
79
|
-
this.error = 'Dein Passwort ist leider falsch. Bitte überprüfe deine Eingabe!';
|
|
80
|
-
}
|
|
81
|
-
// User not found
|
|
82
|
-
if (error?.message?.includes('No user found')) {
|
|
83
|
-
this.error = 'Es konnte kein Konto mit der E-Mail gefunden werden. Bitte gib eine gültige E-Mail ein!';
|
|
84
|
-
}
|
|
85
|
-
this.scrollToTop();
|
|
86
|
-
this.loading = false;
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
scrollToTop() {
|
|
91
|
-
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: LoginComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
-
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: LoginComponent, selector: "base-login", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column login-container\">\n <div class=\"container\">\n <img *ngIf=\"loginConfig?.logoUrl\" class=\"img-fluid mb-5\" [src]=\"loginConfig.logoUrl\" alt=\"Logo\" />\n\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [control]=\"form.get('email')\"\n [autocomplete]=\"'email'\"\n ></base-input>\n <base-input\n [id]=\"'password'\"\n [name]=\"'password'\"\n [label]=\"'Passwort'\"\n [type]=\"'password'\"\n [eyeButton]=\"true\"\n [autocomplete]=\"'current-password'\"\n [control]=\"form.get('password')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Einloggen</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../passwort-vergessen\" *ngIf=\"loginConfig?.showPasswordForget\">Passwort vergessen</a>\n <a routerLink=\"../registrieren\" [queryParams]=\"{redirectUrl}\" *ngIf=\"loginConfig?.showRegister\"\n >Noch kein Konto? Dann registriere Dich jetzt!</a\n >\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".login-container{width:100%;padding:20px 0}@media (min-width: 768px){.login-container{max-width:400px}}\n"], dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.InputComponent, selector: "base-input", inputs: ["id", "name", "infoText", "label", "placeholder", "autocomplete", "tabIndex", "control", "type", "required", "eyeButton", "objectPath"], outputs: ["enter"] }] });
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: LoginComponent, decorators: [{
|
|
97
|
-
type: Component,
|
|
98
|
-
args: [{ selector: 'base-login', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column login-container\">\n <div class=\"container\">\n <img *ngIf=\"loginConfig?.logoUrl\" class=\"img-fluid mb-5\" [src]=\"loginConfig.logoUrl\" alt=\"Logo\" />\n\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [control]=\"form.get('email')\"\n [autocomplete]=\"'email'\"\n ></base-input>\n <base-input\n [id]=\"'password'\"\n [name]=\"'password'\"\n [label]=\"'Passwort'\"\n [type]=\"'password'\"\n [eyeButton]=\"true\"\n [autocomplete]=\"'current-password'\"\n [control]=\"form.get('password')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Einloggen</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../passwort-vergessen\" *ngIf=\"loginConfig?.showPasswordForget\">Passwort vergessen</a>\n <a routerLink=\"../registrieren\" [queryParams]=\"{redirectUrl}\" *ngIf=\"loginConfig?.showRegister\"\n >Noch kein Konto? Dann registriere Dich jetzt!</a\n >\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".login-container{width:100%;padding:20px 0}@media (min-width: 768px){.login-container{max-width:400px}}\n"] }]
|
|
99
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { config: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLXByb3RvdHlwZS9wYWdlcy9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFnQixTQUFTLEVBQTRCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQU9wQyxNQUFNLE9BQU8sY0FBYztJQWV6QixZQUNVLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxLQUFxQjtRQUhyQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFsQnRCLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO1FBS2xDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFnQjtZQUN6QixXQUFXLEVBQUUsT0FBTztZQUNwQixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztJQVFDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFB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QUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLHlGQUF5RixDQUFDO2lCQUN4RztnQkFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7OzJHQXZHVSxjQUFjOytGQUFkLGNBQWMsZ0ZDWDNCLHF1REEwQ0E7MkZEL0JhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsWUFBWTsrS0FLYixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3Jtc1NlcnZpY2UsIGZ1bGxFbWFpbCwgTG9naW5Db25maWcsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY29uZmlnOiBMb2dpbkNvbmZpZyA9IHt9O1xuXG4gIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGVycm9yOiBzdHJpbmc7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgbG9naW5Db25maWc6IExvZ2luQ29uZmlnID0ge1xuICAgIHJlZGlyZWN0VXJsOiAnL21haW4nLFxuICAgIHNob3dQYXNzd29yZEZvcmdldDogdHJ1ZSxcbiAgICBzaG93UmVnaXN0ZXI6IHRydWUsXG4gICAgbG9nb1VybDogJycsXG4gIH07XG4gIHJlZGlyZWN0VXJsOiAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1zU2VydmljZTogRm9ybXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9naW5Db25maWcgPSB7IC4uLnRoaXMubG9naW5Db25maWcsIC4uLnRoaXMuY29uZmlnIH07XG5cbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgLy8gTWVyZ2UgY29uZmlnIGZyb20gcm91dGUgdG8gY29tcG9uZW50XG4gICAgICAgIGlmIChkYXRhPy5jb25maWcpIHtcbiAgICAgICAgICB0aGlzLmxvZ2luQ29uZmlnID0geyAuLi50aGlzLmxvZ2luQ29uZmlnLCAuLi5kYXRhLmNvbmZpZyB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSBwYXJhbXMucmVkaXJlY3RVcmw7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBsb2dpbiBmb3JtXG4gICAqL1xuICBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgIGVtYWlsOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgZnVsbEVtYWlsKCldKSxcbiAgICAgIHBhc3N3b3JkOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgbG9naW4gZm9ybVxuICAgKi9cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm1zU2VydmljZS52YWxpZGF0ZUFsbEZvcm1GaWVsZHModGhpcy5mb3JtKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXNlclNlcnZpY2UubG9naW4odGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJlZGlyZWN0VXJsID8gdGhpcy5yZWRpcmVjdFVybCA6IHRoaXMubG9naW5Db25maWcucmVkaXJlY3RVcmxdKTtcbiAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gJ0V0d2FzIGlzdCBzY2hpZWZnZWxhdWZlbi4gQml0dGUgcHJvYmllcmUgZXMgc3DDpHRlciBlcm5ldXQuJztcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmVycm9yID0gJ0V0d2FzIGlzdCBzY2hpZWZnZWxhdWZlbi4gQml0dGUgcHJvYmllcmUgZXMgc3DDpHRlciBlcm5ldXQuJztcblxuICAgICAgICAvLyBXcm9uZyBwYXNzd29yZFxuICAgICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdVbmF1dGhvcml6ZWQnKSkge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSAnRGVpbiBQYXNzd29ydCBpc3QgbGVpZGVyIGZhbHNjaC4gQml0dGUgw7xiZXJwcsO8ZmUgZGVpbmUgRWluZ2FiZSEnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlciBub3QgZm91bmRcbiAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnTm8gdXNlciBmb3VuZCcpKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9ICdFcyBrb25udGUga2VpbiBLb250byBtaXQgZGVyIEUtTWFpbCBnZWZ1bmRlbiB3ZXJkZW4uIEJpdHRlIGdpYiBlaW5lIGfDvGx0aWdlIEUtTWFpbCBlaW4hJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAgcHktNVwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGxvZ2luLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxpbWcgKm5nSWY9XCJsb2dpbkNvbmZpZz8ubG9nb1VybFwiIGNsYXNzPVwiaW1nLWZsdWlkIG1iLTVcIiBbc3JjXT1cImxvZ2luQ29uZmlnLmxvZ29VcmxcIiBhbHQ9XCJMb2dvXCIgLz5cblxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiByb2xlPVwiYWxlcnRcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgICAge3sgZXJyb3IgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxiYXNlLWlucHV0XG4gICAgICAgICAgW2lkXT1cIidlbWFpbCdcIlxuICAgICAgICAgIFtuYW1lXT1cIidlbWFpbCdcIlxuICAgICAgICAgIFtsYWJlbF09XCInRS1NYWlsIEFkcmVzc2UnXCJcbiAgICAgICAgICBbdHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgICBbY29udHJvbF09XCJmb3JtLmdldCgnZW1haWwnKVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInZW1haWwnXCJcbiAgICAgICAgPjwvYmFzZS1pbnB1dD5cbiAgICAgICAgPGJhc2UtaW5wdXRcbiAgICAgICAgICBbaWRdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICAgICAgW25hbWVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICAgICAgW2xhYmVsXT1cIidQYXNzd29ydCdcIlxuICAgICAgICAgIFt0eXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgIFtleWVCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInY3VycmVudC1wYXNzd29yZCdcIlxuICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uZ2V0KCdwYXNzd29yZCcpXCJcbiAgICAgICAgPjwvYmFzZS1pbnB1dD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZ3JpZCBnYXAtMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0KClcIiAqbmdJZj1cIiFsb2FkaW5nXCI+RWlubG9nZ2VuPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBkaXNhYmxlZCAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxociAvPlxuICAgICAgICAgIDxhIHJvdXRlckxpbms9XCIuLi9wYXNzd29ydC12ZXJnZXNzZW5cIiAqbmdJZj1cImxvZ2luQ29uZmlnPy5zaG93UGFzc3dvcmRGb3JnZXRcIj5QYXNzd29ydCB2ZXJnZXNzZW48L2E+XG4gICAgICAgICAgPGEgcm91dGVyTGluaz1cIi4uL3JlZ2lzdHJpZXJlblwiIFtxdWVyeVBhcmFtc109XCJ7cmVkaXJlY3RVcmx9XCIgKm5nSWY9XCJsb2dpbkNvbmZpZz8uc2hvd1JlZ2lzdGVyXCJcbiAgICAgICAgICAgID5Ob2NoIGtlaW4gS29udG8/IERhbm4gcmVnaXN0cmllcmUgRGljaCBqZXR6dCE8L2FcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
4
|
-
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "@lenne.tech/ng-base/base-components";
|
|
6
|
-
export class ProfileComponent {
|
|
7
|
-
constructor(authService, route, userService) {
|
|
8
|
-
this.authService = authService;
|
|
9
|
-
this.route = route;
|
|
10
|
-
this.userService = userService;
|
|
11
|
-
this.config = {};
|
|
12
|
-
this.profileConfig = {
|
|
13
|
-
avatar: {
|
|
14
|
-
label: 'Profilbild',
|
|
15
|
-
placeholder: '',
|
|
16
|
-
croppingImage: true,
|
|
17
|
-
croppingOptions: {
|
|
18
|
-
aspectRatio: 1 / 1,
|
|
19
|
-
format: 'png',
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
email: {
|
|
23
|
-
label: 'E-Mail',
|
|
24
|
-
placeholder: '',
|
|
25
|
-
},
|
|
26
|
-
firstName: {
|
|
27
|
-
label: 'Vorname',
|
|
28
|
-
placeholder: '',
|
|
29
|
-
},
|
|
30
|
-
lastName: {
|
|
31
|
-
label: 'Nachname',
|
|
32
|
-
placeholder: '',
|
|
33
|
-
},
|
|
34
|
-
roles: {
|
|
35
|
-
label: '',
|
|
36
|
-
exclude: true,
|
|
37
|
-
roles: ['admin'],
|
|
38
|
-
},
|
|
39
|
-
username: {
|
|
40
|
-
label: 'Benutzername',
|
|
41
|
-
placeholder: '',
|
|
42
|
-
},
|
|
43
|
-
password: {
|
|
44
|
-
label: '',
|
|
45
|
-
exclude: true,
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
this.currentUser = authService.currentUser;
|
|
49
|
-
}
|
|
50
|
-
ngOnInit() {
|
|
51
|
-
this.profileConfig = { ...this.profileConfig, ...this.config };
|
|
52
|
-
this.route.data.subscribe((data) => {
|
|
53
|
-
// Merge config from route to component
|
|
54
|
-
if (data) {
|
|
55
|
-
this.profileConfig = { ...this.profileConfig, ...data };
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* It gets the current user from the database and updates the current user in the session
|
|
61
|
-
*/
|
|
62
|
-
updateSessionUser() {
|
|
63
|
-
if (!this.authService.currentUser) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this.userService.get(this.authService.currentUser.id).subscribe((user) => {
|
|
67
|
-
if (user) {
|
|
68
|
-
this.authService.currentUser = user;
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
ProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ProfileComponent, deps: [{ token: i1.AuthService }, { token: i2.ActivatedRoute }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
-
ProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: ProfileComponent, selector: "base-profile", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"container\">\n <div class=\"py-5\">\n <base-model-form\n [id]=\"currentUser?.id\"\n [modelName]=\"'user'\"\n [label]=\"'Mein Profil'\"\n [config]=\"profileConfig || {}\"\n [delete]=\"false\"\n (finished)=\"updateSessionUser()\"\n ></base-model-form>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i3.ModelFormComponent, selector: "base-model-form", inputs: ["modelName", "label", "id", "delete", "onlyUpdateMode", "duplicate", "logging", "config", "showFavButton"], outputs: ["finished"] }] });
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ProfileComponent, decorators: [{
|
|
76
|
-
type: Component,
|
|
77
|
-
args: [{ selector: 'base-profile', template: "<div class=\"container\">\n <div class=\"py-5\">\n <base-model-form\n [id]=\"currentUser?.id\"\n [modelName]=\"'user'\"\n [label]=\"'Mein Profil'\"\n [config]=\"profileConfig || {}\"\n [delete]=\"false\"\n (finished)=\"updateSessionUser()\"\n ></base-model-form>\n </div>\n</div>\n" }]
|
|
78
|
-
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.ActivatedRoute }, { type: i1.UserService }]; }, propDecorators: { config: [{
|
|
79
|
-
type: Input
|
|
80
|
-
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTekQsTUFBTSxPQUFPLGdCQUFnQjtJQXlDM0IsWUFBb0IsV0FBd0IsRUFBVSxLQUFxQixFQUFVLFdBQXdCO1FBQXpGLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXhDcEcsV0FBTSxHQUFzQyxFQUFFLENBQUM7UUFDeEQsa0JBQWEsR0FBc0M7WUFDakQsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxZQUFZO2dCQUNuQixXQUFXLEVBQUUsRUFBRTtnQkFDZixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsZUFBZSxFQUFFO29CQUNmLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDbEIsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7YUFDRjtZQUNELEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUUsUUFBUTtnQkFDZixXQUFXLEVBQUUsRUFBRTthQUNoQjtZQUNELFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsV0FBVyxFQUFFLEVBQUU7YUFDaEI7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLFdBQVcsRUFBRSxFQUFFO2FBQ2hCO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxFQUFFO2dCQUNULE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNqQjtZQUNELFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsY0FBYztnQkFDckIsV0FBVyxFQUFFLEVBQUU7YUFDaEI7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFLElBQUk7YUFDZDtTQUNGLENBQUM7UUFLQSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pDLHVDQUF1QztZQUN2QyxJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7YUFDekQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtZQUNqQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RSxJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzZHQXBFVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixrRkNUN0IsaVVBWUE7MkZESGEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7eUpBS2YsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQmFzaWNVc2VyLCBDTVNGaWVsZENvbmZpZywgVXNlclNlcnZpY2UgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL3NoYXJlZCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IENNU0ZpZWxkQ29uZmlnIH0gPSB7fTtcbiAgcHJvZmlsZUNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBDTVNGaWVsZENvbmZpZyB9ID0ge1xuICAgIGF2YXRhcjoge1xuICAgICAgbGFiZWw6ICdQcm9maWxiaWxkJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgIGNyb3BwaW5nSW1hZ2U6IHRydWUsXG4gICAgICBjcm9wcGluZ09wdGlvbnM6IHtcbiAgICAgICAgYXNwZWN0UmF0aW86IDEgLyAxLFxuICAgICAgICBmb3JtYXQ6ICdwbmcnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGVtYWlsOiB7XG4gICAgICBsYWJlbDogJ0UtTWFpbCcsXG4gICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgfSxcbiAgICBmaXJzdE5hbWU6IHtcbiAgICAgIGxhYmVsOiAnVm9ybmFtZScsXG4gICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgfSxcbiAgICBsYXN0TmFtZToge1xuICAgICAgbGFiZWw6ICdOYWNobmFtZScsXG4gICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgfSxcbiAgICByb2xlczoge1xuICAgICAgbGFiZWw6ICcnLFxuICAgICAgZXhjbHVkZTogdHJ1ZSxcbiAgICAgIHJvbGVzOiBbJ2FkbWluJ10sXG4gICAgfSxcbiAgICB1c2VybmFtZToge1xuICAgICAgbGFiZWw6ICdCZW51dHplcm5hbWUnLFxuICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgIH0sXG4gICAgcGFzc3dvcmQ6IHtcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIGV4Y2x1ZGU6IHRydWUsXG4gICAgfSxcbiAgfTtcblxuICBjdXJyZW50VXNlcjogQmFzaWNVc2VyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UpIHtcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gYXV0aFNlcnZpY2UuY3VycmVudFVzZXI7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByb2ZpbGVDb25maWcgPSB7IC4uLnRoaXMucHJvZmlsZUNvbmZpZywgLi4udGhpcy5jb25maWcgfTtcbiAgICB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAvLyBNZXJnZSBjb25maWcgZnJvbSByb3V0ZSB0byBjb21wb25lbnRcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRoaXMucHJvZmlsZUNvbmZpZyA9IHsgLi4udGhpcy5wcm9maWxlQ29uZmlnLCAuLi5kYXRhIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSXQgZ2V0cyB0aGUgY3VycmVudCB1c2VyIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB1cGRhdGVzIHRoZSBjdXJyZW50IHVzZXIgaW4gdGhlIHNlc3Npb25cbiAgICovXG4gIHVwZGF0ZVNlc3Npb25Vc2VyKCkge1xuICAgIGlmICghdGhpcy5hdXRoU2VydmljZS5jdXJyZW50VXNlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0KHRoaXMuYXV0aFNlcnZpY2UuY3VycmVudFVzZXIuaWQpLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50VXNlciA9IHVzZXI7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cInB5LTVcIj5cbiAgICA8YmFzZS1tb2RlbC1mb3JtXG4gICAgICBbaWRdPVwiY3VycmVudFVzZXI/LmlkXCJcbiAgICAgIFttb2RlbE5hbWVdPVwiJ3VzZXInXCJcbiAgICAgIFtsYWJlbF09XCInTWVpbiBQcm9maWwnXCJcbiAgICAgIFtjb25maWddPVwicHJvZmlsZUNvbmZpZyB8fCB7fVwiXG4gICAgICBbZGVsZXRlXT1cImZhbHNlXCJcbiAgICAgIChmaW5pc2hlZCk9XCJ1cGRhdGVTZXNzaW9uVXNlcigpXCJcbiAgICA+PC9iYXNlLW1vZGVsLWZvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
|
|
3
|
-
import { fullEmail, securePasswordValidator, Validation } from '@lenne.tech/ng-base/shared';
|
|
4
|
-
import { Subscription } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
7
|
-
import * as i2 from "@angular/router";
|
|
8
|
-
import * as i3 from "@angular/forms";
|
|
9
|
-
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "@lenne.tech/ng-base/base-components";
|
|
11
|
-
export class RegisterComponent {
|
|
12
|
-
constructor(formsService, userService, router, route) {
|
|
13
|
-
this.formsService = formsService;
|
|
14
|
-
this.userService = userService;
|
|
15
|
-
this.router = router;
|
|
16
|
-
this.route = route;
|
|
17
|
-
this.redirectUrl = '';
|
|
18
|
-
this.subscription = new Subscription();
|
|
19
|
-
}
|
|
20
|
-
ngOnInit() {
|
|
21
|
-
this.createForm();
|
|
22
|
-
this.subscription.add(this.route.queryParams.subscribe((params) => {
|
|
23
|
-
this.redirectUrl = params.redirectUrl;
|
|
24
|
-
}));
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Create login form
|
|
28
|
-
*/
|
|
29
|
-
createForm() {
|
|
30
|
-
this.form = new UntypedFormGroup({
|
|
31
|
-
firstName: new UntypedFormControl('', [Validators.required]),
|
|
32
|
-
lastName: new UntypedFormControl('', [Validators.required]),
|
|
33
|
-
email: new UntypedFormControl('', [Validators.required, fullEmail()]),
|
|
34
|
-
password: new UntypedFormControl('', [Validators.required, securePasswordValidator()]),
|
|
35
|
-
passwordConfirm: new UntypedFormControl('', [Validators.required, securePasswordValidator()]),
|
|
36
|
-
privacy: new UntypedFormControl(false, Validators.requiredTrue),
|
|
37
|
-
}, {
|
|
38
|
-
validators: [Validation.match('password', 'passwordConfirm')],
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Submit login form
|
|
43
|
-
*/
|
|
44
|
-
submit() {
|
|
45
|
-
this.error = '';
|
|
46
|
-
this.loading = true;
|
|
47
|
-
if (this.form.invalid) {
|
|
48
|
-
this.formsService.validateAllFormFields(this.form);
|
|
49
|
-
this.scrollToTop();
|
|
50
|
-
this.loading = false;
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const input = this.form.value;
|
|
54
|
-
delete input.privacy;
|
|
55
|
-
this.userService.register(input).subscribe({
|
|
56
|
-
next: (auth) => {
|
|
57
|
-
if (auth) {
|
|
58
|
-
this.router.navigate([this.redirectUrl ? this.redirectUrl : '/main']);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
62
|
-
this.scrollToTop();
|
|
63
|
-
}
|
|
64
|
-
this.loading = false;
|
|
65
|
-
},
|
|
66
|
-
error: (err) => {
|
|
67
|
-
if (err?.message?.includes('already exists')) {
|
|
68
|
-
this.error =
|
|
69
|
-
'Mit dieser E-Mail gibt es bereits ein Konto. Bitte wähle eine andere E-Mail Adresse oder logge dich mit deinem Passwort ein.';
|
|
70
|
-
this.scrollToTop();
|
|
71
|
-
}
|
|
72
|
-
this.loading = false;
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
scrollToTop() {
|
|
77
|
-
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
RegisterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: RegisterComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
RegisterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: RegisterComponent, selector: "base-register", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column register-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div id=\"register-error\" class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'firstName'\"\n [name]=\"'firstName'\"\n [label]=\"'Vorname'\"\n [type]=\"'text'\"\n [control]=\"form.get('firstName')\"\n [autocomplete]=\"'given-name'\"\n ></base-input>\n <base-input\n [id]=\"'lastName'\"\n [name]=\"'lastName'\"\n [label]=\"'Nachname'\"\n [type]=\"'text'\"\n [control]=\"form.get('lastName')\"\n [autocomplete]=\"'family-name'\"\n ></base-input>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [control]=\"form.get('email')\"\n [autocomplete]=\"'email'\"\n ></base-input>\n <base-input\n [id]=\"'password'\"\n [name]=\"'password'\"\n [label]=\"'Passwort'\"\n [type]=\"'password'\"\n [autocomplete]=\"'new-password'\"\n [eyeButton]=\"true\"\n [control]=\"form.get('password')\"\n ></base-input>\n <base-input\n [id]=\"'password-confirm'\"\n [name]=\"'password-confirm'\"\n [label]=\"'Passwort best\u00E4tigen'\"\n [autocomplete]=\"'new-password'\"\n [eyeButton]=\"true\"\n [type]=\"'password'\"\n [control]=\"form.get('passwordConfirm')\"\n ></base-input>\n <base-checkbox [id]=\"'privacy'\" [control]=\"form.get('privacy')\">\n Hiermit best\u00E4tige ich, dass ich die <a routerLink=\"/datenschutz\">Datenschutzerkl\u00E4rung</a> gelesen habe und\n akzeptiere.\n </base-checkbox>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Registrieren</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../login\" [queryParams]=\"{redirectUrl}\">Bereits ein Konto? Dann logge Dich hier ein!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".register-container{width:100%;padding:20px 0}@media (min-width: 768px){.register-container{max-width:400px}}\n"], dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.InputComponent, selector: "base-input", inputs: ["id", "name", "infoText", "label", "placeholder", "autocomplete", "tabIndex", "control", "type", "required", "eyeButton", "objectPath"], outputs: ["enter"] }, { kind: "component", type: i5.CheckboxComponent, selector: "base-checkbox", inputs: ["id", "name", "label", "value", "control", "required", "objectPath"] }] });
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: RegisterComponent, decorators: [{
|
|
83
|
-
type: Component,
|
|
84
|
-
args: [{ selector: 'base-register', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column register-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div id=\"register-error\" class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'firstName'\"\n [name]=\"'firstName'\"\n [label]=\"'Vorname'\"\n [type]=\"'text'\"\n [control]=\"form.get('firstName')\"\n [autocomplete]=\"'given-name'\"\n ></base-input>\n <base-input\n [id]=\"'lastName'\"\n [name]=\"'lastName'\"\n [label]=\"'Nachname'\"\n [type]=\"'text'\"\n [control]=\"form.get('lastName')\"\n [autocomplete]=\"'family-name'\"\n ></base-input>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [control]=\"form.get('email')\"\n [autocomplete]=\"'email'\"\n ></base-input>\n <base-input\n [id]=\"'password'\"\n [name]=\"'password'\"\n [label]=\"'Passwort'\"\n [type]=\"'password'\"\n [autocomplete]=\"'new-password'\"\n [eyeButton]=\"true\"\n [control]=\"form.get('password')\"\n ></base-input>\n <base-input\n [id]=\"'password-confirm'\"\n [name]=\"'password-confirm'\"\n [label]=\"'Passwort best\u00E4tigen'\"\n [autocomplete]=\"'new-password'\"\n [eyeButton]=\"true\"\n [type]=\"'password'\"\n [control]=\"form.get('passwordConfirm')\"\n ></base-input>\n <base-checkbox [id]=\"'privacy'\" [control]=\"form.get('privacy')\">\n Hiermit best\u00E4tige ich, dass ich die <a routerLink=\"/datenschutz\">Datenschutzerkl\u00E4rung</a> gelesen habe und\n akzeptiere.\n </base-checkbox>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Registrieren</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../login\" [queryParams]=\"{redirectUrl}\">Bereits ein Konto? Dann logge Dich hier ein!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".register-container{width:100%;padding:20px 0}@media (min-width: 768px){.register-container{max-width:400px}}\n"] }]
|
|
85
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLXByb3RvdHlwZS9wYWdlcy9yZWdpc3Rlci9yZWdpc3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLHVCQUF1QixFQUFlLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXZILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPcEMsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixZQUNVLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxLQUFxQjtRQUhyQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFQL0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTy9CLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENB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VSxpQkFBaUI7a0dBQWpCLGlCQUFpQixxRENYOUIsK2lGQWtFQTsyRkR2RGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybXNTZXJ2aWNlLCBmdWxsRW1haWwsIHNlY3VyZVBhc3N3b3JkVmFsaWRhdG9yLCBVc2VyU2VydmljZSwgVmFsaWRhdGlvbiB9IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2Uvc2hhcmVkJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtcmVnaXN0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWdpc3Rlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGVycm9yOiBzdHJpbmc7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIHJlZGlyZWN0VXJsID0gJyc7XG4gIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1zU2VydmljZTogRm9ybXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gcGFyYW1zLnJlZGlyZWN0VXJsO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBsb2dpbiBmb3JtXG4gICAqL1xuICBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKFxuICAgICAge1xuICAgICAgICBmaXJzdE5hbWU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIGxhc3ROYW1lOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBlbWFpbDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGZ1bGxFbWFpbCgpXSksXG4gICAgICAgIHBhc3N3b3JkOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgc2VjdXJlUGFzc3dvcmRWYWxpZGF0b3IoKV0pLFxuICAgICAgICBwYXNzd29yZENvbmZpcm06IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBzZWN1cmVQYXNzd29yZFZhbGlkYXRvcigpXSksXG4gICAgICAgIHByaXZhY3k6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UsIFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0aW9uLm1hdGNoKCdwYXNzd29yZCcsICdwYXNzd29yZENvbmZpcm0nKV0sXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgbG9naW4gZm9ybVxuICAgKi9cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm1zU2VydmljZS52YWxpZGF0ZUFsbEZvcm1GaWVsZHModGhpcy5mb3JtKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGRlbGV0ZSBpbnB1dC5wcml2YWN5O1xuXG4gICAgdGhpcy51c2VyU2VydmljZS5yZWdpc3RlcihpbnB1dCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChhdXRoKSA9PiB7XG4gICAgICAgIGlmIChhdXRoKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmVkaXJlY3RVcmwgPyB0aGlzLnJlZGlyZWN0VXJsIDogJy9tYWluJ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSAnRXR3YXMgaXN0IHNjaGllZmdlbGF1ZmVuLiBCaXR0ZSBwcm9iaWVyZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBpZiAoZXJyPy5tZXNzYWdlPy5pbmNsdWRlcygnYWxyZWFkeSBleGlzdHMnKSkge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPVxuICAgICAgICAgICAgJ01pdCBkaWVzZXIgRS1NYWlsIGdpYnQgZXMgYmVyZWl0cyBlaW4gS29udG8uIEJpdHRlIHfDpGhsZSBlaW5lIGFuZGVyZSBFLU1haWwgQWRyZXNzZSBvZGVyIGxvZ2dlIGRpY2ggbWl0IGRlaW5lbSBQYXNzd29ydCBlaW4uJztcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcCgpIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBoLTEwMCBweS01XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcmVnaXN0ZXItY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJyZWdpc3Rlci1lcnJvclwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCIgKm5nSWY9XCJlcnJvclwiPlxuICAgICAgICAgIHt7IGVycm9yIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YmFzZS1pbnB1dFxuICAgICAgICAgIFtpZF09XCInZmlyc3ROYW1lJ1wiXG4gICAgICAgICAgW25hbWVdPVwiJ2ZpcnN0TmFtZSdcIlxuICAgICAgICAgIFtsYWJlbF09XCInVm9ybmFtZSdcIlxuICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ2ZpcnN0TmFtZScpXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidnaXZlbi1uYW1lJ1wiXG4gICAgICAgID48L2Jhc2UtaW5wdXQ+XG4gICAgICAgIDxiYXNlLWlucHV0XG4gICAgICAgICAgW2lkXT1cIidsYXN0TmFtZSdcIlxuICAgICAgICAgIFtuYW1lXT1cIidsYXN0TmFtZSdcIlxuICAgICAgICAgIFtsYWJlbF09XCInTmFjaG5hbWUnXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uZ2V0KCdsYXN0TmFtZScpXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidmYW1pbHktbmFtZSdcIlxuICAgICAgICA+PC9iYXNlLWlucHV0PlxuICAgICAgICA8YmFzZS1pbnB1dFxuICAgICAgICAgIFtpZF09XCInZW1haWwnXCJcbiAgICAgICAgICBbbmFtZV09XCInZW1haWwnXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0UtTWFpbCBBZHJlc3NlJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ2VtYWlsJylcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgID48L2Jhc2UtaW5wdXQ+XG4gICAgICAgIDxiYXNlLWlucHV0XG4gICAgICAgICAgW2lkXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgIFtuYW1lXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgIFtsYWJlbF09XCInUGFzc3dvcnQnXCJcbiAgICAgICAgICBbdHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIiduZXctcGFzc3dvcmQnXCJcbiAgICAgICAgICBbZXllQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uZ2V0KCdwYXNzd29yZCcpXCJcbiAgICAgICAgPjwvYmFzZS1pbnB1dD5cbiAgICAgICAgPGJhc2UtaW5wdXRcbiAgICAgICAgICBbaWRdPVwiJ3Bhc3N3b3JkLWNvbmZpcm0nXCJcbiAgICAgICAgICBbbmFtZV09XCIncGFzc3dvcmQtY29uZmlybSdcIlxuICAgICAgICAgIFtsYWJlbF09XCInUGFzc3dvcnQgYmVzdMOkdGlnZW4nXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIiduZXctcGFzc3dvcmQnXCJcbiAgICAgICAgICBbZXllQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgIFt0eXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uZ2V0KCdwYXNzd29yZENvbmZpcm0nKVwiXG4gICAgICAgID48L2Jhc2UtaW5wdXQ+XG4gICAgICAgIDxiYXNlLWNoZWNrYm94IFtpZF09XCIncHJpdmFjeSdcIiBbY29udHJvbF09XCJmb3JtLmdldCgncHJpdmFjeScpXCI+XG4gICAgICAgICAgSGllcm1pdCBiZXN0w6R0aWdlIGljaCwgZGFzcyBpY2ggZGllIDxhIHJvdXRlckxpbms9XCIvZGF0ZW5zY2h1dHpcIj5EYXRlbnNjaHV0emVya2zDpHJ1bmc8L2E+IGdlbGVzZW4gaGFiZSB1bmRcbiAgICAgICAgICBha3plcHRpZXJlLlxuICAgICAgICA8L2Jhc2UtY2hlY2tib3g+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgZ2FwLTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdCgpXCIgKm5nSWY9XCIhbG9hZGluZ1wiPlJlZ2lzdHJpZXJlbjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgZGlzYWJsZWQgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIExvYWRpbmcuLi5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8aHIgLz5cbiAgICAgICAgICA8YSByb3V0ZXJMaW5rPVwiLi4vbG9naW5cIiBbcXVlcnlQYXJhbXNdPVwie3JlZGlyZWN0VXJsfVwiPkJlcmVpdHMgZWluIEtvbnRvPyBEYW5uIGxvZ2dlIERpY2ggaGllciBlaW4hPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|