@lenne.tech/ng-base 15.0.0-beta-3 → 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 +1 -1
- 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 +1 -1
- 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/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 +41 -30
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-cms.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-components.mjs +419 -298
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-prototype.mjs +126 -87
- package/{fesm2015 → fesm2022}/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-shared.mjs +164 -113
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base.mjs +108 -88
- package/fesm2022/lenne.tech-ng-base.mjs.map +1 -0
- package/package.json +23 -38
- 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 -456
- 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 -57
- 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/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 -323
- package/fesm2015/lenne.tech-ng-base-base-cms.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +0 -2866
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +0 -496
- package/fesm2015/lenne.tech-ng-base-shared.mjs +0 -2750
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base.mjs +0 -905
- package/fesm2015/lenne.tech-ng-base.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
- /package/{esm2020 → esm2022}/src/factories/apollo-options.factory.mjs +0 -0
|
@@ -1,496 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, NgModule } from '@angular/core';
|
|
3
|
-
import * as i3 from '@angular/forms';
|
|
4
|
-
import { UntypedFormGroup, UntypedFormControl, Validators, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import * as i4 from '@angular/common';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
import * as i2 from '@angular/router';
|
|
8
|
-
import { RouterModule } from '@angular/router';
|
|
9
|
-
import { BaseModule } from '@lenne.tech/ng-base';
|
|
10
|
-
import * as i5 from '@lenne.tech/ng-base/base-components';
|
|
11
|
-
import { BaseComponentsModule } from '@lenne.tech/ng-base/base-components';
|
|
12
|
-
import * as i1 from '@lenne.tech/ng-base/shared';
|
|
13
|
-
import { fullEmail, securePasswordValidator, Validation, ToastType } from '@lenne.tech/ng-base/shared';
|
|
14
|
-
import { Subscription } from 'rxjs';
|
|
15
|
-
|
|
16
|
-
class LoginComponent {
|
|
17
|
-
constructor(formsService, userService, router, route) {
|
|
18
|
-
this.formsService = formsService;
|
|
19
|
-
this.userService = userService;
|
|
20
|
-
this.router = router;
|
|
21
|
-
this.route = route;
|
|
22
|
-
this.config = {};
|
|
23
|
-
this.subscription = new Subscription();
|
|
24
|
-
this.loginConfig = {
|
|
25
|
-
redirectUrl: '/main',
|
|
26
|
-
showPasswordForget: true,
|
|
27
|
-
showRegister: true,
|
|
28
|
-
logoUrl: '',
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.loginConfig = Object.assign(Object.assign({}, this.loginConfig), this.config);
|
|
33
|
-
this.createForm();
|
|
34
|
-
this.subscription.add(this.route.data.subscribe((data) => {
|
|
35
|
-
// Merge config from route to component
|
|
36
|
-
if (data === null || data === void 0 ? void 0 : data.config) {
|
|
37
|
-
this.loginConfig = Object.assign(Object.assign({}, this.loginConfig), data.config);
|
|
38
|
-
}
|
|
39
|
-
}));
|
|
40
|
-
this.subscription.add(this.route.queryParams.subscribe((params) => {
|
|
41
|
-
this.redirectUrl = params.redirectUrl;
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
ngOnDestroy() {
|
|
45
|
-
this.subscription.unsubscribe();
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Create login form
|
|
49
|
-
*/
|
|
50
|
-
createForm() {
|
|
51
|
-
this.form = new UntypedFormGroup({
|
|
52
|
-
email: new UntypedFormControl('', [Validators.required, fullEmail()]),
|
|
53
|
-
password: new UntypedFormControl('', Validators.required),
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Submit login form
|
|
58
|
-
*/
|
|
59
|
-
submit() {
|
|
60
|
-
this.error = '';
|
|
61
|
-
this.loading = true;
|
|
62
|
-
if (this.form.invalid) {
|
|
63
|
-
this.formsService.validateAllFormFields(this.form);
|
|
64
|
-
this.scrollToTop();
|
|
65
|
-
this.loading = false;
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
this.userService.login(this.form.value).subscribe({
|
|
69
|
-
next: (response) => {
|
|
70
|
-
if (response) {
|
|
71
|
-
this.router.navigate([this.redirectUrl ? this.redirectUrl : this.loginConfig.redirectUrl]);
|
|
72
|
-
this.form.reset();
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
76
|
-
this.scrollToTop();
|
|
77
|
-
}
|
|
78
|
-
this.loading = false;
|
|
79
|
-
},
|
|
80
|
-
error: (error) => {
|
|
81
|
-
var _a, _b;
|
|
82
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
83
|
-
// Wrong password
|
|
84
|
-
if ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('Unauthorized')) {
|
|
85
|
-
this.error = 'Dein Passwort ist leider falsch. Bitte überprüfe deine Eingabe!';
|
|
86
|
-
}
|
|
87
|
-
// User not found
|
|
88
|
-
if ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('No user found')) {
|
|
89
|
-
this.error = 'Es konnte kein Konto mit der E-Mail gefunden werden. Bitte gib eine gültige E-Mail ein!';
|
|
90
|
-
}
|
|
91
|
-
this.scrollToTop();
|
|
92
|
-
this.loading = false;
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
scrollToTop() {
|
|
97
|
-
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LoginComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
-
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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"] }] });
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LoginComponent, decorators: [{
|
|
103
|
-
type: Component,
|
|
104
|
-
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"] }]
|
|
105
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { config: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}] } });
|
|
108
|
-
|
|
109
|
-
class RegisterComponent {
|
|
110
|
-
constructor(formsService, userService, router, route) {
|
|
111
|
-
this.formsService = formsService;
|
|
112
|
-
this.userService = userService;
|
|
113
|
-
this.router = router;
|
|
114
|
-
this.route = route;
|
|
115
|
-
this.redirectUrl = '';
|
|
116
|
-
this.subscription = new Subscription();
|
|
117
|
-
}
|
|
118
|
-
ngOnInit() {
|
|
119
|
-
this.createForm();
|
|
120
|
-
this.subscription.add(this.route.queryParams.subscribe((params) => {
|
|
121
|
-
this.redirectUrl = params.redirectUrl;
|
|
122
|
-
}));
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Create login form
|
|
126
|
-
*/
|
|
127
|
-
createForm() {
|
|
128
|
-
this.form = new UntypedFormGroup({
|
|
129
|
-
firstName: new UntypedFormControl('', [Validators.required]),
|
|
130
|
-
lastName: new UntypedFormControl('', [Validators.required]),
|
|
131
|
-
email: new UntypedFormControl('', [Validators.required, fullEmail()]),
|
|
132
|
-
password: new UntypedFormControl('', [Validators.required, securePasswordValidator()]),
|
|
133
|
-
passwordConfirm: new UntypedFormControl('', [Validators.required, securePasswordValidator()]),
|
|
134
|
-
privacy: new UntypedFormControl(false, Validators.requiredTrue),
|
|
135
|
-
}, {
|
|
136
|
-
validators: [Validation.match('password', 'passwordConfirm')],
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Submit login form
|
|
141
|
-
*/
|
|
142
|
-
submit() {
|
|
143
|
-
this.error = '';
|
|
144
|
-
this.loading = true;
|
|
145
|
-
if (this.form.invalid) {
|
|
146
|
-
this.formsService.validateAllFormFields(this.form);
|
|
147
|
-
this.scrollToTop();
|
|
148
|
-
this.loading = false;
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
const input = this.form.value;
|
|
152
|
-
delete input.privacy;
|
|
153
|
-
this.userService.register(input).subscribe({
|
|
154
|
-
next: (auth) => {
|
|
155
|
-
if (auth) {
|
|
156
|
-
this.router.navigate([this.redirectUrl ? this.redirectUrl : '/main']);
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
160
|
-
this.scrollToTop();
|
|
161
|
-
}
|
|
162
|
-
this.loading = false;
|
|
163
|
-
},
|
|
164
|
-
error: (err) => {
|
|
165
|
-
var _a;
|
|
166
|
-
if ((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('already exists')) {
|
|
167
|
-
this.error =
|
|
168
|
-
'Mit dieser E-Mail gibt es bereits ein Konto. Bitte wähle eine andere E-Mail Adresse oder logge dich mit deinem Passwort ein.';
|
|
169
|
-
this.scrollToTop();
|
|
170
|
-
}
|
|
171
|
-
this.loading = false;
|
|
172
|
-
},
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
scrollToTop() {
|
|
176
|
-
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
RegisterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RegisterComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
180
|
-
RegisterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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"] }] });
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RegisterComponent, decorators: [{
|
|
182
|
-
type: Component,
|
|
183
|
-
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"] }]
|
|
184
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
|
|
185
|
-
|
|
186
|
-
class ForgotPasswordComponent {
|
|
187
|
-
constructor(formsService, userService, router, toastService) {
|
|
188
|
-
this.formsService = formsService;
|
|
189
|
-
this.userService = userService;
|
|
190
|
-
this.router = router;
|
|
191
|
-
this.toastService = toastService;
|
|
192
|
-
}
|
|
193
|
-
ngOnInit() {
|
|
194
|
-
this.createForm();
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Create login form
|
|
198
|
-
*/
|
|
199
|
-
createForm() {
|
|
200
|
-
this.form = new UntypedFormGroup({
|
|
201
|
-
email: new UntypedFormControl('', [Validators.required, fullEmail()]),
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Submit form
|
|
206
|
-
*/
|
|
207
|
-
submit() {
|
|
208
|
-
this.loading = true;
|
|
209
|
-
if (this.form.invalid) {
|
|
210
|
-
this.formsService.validateAllFormFields(this.form);
|
|
211
|
-
this.loading = false;
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
this.userService.requestPasswordResetMail(this.form.get('email').value).subscribe({
|
|
215
|
-
next: (response) => {
|
|
216
|
-
if (response) {
|
|
217
|
-
this.toastService.show({
|
|
218
|
-
id: 'password-forgot-success',
|
|
219
|
-
title: 'Erfolgreich',
|
|
220
|
-
description: 'Wir haben Dir eine E-Mail geschickt. Bitte überprüfe Dein Postfach.',
|
|
221
|
-
type: ToastType.SUCCESS,
|
|
222
|
-
});
|
|
223
|
-
this.router.navigate(['/']);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
227
|
-
}
|
|
228
|
-
this.loading = false;
|
|
229
|
-
},
|
|
230
|
-
error: () => {
|
|
231
|
-
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
232
|
-
this.loading = false;
|
|
233
|
-
},
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }, { token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
238
|
-
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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"] }] });
|
|
239
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
240
|
-
type: Component,
|
|
241
|
-
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"] }]
|
|
242
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }, { type: i1.ToastService }]; } });
|
|
243
|
-
|
|
244
|
-
class ProfileComponent {
|
|
245
|
-
constructor(authService, route, userService) {
|
|
246
|
-
this.authService = authService;
|
|
247
|
-
this.route = route;
|
|
248
|
-
this.userService = userService;
|
|
249
|
-
this.config = {};
|
|
250
|
-
this.profileConfig = {
|
|
251
|
-
avatar: {
|
|
252
|
-
label: 'Profilbild',
|
|
253
|
-
placeholder: '',
|
|
254
|
-
croppingImage: true,
|
|
255
|
-
croppingOptions: {
|
|
256
|
-
aspectRatio: 1 / 1,
|
|
257
|
-
format: 'png',
|
|
258
|
-
},
|
|
259
|
-
},
|
|
260
|
-
email: {
|
|
261
|
-
label: 'E-Mail',
|
|
262
|
-
placeholder: '',
|
|
263
|
-
},
|
|
264
|
-
firstName: {
|
|
265
|
-
label: 'Vorname',
|
|
266
|
-
placeholder: '',
|
|
267
|
-
},
|
|
268
|
-
lastName: {
|
|
269
|
-
label: 'Nachname',
|
|
270
|
-
placeholder: '',
|
|
271
|
-
},
|
|
272
|
-
roles: {
|
|
273
|
-
label: '',
|
|
274
|
-
exclude: true,
|
|
275
|
-
roles: ['admin'],
|
|
276
|
-
},
|
|
277
|
-
username: {
|
|
278
|
-
label: 'Benutzername',
|
|
279
|
-
placeholder: '',
|
|
280
|
-
},
|
|
281
|
-
password: {
|
|
282
|
-
label: '',
|
|
283
|
-
exclude: true,
|
|
284
|
-
},
|
|
285
|
-
};
|
|
286
|
-
this.currentUser = authService.currentUser;
|
|
287
|
-
}
|
|
288
|
-
ngOnInit() {
|
|
289
|
-
this.profileConfig = Object.assign(Object.assign({}, this.profileConfig), this.config);
|
|
290
|
-
this.route.data.subscribe((data) => {
|
|
291
|
-
// Merge config from route to component
|
|
292
|
-
if (data) {
|
|
293
|
-
this.profileConfig = Object.assign(Object.assign({}, this.profileConfig), data);
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* It gets the current user from the database and updates the current user in the session
|
|
299
|
-
*/
|
|
300
|
-
updateSessionUser() {
|
|
301
|
-
if (!this.authService.currentUser) {
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
this.userService.get(this.authService.currentUser.id).subscribe((user) => {
|
|
305
|
-
if (user) {
|
|
306
|
-
this.authService.currentUser = user;
|
|
307
|
-
}
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
ProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProfileComponent, deps: [{ token: i1.AuthService }, { token: i2.ActivatedRoute }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
312
|
-
ProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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: i5.ModelFormComponent, selector: "base-model-form", inputs: ["modelName", "label", "id", "delete", "onlyUpdateMode", "duplicate", "logging", "config", "showFavButton"], outputs: ["finished"] }] });
|
|
313
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProfileComponent, decorators: [{
|
|
314
|
-
type: Component,
|
|
315
|
-
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" }]
|
|
316
|
-
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.ActivatedRoute }, { type: i1.UserService }]; }, propDecorators: { config: [{
|
|
317
|
-
type: Input
|
|
318
|
-
}] } });
|
|
319
|
-
|
|
320
|
-
class SetPasswordComponent {
|
|
321
|
-
constructor(formsService, userService, toastService, route, router) {
|
|
322
|
-
this.formsService = formsService;
|
|
323
|
-
this.userService = userService;
|
|
324
|
-
this.toastService = toastService;
|
|
325
|
-
this.route = route;
|
|
326
|
-
this.router = router;
|
|
327
|
-
this.redirectUrl = '/';
|
|
328
|
-
this.loading = false;
|
|
329
|
-
this.error = '';
|
|
330
|
-
}
|
|
331
|
-
ngOnInit() {
|
|
332
|
-
var _a;
|
|
333
|
-
this.token = (_a = this.route.snapshot.params) === null || _a === void 0 ? void 0 : _a.token;
|
|
334
|
-
if (!this.token) {
|
|
335
|
-
this.error =
|
|
336
|
-
'Der Link ist abgelaufen oder ungültig, bitte probiere es später erneut oder wende Dich an den Support.';
|
|
337
|
-
}
|
|
338
|
-
this.createForm();
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Create password change form
|
|
342
|
-
*/
|
|
343
|
-
createForm() {
|
|
344
|
-
this.form = new UntypedFormGroup({
|
|
345
|
-
password: new FormControl('', [Validators.required, securePasswordValidator()]),
|
|
346
|
-
passwordConfirm: new FormControl('', [Validators.required, securePasswordValidator()]),
|
|
347
|
-
}, { validators: Validation.match('password', 'passwordConfirm') });
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Submit form and change password of user
|
|
351
|
-
*/
|
|
352
|
-
submit() {
|
|
353
|
-
this.loading = true;
|
|
354
|
-
if (this.form.invalid) {
|
|
355
|
-
this.formsService.validateAllFormFields(this.form);
|
|
356
|
-
this.loading = false;
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
359
|
-
this.userService.resetPassword(this.token, this.form.get('password').value).subscribe({
|
|
360
|
-
next: (response) => {
|
|
361
|
-
if (response) {
|
|
362
|
-
this.form.reset();
|
|
363
|
-
this.toastService.show({
|
|
364
|
-
id: 'set-password-success',
|
|
365
|
-
title: 'Erfolgreich',
|
|
366
|
-
description: 'Passwort wurde erfolgreich gesetzt. Du kannst Dich nun einloggen.',
|
|
367
|
-
type: ToastType.SUCCESS,
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
this.router.navigate([this.redirectUrl]);
|
|
371
|
-
this.loading = false;
|
|
372
|
-
},
|
|
373
|
-
error: (error) => {
|
|
374
|
-
this.loading = false;
|
|
375
|
-
this.toastService.show({
|
|
376
|
-
id: 'set-password-error',
|
|
377
|
-
title: 'Fehlgeschlagen',
|
|
378
|
-
description: 'Passwort setzen ist fehlgeschlagen, bitte versuche es später erneut.',
|
|
379
|
-
type: ToastType.ERROR,
|
|
380
|
-
});
|
|
381
|
-
},
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
SetPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SetPasswordComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i1.ToastService }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
386
|
-
SetPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SetPasswordComponent, selector: "base-set-password", inputs: { redirectUrl: "redirectUrl" }, ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column set-password-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]=\"'password'\"\n [label]=\"'Passwort'\"\n [required]=\"true\"\n [type]=\"'password'\"\n [control]=\"form.get('password')\"\n [tabIndex]=\"1\"\n [eyeButton]=\"true\"\n ></base-input>\n <base-input\n [id]=\"'password-confirm'\"\n [label]=\"'Passwort best\u00E4tigen'\"\n [required]=\"true\"\n [type]=\"'password'\"\n [control]=\"form.get('passwordConfirm')\"\n [tabIndex]=\"2\"\n [eyeButton]=\"true\"\n ></base-input>\n\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Passwort setzen</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 </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".set-password-container{width:100%;padding:20px 0}@media (min-width: 768px){.set-password-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: 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"] }] });
|
|
387
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SetPasswordComponent, decorators: [{
|
|
388
|
-
type: Component,
|
|
389
|
-
args: [{ selector: 'base-set-password', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column set-password-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]=\"'password'\"\n [label]=\"'Passwort'\"\n [required]=\"true\"\n [type]=\"'password'\"\n [control]=\"form.get('password')\"\n [tabIndex]=\"1\"\n [eyeButton]=\"true\"\n ></base-input>\n <base-input\n [id]=\"'password-confirm'\"\n [label]=\"'Passwort best\u00E4tigen'\"\n [required]=\"true\"\n [type]=\"'password'\"\n [control]=\"form.get('passwordConfirm')\"\n [tabIndex]=\"2\"\n [eyeButton]=\"true\"\n ></base-input>\n\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Passwort setzen</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 </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".set-password-container{width:100%;padding:20px 0}@media (min-width: 768px){.set-password-container{max-width:400px}}\n"] }]
|
|
390
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i1.ToastService }, { type: i2.ActivatedRoute }, { type: i2.Router }]; }, propDecorators: { redirectUrl: [{
|
|
391
|
-
type: Input
|
|
392
|
-
}] } });
|
|
393
|
-
|
|
394
|
-
class EmailVerificationComponent {
|
|
395
|
-
constructor(route, userService, toastService, router) {
|
|
396
|
-
this.route = route;
|
|
397
|
-
this.userService = userService;
|
|
398
|
-
this.toastService = toastService;
|
|
399
|
-
this.router = router;
|
|
400
|
-
this.loading = false;
|
|
401
|
-
}
|
|
402
|
-
ngOnInit() {
|
|
403
|
-
var _a;
|
|
404
|
-
this.token = (_a = this.route.snapshot.params) === null || _a === void 0 ? void 0 : _a.token;
|
|
405
|
-
if (!this.token) {
|
|
406
|
-
this.mode = 'ERROR';
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
this.verifyUser();
|
|
410
|
-
}
|
|
411
|
-
verifyUser() {
|
|
412
|
-
this.userService.verifyUser(this.token).subscribe({
|
|
413
|
-
next: (response) => {
|
|
414
|
-
if (response) {
|
|
415
|
-
this.toastService.show({
|
|
416
|
-
id: 'email-verification-success',
|
|
417
|
-
title: 'Erfolgreich',
|
|
418
|
-
description: 'Du hast deine E-Mail erfolgreich verifiziert.',
|
|
419
|
-
type: ToastType.SUCCESS,
|
|
420
|
-
});
|
|
421
|
-
this.mode = 'SUCCESS';
|
|
422
|
-
setTimeout(() => {
|
|
423
|
-
this.router.navigate(['/']);
|
|
424
|
-
}, 3000);
|
|
425
|
-
}
|
|
426
|
-
else {
|
|
427
|
-
this.mode = 'ERROR';
|
|
428
|
-
}
|
|
429
|
-
this.loading = false;
|
|
430
|
-
},
|
|
431
|
-
error: () => {
|
|
432
|
-
this.mode = 'ERROR';
|
|
433
|
-
},
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
EmailVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmailVerificationComponent, deps: [{ token: i2.ActivatedRoute }, { token: i1.UserService }, { token: i1.ToastService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
438
|
-
EmailVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmailVerificationComponent, decorators: [{
|
|
440
|
-
type: Component,
|
|
441
|
-
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"] }]
|
|
442
|
-
}], ctorParameters: function () { return [{ type: i2.ActivatedRoute }, { type: i1.UserService }, { type: i1.ToastService }, { type: i2.Router }]; } });
|
|
443
|
-
|
|
444
|
-
// Modules
|
|
445
|
-
const imports = [BaseModule, FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule];
|
|
446
|
-
// Imported and exported elements
|
|
447
|
-
const elements = [
|
|
448
|
-
// Components
|
|
449
|
-
LoginComponent,
|
|
450
|
-
RegisterComponent,
|
|
451
|
-
ForgotPasswordComponent,
|
|
452
|
-
ProfileComponent,
|
|
453
|
-
SetPasswordComponent,
|
|
454
|
-
EmailVerificationComponent,
|
|
455
|
-
];
|
|
456
|
-
class BasePrototypeModule {
|
|
457
|
-
}
|
|
458
|
-
BasePrototypeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BasePrototypeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
459
|
-
BasePrototypeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: BasePrototypeModule, declarations: [
|
|
460
|
-
// Components
|
|
461
|
-
LoginComponent,
|
|
462
|
-
RegisterComponent,
|
|
463
|
-
ForgotPasswordComponent,
|
|
464
|
-
ProfileComponent,
|
|
465
|
-
SetPasswordComponent,
|
|
466
|
-
EmailVerificationComponent
|
|
467
|
-
], imports: [BaseModule, FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule], exports: [
|
|
468
|
-
// Components
|
|
469
|
-
LoginComponent,
|
|
470
|
-
RegisterComponent,
|
|
471
|
-
ForgotPasswordComponent,
|
|
472
|
-
ProfileComponent,
|
|
473
|
-
SetPasswordComponent,
|
|
474
|
-
EmailVerificationComponent
|
|
475
|
-
] });
|
|
476
|
-
BasePrototypeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BasePrototypeModule, imports: [imports] });
|
|
477
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BasePrototypeModule, decorators: [{
|
|
478
|
-
type: NgModule,
|
|
479
|
-
args: [{
|
|
480
|
-
declarations: elements,
|
|
481
|
-
imports,
|
|
482
|
-
exports: elements,
|
|
483
|
-
}]
|
|
484
|
-
}] });
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* Exports for public API
|
|
488
|
-
*/
|
|
489
|
-
// Module
|
|
490
|
-
|
|
491
|
-
/**
|
|
492
|
-
* Generated bundle index. Do not edit.
|
|
493
|
-
*/
|
|
494
|
-
|
|
495
|
-
export { BasePrototypeModule, EmailVerificationComponent, ForgotPasswordComponent, LoginComponent, ProfileComponent, RegisterComponent, SetPasswordComponent };
|
|
496
|
-
//# sourceMappingURL=lenne.tech-ng-base-base-prototype.mjs.map
|