@abp/ng.account 5.0.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/abp-ng.account.d.ts +5 -5
- package/bundles/abp-ng.account-config.umd.js +78 -78
- package/bundles/abp-ng.account-config.umd.js.map +1 -1
- package/bundles/abp-ng.account.umd.js +893 -893
- package/bundles/abp-ng.account.umd.js.map +1 -1
- package/config/abp-ng.account-config.d.ts +5 -5
- package/config/account-config.module.d.ts +8 -8
- package/config/enums/index.d.ts +1 -1
- package/config/enums/route-names.d.ts +8 -8
- package/config/providers/index.d.ts +1 -1
- package/config/providers/route.provider.d.ts +8 -8
- package/config/public-api.d.ts +3 -3
- package/config/utils/factories.d.ts +2 -2
- package/esm2015/abp-ng.account.js +4 -4
- package/esm2015/config/abp-ng.account-config.js +4 -4
- package/esm2015/config/account-config.module.js +27 -27
- package/esm2015/config/enums/index.js +2 -2
- package/esm2015/config/enums/route-names.js +2 -2
- package/esm2015/config/providers/index.js +2 -2
- package/esm2015/config/providers/route.provider.js +50 -50
- package/esm2015/config/public-api.js +4 -4
- package/esm2015/config/utils/factories.js +11 -11
- package/esm2015/lib/account-routing.module.js +89 -89
- package/esm2015/lib/account.module.js +85 -85
- package/esm2015/lib/components/change-password/change-password.component.js +90 -90
- package/esm2015/lib/components/forgot-password/forgot-password.component.js +46 -46
- package/esm2015/lib/components/index.js +8 -8
- package/esm2015/lib/components/login/login.component.js +68 -68
- package/esm2015/lib/components/manage-profile/manage-profile.component.js +50 -50
- package/esm2015/lib/components/personal-settings/personal-settings.component.js +59 -59
- package/esm2015/lib/components/register/register.component.js +87 -87
- package/esm2015/lib/components/reset-password/reset-password.component.js +71 -71
- package/esm2015/lib/enums/components.js +2 -2
- package/esm2015/lib/enums/index.js +2 -2
- package/esm2015/lib/guards/authentication-flow.guard.js +21 -21
- package/esm2015/lib/guards/index.js +2 -2
- package/esm2015/lib/models/account.js +3 -3
- package/esm2015/lib/models/config-options.js +2 -2
- package/esm2015/lib/models/index.js +3 -3
- package/esm2015/lib/services/index.js +2 -2
- package/esm2015/lib/services/manage-profile.state.service.js +27 -27
- package/esm2015/lib/tokens/config-options.token.js +3 -3
- package/esm2015/lib/tokens/index.js +2 -2
- package/esm2015/lib/utils/auth-utils.js +8 -8
- package/esm2015/lib/utils/factory-utils.js +4 -4
- package/esm2015/public-api.js +8 -8
- package/fesm2015/abp-ng.account-config.js +75 -75
- package/fesm2015/abp-ng.account-config.js.map +1 -1
- package/fesm2015/abp-ng.account.js +545 -545
- package/fesm2015/abp-ng.account.js.map +1 -1
- package/lib/account-routing.module.d.ts +7 -7
- package/lib/account.module.d.ts +22 -22
- package/lib/components/change-password/change-password.component.d.ts +24 -24
- package/lib/components/forgot-password/forgot-password.component.d.ts +14 -14
- package/lib/components/index.d.ts +7 -7
- package/lib/components/login/login.component.d.ts +24 -24
- package/lib/components/manage-profile/manage-profile.component.d.ts +18 -18
- package/lib/components/personal-settings/personal-settings.component.d.ts +21 -21
- package/lib/components/register/register.component.d.ts +26 -26
- package/lib/components/reset-password/reset-password.component.d.ts +22 -22
- package/lib/enums/components.d.ts +11 -11
- package/lib/enums/index.d.ts +1 -1
- package/lib/guards/authentication-flow.guard.d.ts +10 -10
- package/lib/guards/index.d.ts +1 -1
- package/lib/models/account.d.ts +14 -14
- package/lib/models/config-options.d.ts +3 -3
- package/lib/models/index.d.ts +2 -2
- package/lib/services/index.d.ts +1 -1
- package/lib/services/manage-profile.state.service.d.ts +29 -29
- package/lib/tokens/config-options.token.d.ts +3 -3
- package/lib/tokens/index.d.ts +1 -1
- package/lib/utils/auth-utils.d.ts +2 -2
- package/lib/utils/factory-utils.d.ts +4 -4
- package/package.json +4 -4
- package/public-api.d.ts +7 -7
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import { ProfileService } from '@abp/ng.account.core/proxy';
|
|
2
|
-
import { getPasswordValidators, ToasterService } from '@abp/ng.theme.shared';
|
|
3
|
-
import { Component, Injector } from '@angular/core';
|
|
4
|
-
import { FormBuilder, FormControl, Validators } from '@angular/forms';
|
|
5
|
-
import { comparePasswords } from '@ngx-validate/core';
|
|
6
|
-
import { finalize } from 'rxjs/operators';
|
|
7
|
-
import { ManageProfileStateService } from '../../services/manage-profile.state.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/forms";
|
|
10
|
-
import * as i2 from "@abp/ng.theme.shared";
|
|
11
|
-
import * as i3 from "@abp/ng.account.core/proxy";
|
|
12
|
-
import * as i4 from "../../services/manage-profile.state.service";
|
|
13
|
-
import * as i5 from "@abp/ng.core";
|
|
14
|
-
import * as i6 from "@ngx-validate/core";
|
|
15
|
-
import * as i7 from "@angular/common";
|
|
16
|
-
const { required } = Validators;
|
|
17
|
-
const PASSWORD_FIELDS = ['newPassword', 'repeatNewPassword'];
|
|
18
|
-
export class ChangePasswordComponent {
|
|
19
|
-
constructor(fb, injector, toasterService, profileService, manageProfileState) {
|
|
20
|
-
this.fb = fb;
|
|
21
|
-
this.injector = injector;
|
|
22
|
-
this.toasterService = toasterService;
|
|
23
|
-
this.profileService = profileService;
|
|
24
|
-
this.manageProfileState = manageProfileState;
|
|
25
|
-
this.mapErrorsFn = (errors, groupErrors, control) => {
|
|
26
|
-
if (PASSWORD_FIELDS.indexOf(String(control.name)) < 0)
|
|
27
|
-
return errors;
|
|
28
|
-
return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch'));
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
var _a;
|
|
33
|
-
this.hideCurrentPassword = !((_a = this.manageProfileState.getProfile()) === null || _a === void 0 ? void 0 : _a.hasPassword);
|
|
34
|
-
const passwordValidations = getPasswordValidators(this.injector);
|
|
35
|
-
this.form = this.fb.group({
|
|
36
|
-
password: ['', required],
|
|
37
|
-
newPassword: [
|
|
38
|
-
'',
|
|
39
|
-
{
|
|
40
|
-
validators: [required, ...passwordValidations],
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
repeatNewPassword: [
|
|
44
|
-
'',
|
|
45
|
-
{
|
|
46
|
-
validators: [required, ...passwordValidations],
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
}, {
|
|
50
|
-
validators: [comparePasswords(PASSWORD_FIELDS)],
|
|
51
|
-
});
|
|
52
|
-
if (this.hideCurrentPassword)
|
|
53
|
-
this.form.removeControl('password');
|
|
54
|
-
}
|
|
55
|
-
onSubmit() {
|
|
56
|
-
if (this.form.invalid)
|
|
57
|
-
return;
|
|
58
|
-
this.inProgress = true;
|
|
59
|
-
this.profileService
|
|
60
|
-
.changePassword(Object.assign(Object.assign({}, (!this.hideCurrentPassword && { currentPassword: this.form.get('password').value })), { newPassword: this.form.get('newPassword').value }))
|
|
61
|
-
.pipe(finalize(() => (this.inProgress = false)))
|
|
62
|
-
.subscribe({
|
|
63
|
-
next: () => {
|
|
64
|
-
this.form.reset();
|
|
65
|
-
this.toasterService.success('AbpAccount::PasswordChangedMessage', '', {
|
|
66
|
-
life: 5000,
|
|
67
|
-
});
|
|
68
|
-
if (this.hideCurrentPassword) {
|
|
69
|
-
this.hideCurrentPassword = false;
|
|
70
|
-
this.form.addControl('password', new FormControl('', [required]));
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
error: err => {
|
|
74
|
-
var _a, _b;
|
|
75
|
-
this.toasterService.error(((_b = (_a = err.error) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.message) || 'AbpAccount::DefaultErrorMessage');
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
ChangePasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ChangePasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i0.Injector }, { token: i2.ToasterService }, { token: i3.ProfileService }, { token: i4.ManageProfileStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
ChangePasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ChangePasswordComponent, selector: "abp-change-password-form", exportAs: ["abpChangePasswordForm"], ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [mapErrorsFn]=\"mapErrorsFn\" validateOnSubmit>\
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ChangePasswordComponent, decorators: [{
|
|
83
|
-
type: Component,
|
|
84
|
-
args: [{
|
|
85
|
-
selector: 'abp-change-password-form',
|
|
86
|
-
templateUrl: './change-password.component.html',
|
|
87
|
-
exportAs: 'abpChangePasswordForm',
|
|
88
|
-
}]
|
|
89
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.Injector }, { type: i2.ToasterService }, { type: i3.ProfileService }, { type: i4.ManageProfileStateService }]; } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FjY291bnQvc3JjL2xpYi9jb21wb25lbnRzL2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7O0FBRXhGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFFaEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQU83RCxNQUFNLE9BQU8sdUJBQXVCO0lBZWxDLFlBQ1UsRUFBZSxFQUNmLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGtCQUE2QztRQUo3QyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNs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Q0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUEsTUFBQSxNQUFBLEdBQUcsQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsT0FBTyxLQUFJLGlDQUFpQyxDQUFDLENBQUM7WUFDNUYsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7O3FIQTdFVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixxR0NsQnBDLHNxREFrREE7NEZEaENhLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxRQUFRLEVBQUUsdUJBQXVCO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5hY2NvdW50LmNvcmUvcHJveHknO1xyXG5pbXBvcnQgeyBnZXRQYXNzd29yZFZhbGlkYXRvcnMsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvbXBhcmVQYXNzd29yZHMsIFZhbGlkYXRpb24gfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQWNjb3VudCB9IGZyb20gJy4uLy4uL21vZGVscy9hY2NvdW50JztcclxuaW1wb3J0IHsgTWFuYWdlUHJvZmlsZVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21hbmFnZS1wcm9maWxlLnN0YXRlLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgeyByZXF1aXJlZCB9ID0gVmFsaWRhdG9ycztcclxuXHJcbmNvbnN0IFBBU1NXT1JEX0ZJRUxEUyA9IFsnbmV3UGFzc3dvcmQnLCAncmVwZWF0TmV3UGFzc3dvcmQnXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLWNoYW5nZS1wYXNzd29yZC1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC5odG1sJyxcclxuICBleHBvcnRBczogJ2FicENoYW5nZVBhc3N3b3JkRm9ybScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFuZ2VQYXNzd29yZENvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBY2NvdW50LkNoYW5nZVBhc3N3b3JkQ29tcG9uZW50SW5wdXRzLCBBY2NvdW50LkNoYW5nZVBhc3N3b3JkQ29tcG9uZW50T3V0cHV0c1xyXG57XHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBpblByb2dyZXNzOiBib29sZWFuO1xyXG5cclxuICBoaWRlQ3VycmVudFBhc3N3b3JkOiBib29sZWFuO1xyXG5cclxuICBtYXBFcnJvcnNGbjogVmFsaWRhdGlvbi5NYXBFcnJvcnNGbiA9IChlcnJvcnMsIGdyb3VwRXJyb3JzLCBjb250cm9sKSA9PiB7XHJcbiAgICBpZiAoUEFTU1dPUkRfRklFTERTLmluZGV4T2YoU3RyaW5nKGNvbnRyb2wubmFtZSkpIDwgMCkgcmV0dXJuIGVycm9ycztcclxuXHJcbiAgICByZXR1cm4gZXJyb3JzLmNvbmNhdChncm91cEVycm9ycy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSA9PT0gJ3Bhc3N3b3JkTWlzbWF0Y2gnKSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcclxuICAgIHByaXZhdGUgbWFuYWdlUHJvZmlsZVN0YXRlOiBNYW5hZ2VQcm9maWxlU3RhdGVTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhpZGVDdXJyZW50UGFzc3dvcmQgPSAhdGhpcy5tYW5hZ2VQcm9maWxlU3RhdGUuZ2V0UHJvZmlsZSgpPy5oYXNQYXNzd29yZDtcclxuXHJcbiAgICBjb25zdCBwYXNzd29yZFZhbGlkYXRpb25zID0gZ2V0UGFzc3dvcmRWYWxpZGF0b3JzKHRoaXMuaW5qZWN0b3IpO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoXHJcbiAgICAgIHtcclxuICAgICAgICBwYXNzd29yZDogWycnLCByZXF1aXJlZF0sXHJcbiAgICAgICAgbmV3UGFzc3dvcmQ6IFtcclxuICAgICAgICAgICcnLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiBbcmVxdWlyZWQsIC4uLnBhc3N3b3JkVmFsaWRhdGlvbnNdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIHJlcGVhdE5ld1Bhc3N3b3JkOiBbXHJcbiAgICAgICAgICAnJyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9yczogW3JlcXVpcmVkLCAuLi5wYXNzd29yZFZhbGlkYXRpb25zXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHZhbGlkYXRvcnM6IFtjb21wYXJlUGFzc3dvcmRzKFBBU1NXT1JEX0ZJRUxEUyldLFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5oaWRlQ3VycmVudFBhc3N3b3JkKSB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbCgncGFzc3dvcmQnKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XHJcbiAgICB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5wcm9maWxlU2VydmljZVxyXG4gICAgICAuY2hhbmdlUGFzc3dvcmQoe1xyXG4gICAgICAgIC4uLighdGhpcy5oaWRlQ3VycmVudFBhc3N3b3JkICYmIHsgY3VycmVudFBhc3N3b3JkOiB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpLnZhbHVlIH0pLFxyXG4gICAgICAgIG5ld1Bhc3N3b3JkOiB0aGlzLmZvcm0uZ2V0KCduZXdQYXNzd29yZCcpLnZhbHVlLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pblByb2dyZXNzID0gZmFsc2UpKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ0FicEFjY291bnQ6OlBhc3N3b3JkQ2hhbmdlZE1lc3NhZ2UnLCAnJywge1xyXG4gICAgICAgICAgICBsaWZlOiA1MDAwLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuaGlkZUN1cnJlbnRQYXNzd29yZCkge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVDdXJyZW50UGFzc3dvcmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ3Bhc3N3b3JkJywgbmV3IEZvcm1Db250cm9sKCcnLCBbcmVxdWlyZWRdKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoZXJyLmVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCAnQWJwQWNjb3VudDo6RGVmYXVsdEVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiIFttYXBFcnJvcnNGbl09XCJtYXBFcnJvcnNGblwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgPGRpdiAqbmdJZj1cIiFoaWRlQ3VycmVudFBhc3N3b3JkXCIgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cclxuICAgIDxsYWJlbCBmb3I9XCJjdXJyZW50LXBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcclxuICAgICAgJ0FicElkZW50aXR5OjpEaXNwbGF5TmFtZTpDdXJyZW50UGFzc3dvcmQnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICB9fTwvbGFiZWxcclxuICAgID48c3Bhbj4gKiA8L3NwYW5cclxuICAgID48aW5wdXRcclxuICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgaWQ9XCJjdXJyZW50LXBhc3N3b3JkXCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXHJcbiAgICAgIGF1dG9mb2N1c1xyXG4gICAgICBhdXRvY29tcGxldGU9XCJjdXJyZW50LXBhc3N3b3JkXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1iLTMgZm9ybS1ncm91cFwiPlxyXG4gICAgPGxhYmVsIGZvcj1cIm5ldy1wYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7XHJcbiAgICAgICdBYnBJZGVudGl0eTo6RGlzcGxheU5hbWU6TmV3UGFzc3dvcmQnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICB9fTwvbGFiZWxcclxuICAgID48c3Bhbj4gKiA8L3NwYW5cclxuICAgID48aW5wdXRcclxuICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgaWQ9XCJuZXctcGFzc3dvcmRcIlxyXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5ld1Bhc3N3b3JkXCJcclxuICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1iLTMgZm9ybS1ncm91cFwiPlxyXG4gICAgPGxhYmVsIGZvcj1cImNvbmZpcm0tbmV3LXBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcclxuICAgICAgJ0FicElkZW50aXR5OjpEaXNwbGF5TmFtZTpOZXdQYXNzd29yZENvbmZpcm0nIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICB9fTwvbGFiZWxcclxuICAgID48c3Bhbj4gKiA8L3NwYW5cclxuICAgID48aW5wdXRcclxuICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgaWQ9XCJjb25maXJtLW5ldy1wYXNzd29yZFwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVwZWF0TmV3UGFzc3dvcmRcIlxyXG4gICAgICBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuICA8YWJwLWJ1dHRvblxyXG4gICAgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIlxyXG4gICAgYnV0dG9uQ2xhc3M9XCJidG4gYnRuLXByaW1hcnkgY29sb3Itd2hpdGVcIlxyXG4gICAgYnV0dG9uVHlwZT1cInN1Ym1pdFwiXHJcbiAgICBbbG9hZGluZ109XCJpblByb2dyZXNzXCJcclxuICAgIFtkaXNhYmxlZF09XCJmb3JtPy5pbnZhbGlkXCJcclxuICAgID57eyAnQWJwSWRlbnRpdHk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hYnAtYnV0dG9uXHJcbiAgPlxyXG48L2Zvcm0+XHJcbiJdfQ==
|
|
1
|
+
import { ProfileService } from '@abp/ng.account.core/proxy';
|
|
2
|
+
import { getPasswordValidators, ToasterService } from '@abp/ng.theme.shared';
|
|
3
|
+
import { Component, Injector } from '@angular/core';
|
|
4
|
+
import { FormBuilder, FormControl, Validators } from '@angular/forms';
|
|
5
|
+
import { comparePasswords } from '@ngx-validate/core';
|
|
6
|
+
import { finalize } from 'rxjs/operators';
|
|
7
|
+
import { ManageProfileStateService } from '../../services/manage-profile.state.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@abp/ng.theme.shared";
|
|
11
|
+
import * as i3 from "@abp/ng.account.core/proxy";
|
|
12
|
+
import * as i4 from "../../services/manage-profile.state.service";
|
|
13
|
+
import * as i5 from "@abp/ng.core";
|
|
14
|
+
import * as i6 from "@ngx-validate/core";
|
|
15
|
+
import * as i7 from "@angular/common";
|
|
16
|
+
const { required } = Validators;
|
|
17
|
+
const PASSWORD_FIELDS = ['newPassword', 'repeatNewPassword'];
|
|
18
|
+
export class ChangePasswordComponent {
|
|
19
|
+
constructor(fb, injector, toasterService, profileService, manageProfileState) {
|
|
20
|
+
this.fb = fb;
|
|
21
|
+
this.injector = injector;
|
|
22
|
+
this.toasterService = toasterService;
|
|
23
|
+
this.profileService = profileService;
|
|
24
|
+
this.manageProfileState = manageProfileState;
|
|
25
|
+
this.mapErrorsFn = (errors, groupErrors, control) => {
|
|
26
|
+
if (PASSWORD_FIELDS.indexOf(String(control.name)) < 0)
|
|
27
|
+
return errors;
|
|
28
|
+
return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch'));
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
var _a;
|
|
33
|
+
this.hideCurrentPassword = !((_a = this.manageProfileState.getProfile()) === null || _a === void 0 ? void 0 : _a.hasPassword);
|
|
34
|
+
const passwordValidations = getPasswordValidators(this.injector);
|
|
35
|
+
this.form = this.fb.group({
|
|
36
|
+
password: ['', required],
|
|
37
|
+
newPassword: [
|
|
38
|
+
'',
|
|
39
|
+
{
|
|
40
|
+
validators: [required, ...passwordValidations],
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
repeatNewPassword: [
|
|
44
|
+
'',
|
|
45
|
+
{
|
|
46
|
+
validators: [required, ...passwordValidations],
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
}, {
|
|
50
|
+
validators: [comparePasswords(PASSWORD_FIELDS)],
|
|
51
|
+
});
|
|
52
|
+
if (this.hideCurrentPassword)
|
|
53
|
+
this.form.removeControl('password');
|
|
54
|
+
}
|
|
55
|
+
onSubmit() {
|
|
56
|
+
if (this.form.invalid)
|
|
57
|
+
return;
|
|
58
|
+
this.inProgress = true;
|
|
59
|
+
this.profileService
|
|
60
|
+
.changePassword(Object.assign(Object.assign({}, (!this.hideCurrentPassword && { currentPassword: this.form.get('password').value })), { newPassword: this.form.get('newPassword').value }))
|
|
61
|
+
.pipe(finalize(() => (this.inProgress = false)))
|
|
62
|
+
.subscribe({
|
|
63
|
+
next: () => {
|
|
64
|
+
this.form.reset();
|
|
65
|
+
this.toasterService.success('AbpAccount::PasswordChangedMessage', '', {
|
|
66
|
+
life: 5000,
|
|
67
|
+
});
|
|
68
|
+
if (this.hideCurrentPassword) {
|
|
69
|
+
this.hideCurrentPassword = false;
|
|
70
|
+
this.form.addControl('password', new FormControl('', [required]));
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
error: err => {
|
|
74
|
+
var _a, _b;
|
|
75
|
+
this.toasterService.error(((_b = (_a = err.error) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.message) || 'AbpAccount::DefaultErrorMessage');
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
ChangePasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ChangePasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i0.Injector }, { token: i2.ToasterService }, { token: i3.ProfileService }, { token: i4.ManageProfileStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
ChangePasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ChangePasswordComponent, selector: "abp-change-password-form", exportAs: ["abpChangePasswordForm"], ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [mapErrorsFn]=\"mapErrorsFn\" validateOnSubmit>\n <div *ngIf=\"!hideCurrentPassword\" class=\"mb-3 form-group\">\n <label for=\"current-password\" class=\"form-label\">{{\n 'AbpIdentity::DisplayName:CurrentPassword' | abpLocalization\n }}</label\n ><span> * </span\n ><input\n type=\"password\"\n id=\"current-password\"\n class=\"form-control\"\n formControlName=\"password\"\n autofocus\n autocomplete=\"current-password\"\n />\n </div>\n <div class=\"mb-3 form-group\">\n <label for=\"new-password\" class=\"form-label\">{{\n 'AbpIdentity::DisplayName:NewPassword' | abpLocalization\n }}</label\n ><span> * </span\n ><input\n type=\"password\"\n id=\"new-password\"\n class=\"form-control\"\n formControlName=\"newPassword\"\n autocomplete=\"new-password\"\n />\n </div>\n <div class=\"mb-3 form-group\">\n <label for=\"confirm-new-password\" class=\"form-label\">{{\n 'AbpIdentity::DisplayName:NewPasswordConfirm' | abpLocalization\n }}</label\n ><span> * </span\n ><input\n type=\"password\"\n id=\"confirm-new-password\"\n class=\"form-control\"\n formControlName=\"repeatNewPassword\"\n autocomplete=\"new-password\"\n />\n </div>\n <abp-button\n iconClass=\"fa fa-check\"\n buttonClass=\"btn btn-primary color-white\"\n buttonType=\"submit\"\n [loading]=\"inProgress\"\n [disabled]=\"form?.invalid\"\n >{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\n >\n</form>\n", components: [{ type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i5.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }], pipes: { "abpLocalization": i5.LocalizationPipe } });
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ChangePasswordComponent, decorators: [{
|
|
83
|
+
type: Component,
|
|
84
|
+
args: [{
|
|
85
|
+
selector: 'abp-change-password-form',
|
|
86
|
+
templateUrl: './change-password.component.html',
|
|
87
|
+
exportAs: 'abpChangePasswordForm',
|
|
88
|
+
}]
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.Injector }, { type: i2.ToasterService }, { type: i3.ProfileService }, { type: i4.ManageProfileStateService }]; } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FjY291bnQvc3JjL2xpYi9jb21wb25lbnRzL2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7O0FBRXhGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFFaEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQU83RCxNQUFNLE9BQU8sdUJBQXVCO0lBZWxDLFlBQ1UsRUFBZSxFQUNmLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGtCQUE2QztRQUo3QyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNs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Q0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUEsTUFBQSxNQUFBLEdBQUcsQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsT0FBTyxLQUFJLGlDQUFpQyxDQUFDLENBQUM7WUFDNUYsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7O3FIQTdFVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixxR0NsQnBDLGtrREFrREE7NEZEaENhLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxRQUFRLEVBQUUsdUJBQXVCO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5hY2NvdW50LmNvcmUvcHJveHknO1xuaW1wb3J0IHsgZ2V0UGFzc3dvcmRWYWxpZGF0b3JzLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21wYXJlUGFzc3dvcmRzLCBWYWxpZGF0aW9uIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWNjb3VudCB9IGZyb20gJy4uLy4uL21vZGVscy9hY2NvdW50JztcbmltcG9ydCB7IE1hbmFnZVByb2ZpbGVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYW5hZ2UtcHJvZmlsZS5zdGF0ZS5zZXJ2aWNlJztcblxuY29uc3QgeyByZXF1aXJlZCB9ID0gVmFsaWRhdG9ycztcblxuY29uc3QgUEFTU1dPUkRfRklFTERTID0gWyduZXdQYXNzd29yZCcsICdyZXBlYXROZXdQYXNzd29yZCddO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtY2hhbmdlLXBhc3N3b3JkLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC5odG1sJyxcbiAgZXhwb3J0QXM6ICdhYnBDaGFuZ2VQYXNzd29yZEZvcm0nLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VQYXNzd29yZENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWNjb3VudC5DaGFuZ2VQYXNzd29yZENvbXBvbmVudElucHV0cywgQWNjb3VudC5DaGFuZ2VQYXNzd29yZENvbXBvbmVudE91dHB1dHNcbntcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGluUHJvZ3Jlc3M6IGJvb2xlYW47XG5cbiAgaGlkZUN1cnJlbnRQYXNzd29yZDogYm9vbGVhbjtcblxuICBtYXBFcnJvcnNGbjogVmFsaWRhdGlvbi5NYXBFcnJvcnNGbiA9IChlcnJvcnMsIGdyb3VwRXJyb3JzLCBjb250cm9sKSA9PiB7XG4gICAgaWYgKFBBU1NXT1JEX0ZJRUxEUy5pbmRleE9mKFN0cmluZyhjb250cm9sLm5hbWUpKSA8IDApIHJldHVybiBlcnJvcnM7XG5cbiAgICByZXR1cm4gZXJyb3JzLmNvbmNhdChncm91cEVycm9ycy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSA9PT0gJ3Bhc3N3b3JkTWlzbWF0Y2gnKSk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYW5hZ2VQcm9maWxlU3RhdGU6IE1hbmFnZVByb2ZpbGVTdGF0ZVNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVDdXJyZW50UGFzc3dvcmQgPSAhdGhpcy5tYW5hZ2VQcm9maWxlU3RhdGUuZ2V0UHJvZmlsZSgpPy5oYXNQYXNzd29yZDtcblxuICAgIGNvbnN0IHBhc3N3b3JkVmFsaWRhdGlvbnMgPSBnZXRQYXNzd29yZFZhbGlkYXRvcnModGhpcy5pbmplY3Rvcik7XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKFxuICAgICAge1xuICAgICAgICBwYXNzd29yZDogWycnLCByZXF1aXJlZF0sXG4gICAgICAgIG5ld1Bhc3N3b3JkOiBbXG4gICAgICAgICAgJycsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsaWRhdG9yczogW3JlcXVpcmVkLCAuLi5wYXNzd29yZFZhbGlkYXRpb25zXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICByZXBlYXROZXdQYXNzd29yZDogW1xuICAgICAgICAgICcnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtyZXF1aXJlZCwgLi4ucGFzc3dvcmRWYWxpZGF0aW9uc10sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbGlkYXRvcnM6IFtjb21wYXJlUGFzc3dvcmRzKFBBU1NXT1JEX0ZJRUxEUyldLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuaGlkZUN1cnJlbnRQYXNzd29yZCkgdGhpcy5mb3JtLnJlbW92ZUNvbnRyb2woJ3Bhc3N3b3JkJyk7XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcbiAgICB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMucHJvZmlsZVNlcnZpY2VcbiAgICAgIC5jaGFuZ2VQYXNzd29yZCh7XG4gICAgICAgIC4uLighdGhpcy5oaWRlQ3VycmVudFBhc3N3b3JkICYmIHsgY3VycmVudFBhc3N3b3JkOiB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpLnZhbHVlIH0pLFxuICAgICAgICBuZXdQYXNzd29yZDogdGhpcy5mb3JtLmdldCgnbmV3UGFzc3dvcmQnKS52YWx1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pblByb2dyZXNzID0gZmFsc2UpKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdBYnBBY2NvdW50OjpQYXNzd29yZENoYW5nZWRNZXNzYWdlJywgJycsIHtcbiAgICAgICAgICAgIGxpZmU6IDUwMDAsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5oaWRlQ3VycmVudFBhc3N3b3JkKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVDdXJyZW50UGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCdwYXNzd29yZCcsIG5ldyBGb3JtQ29udHJvbCgnJywgW3JlcXVpcmVkXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnIuZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8ICdBYnBBY2NvdW50OjpEZWZhdWx0RXJyb3JNZXNzYWdlJyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIiBbbWFwRXJyb3JzRm5dPVwibWFwRXJyb3JzRm5cIiB2YWxpZGF0ZU9uU3VibWl0PlxuICA8ZGl2ICpuZ0lmPVwiIWhpZGVDdXJyZW50UGFzc3dvcmRcIiBjbGFzcz1cIm1iLTMgZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBmb3I9XCJjdXJyZW50LXBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcbiAgICAgICdBYnBJZGVudGl0eTo6RGlzcGxheU5hbWU6Q3VycmVudFBhc3N3b3JkJyB8IGFicExvY2FsaXphdGlvblxuICAgIH19PC9sYWJlbFxuICAgID48c3Bhbj4gKiA8L3NwYW5cbiAgICA+PGlucHV0XG4gICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgaWQ9XCJjdXJyZW50LXBhc3N3b3JkXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgIGF1dG9mb2N1c1xuICAgICAgYXV0b2NvbXBsZXRlPVwiY3VycmVudC1wYXNzd29yZFwiXG4gICAgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgZm9yPVwibmV3LXBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcbiAgICAgICdBYnBJZGVudGl0eTo6RGlzcGxheU5hbWU6TmV3UGFzc3dvcmQnIHwgYWJwTG9jYWxpemF0aW9uXG4gICAgfX08L2xhYmVsXG4gICAgPjxzcGFuPiAqIDwvc3BhblxuICAgID48aW5wdXRcbiAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICBpZD1cIm5ldy1wYXNzd29yZFwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuZXdQYXNzd29yZFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgIC8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWItMyBmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGZvcj1cImNvbmZpcm0tbmV3LXBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcbiAgICAgICdBYnBJZGVudGl0eTo6RGlzcGxheU5hbWU6TmV3UGFzc3dvcmRDb25maXJtJyB8IGFicExvY2FsaXphdGlvblxuICAgIH19PC9sYWJlbFxuICAgID48c3Bhbj4gKiA8L3NwYW5cbiAgICA+PGlucHV0XG4gICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgaWQ9XCJjb25maXJtLW5ldy1wYXNzd29yZFwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZXBlYXROZXdQYXNzd29yZFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgIC8+XG4gIDwvZGl2PlxuICA8YWJwLWJ1dHRvblxuICAgIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcbiAgICBidXR0b25DbGFzcz1cImJ0biBidG4tcHJpbWFyeSBjb2xvci13aGl0ZVwiXG4gICAgYnV0dG9uVHlwZT1cInN1Ym1pdFwiXG4gICAgW2xvYWRpbmddPVwiaW5Qcm9ncmVzc1wiXG4gICAgW2Rpc2FibGVkXT1cImZvcm0/LmludmFsaWRcIlxuICAgID57eyAnQWJwSWRlbnRpdHk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hYnAtYnV0dG9uXG4gID5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import { AccountService } from '@abp/ng.account.core/proxy';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import { FormBuilder, Validators } from '@angular/forms';
|
|
4
|
-
import { finalize } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/forms";
|
|
7
|
-
import * as i2 from "@abp/ng.account.core/proxy";
|
|
8
|
-
import * as i3 from "@abp/ng.theme.shared";
|
|
9
|
-
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "@abp/ng.core";
|
|
11
|
-
import * as i6 from "@ngx-validate/core";
|
|
12
|
-
import * as i7 from "@angular/router";
|
|
13
|
-
export class ForgotPasswordComponent {
|
|
14
|
-
constructor(fb, accountService) {
|
|
15
|
-
this.fb = fb;
|
|
16
|
-
this.accountService = accountService;
|
|
17
|
-
this.isEmailSent = false;
|
|
18
|
-
this.form = this.fb.group({
|
|
19
|
-
email: ['', [Validators.required, Validators.email]],
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
onSubmit() {
|
|
23
|
-
if (this.form.invalid)
|
|
24
|
-
return;
|
|
25
|
-
this.inProgress = true;
|
|
26
|
-
this.accountService
|
|
27
|
-
.sendPasswordResetCode({
|
|
28
|
-
email: this.form.get('email').value,
|
|
29
|
-
appName: 'Angular',
|
|
30
|
-
})
|
|
31
|
-
.pipe(finalize(() => (this.inProgress = false)))
|
|
32
|
-
.subscribe(() => {
|
|
33
|
-
this.isEmailSent = true;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ForgotPasswordComponent, selector: "abp-forgot-password", ngImport: i0, template: "<h4>{{ 'AbpAccount::ForgotPassword' | abpLocalization }}</h4>\
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
40
|
-
type: Component,
|
|
41
|
-
args: [{
|
|
42
|
-
selector: 'abp-forgot-password',
|
|
43
|
-
templateUrl: 'forgot-password.component.html',
|
|
44
|
-
}]
|
|
45
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.AccountService }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { AccountService } from '@abp/ng.account.core/proxy';
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { FormBuilder, Validators } from '@angular/forms';
|
|
4
|
+
import { finalize } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "@abp/ng.account.core/proxy";
|
|
8
|
+
import * as i3 from "@abp/ng.theme.shared";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "@abp/ng.core";
|
|
11
|
+
import * as i6 from "@ngx-validate/core";
|
|
12
|
+
import * as i7 from "@angular/router";
|
|
13
|
+
export class ForgotPasswordComponent {
|
|
14
|
+
constructor(fb, accountService) {
|
|
15
|
+
this.fb = fb;
|
|
16
|
+
this.accountService = accountService;
|
|
17
|
+
this.isEmailSent = false;
|
|
18
|
+
this.form = this.fb.group({
|
|
19
|
+
email: ['', [Validators.required, Validators.email]],
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
onSubmit() {
|
|
23
|
+
if (this.form.invalid)
|
|
24
|
+
return;
|
|
25
|
+
this.inProgress = true;
|
|
26
|
+
this.accountService
|
|
27
|
+
.sendPasswordResetCode({
|
|
28
|
+
email: this.form.get('email').value,
|
|
29
|
+
appName: 'Angular',
|
|
30
|
+
})
|
|
31
|
+
.pipe(finalize(() => (this.inProgress = false)))
|
|
32
|
+
.subscribe(() => {
|
|
33
|
+
this.isEmailSent = true;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
+
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ForgotPasswordComponent, selector: "abp-forgot-password", ngImport: i0, template: "<h4>{{ 'AbpAccount::ForgotPassword' | abpLocalization }}</h4>\n\n<form\n *ngIf=\"!isEmailSent; else emailSentTemplate\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit()\"\n validateOnSubmit\n>\n <p>{{ 'AbpAccount::SendPasswordResetLink_Information' | abpLocalization }}</p>\n <div class=\"mb-3 form-group\">\n <label for=\"input-email-address\" class=\"form-label\">{{\n 'AbpAccount::EmailAddress' | abpLocalization\n }}</label\n ><span> * </span>\n <input type=\"email\" id=\"input-email-address\" class=\"form-control\" formControlName=\"email\" />\n </div>\n <abp-button\n class=\"d-block\"\n buttonClass=\"mt-2 mb-3 btn btn-primary btn-block\"\n [loading]=\"inProgress\"\n buttonType=\"submit\"\n [disabled]=\"form?.invalid\"\n >\n {{ 'AbpAccount::Submit' | abpLocalization }}\n </abp-button>\n <a routerLink=\"/account/login\"\n ><i class=\"fa fa-long-arrow-left me-1\"></i>{{ 'AbpAccount::Login' | abpLocalization }}</a\n >\n</form>\n\n<ng-template #emailSentTemplate>\n <p>\n {{ 'AbpAccount::PasswordResetMailSentMessage' | abpLocalization }}\n </p>\n\n <a routerLink=\"/account/login\">\n <button class=\"d-block mt-2 mb-3 btn btn-primary btn-block\">\n <i class=\"fa fa-long-arrow-left me-1\"></i>\n {{ 'AbpAccount::BackToLogin' | abpLocalization }}\n </button>\n </a>\n</ng-template>\n", components: [{ type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i7.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "abpLocalization": i5.LocalizationPipe } });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: 'abp-forgot-password',
|
|
43
|
+
templateUrl: 'forgot-password.component.html',
|
|
44
|
+
}]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.AccountService }]; } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FjY291bnQvc3JjL2xpYi9jb21wb25lbnRzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBTTFDLE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFBb0IsRUFBZSxFQUFVLGNBQThCO1FBQXZELE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFGM0UsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixJQUFJLENBQUMsY0FBYzthQUNoQixxQkFBcUIsQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSztZQUNuQyxPQUFPLEVBQUUsU0FBUztTQUNuQixDQUFDO2FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMvQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztxSEEzQlUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMkRDVHBDLDAxQ0EwQ0E7NEZEakNhLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsZ0NBQWdDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5hY2NvdW50LmNvcmUvcHJveHknO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1mb3Jnb3QtcGFzc3dvcmQnLFxuICB0ZW1wbGF0ZVVybDogJ2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IHtcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGluUHJvZ3Jlc3M6IGJvb2xlYW47XG5cbiAgaXNFbWFpbFNlbnQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgfSk7XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcblxuICAgIHRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICB0aGlzLmFjY291bnRTZXJ2aWNlXG4gICAgICAuc2VuZFBhc3N3b3JkUmVzZXRDb2RlKHtcbiAgICAgICAgZW1haWw6IHRoaXMuZm9ybS5nZXQoJ2VtYWlsJykudmFsdWUsXG4gICAgICAgIGFwcE5hbWU6ICdBbmd1bGFyJyxcbiAgICAgIH0pXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pblByb2dyZXNzID0gZmFsc2UpKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzRW1haWxTZW50ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8aDQ+e3sgJ0FicEFjY291bnQ6OkZvcmdvdFBhc3N3b3JkJyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDQ+XG5cbjxmb3JtXG4gICpuZ0lmPVwiIWlzRW1haWxTZW50OyBlbHNlIGVtYWlsU2VudFRlbXBsYXRlXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIlxuICB2YWxpZGF0ZU9uU3VibWl0XG4+XG4gIDxwPnt7ICdBYnBBY2NvdW50OjpTZW5kUGFzc3dvcmRSZXNldExpbmtfSW5mb3JtYXRpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9wPlxuICA8ZGl2IGNsYXNzPVwibWItMyBmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGZvcj1cImlucHV0LWVtYWlsLWFkZHJlc3NcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57e1xuICAgICAgJ0FicEFjY291bnQ6OkVtYWlsQWRkcmVzcycgfCBhYnBMb2NhbGl6YXRpb25cbiAgICB9fTwvbGFiZWxcbiAgICA+PHNwYW4+ICogPC9zcGFuPlxuICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBpZD1cImlucHV0LWVtYWlsLWFkZHJlc3NcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgLz5cbiAgPC9kaXY+XG4gIDxhYnAtYnV0dG9uXG4gICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICBidXR0b25DbGFzcz1cIm10LTIgbWItMyBidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrXCJcbiAgICBbbG9hZGluZ109XCJpblByb2dyZXNzXCJcbiAgICBidXR0b25UeXBlPVwic3VibWl0XCJcbiAgICBbZGlzYWJsZWRdPVwiZm9ybT8uaW52YWxpZFwiXG4gID5cbiAgICB7eyAnQWJwQWNjb3VudDo6U3VibWl0JyB8IGFicExvY2FsaXphdGlvbiB9fVxuICA8L2FicC1idXR0b24+XG4gIDxhIHJvdXRlckxpbms9XCIvYWNjb3VudC9sb2dpblwiXG4gICAgPjxpIGNsYXNzPVwiZmEgZmEtbG9uZy1hcnJvdy1sZWZ0IG1lLTFcIj48L2k+e3sgJ0FicEFjY291bnQ6OkxvZ2luJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYVxuICA+XG48L2Zvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjZW1haWxTZW50VGVtcGxhdGU+XG4gIDxwPlxuICAgIHt7ICdBYnBBY2NvdW50OjpQYXNzd29yZFJlc2V0TWFpbFNlbnRNZXNzYWdlJyB8IGFicExvY2FsaXphdGlvbiB9fVxuICA8L3A+XG5cbiAgPGEgcm91dGVyTGluaz1cIi9hY2NvdW50L2xvZ2luXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImQtYmxvY2sgbXQtMiBtYi0zIGJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2tcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbG9uZy1hcnJvdy1sZWZ0IG1lLTFcIj48L2k+XG4gICAgICB7eyAnQWJwQWNjb3VudDo6QmFja1RvTG9naW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgPC9idXR0b24+XG4gIDwvYT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './change-password/change-password.component';
|
|
2
|
-
export * from './forgot-password/forgot-password.component';
|
|
3
|
-
export * from './login/login.component';
|
|
4
|
-
export * from './manage-profile/manage-profile.component';
|
|
5
|
-
export * from './register/register.component';
|
|
6
|
-
export * from './personal-settings/personal-settings.component';
|
|
7
|
-
export * from './reset-password/reset-password.component';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './change-password/change-password.component';
|
|
2
|
+
export * from './forgot-password/forgot-password.component';
|
|
3
|
+
export * from './login/login.component';
|
|
4
|
+
export * from './manage-profile/manage-profile.component';
|
|
5
|
+
export * from './register/register.component';
|
|
6
|
+
export * from './personal-settings/personal-settings.component';
|
|
7
|
+
export * from './reset-password/reset-password.component';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4vbG9naW4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFuYWdlLXByb2ZpbGUvbWFuYWdlLXByb2ZpbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGVyc29uYWwtc2V0dGluZ3MvcGVyc29uYWwtc2V0dGluZ3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import { AuthService, ConfigStateService } from '@abp/ng.core';
|
|
2
|
-
import { ToasterService } from '@abp/ng.theme.shared';
|
|
3
|
-
import { Component, Injector } from '@angular/core';
|
|
4
|
-
import { FormBuilder, Validators } from '@angular/forms';
|
|
5
|
-
import { throwError } from 'rxjs';
|
|
6
|
-
import { catchError, finalize } from 'rxjs/operators';
|
|
7
|
-
import { getRedirectUrl } from '../../utils/auth-utils';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/forms";
|
|
10
|
-
import * as i2 from "@abp/ng.theme.shared";
|
|
11
|
-
import * as i3 from "@abp/ng.core";
|
|
12
|
-
import * as i4 from "@angular/common";
|
|
13
|
-
import * as i5 from "@angular/router";
|
|
14
|
-
import * as i6 from "@ngx-validate/core";
|
|
15
|
-
const { maxLength, required } = Validators;
|
|
16
|
-
export class LoginComponent {
|
|
17
|
-
constructor(injector, fb, toasterService, authService, configState) {
|
|
18
|
-
this.injector = injector;
|
|
19
|
-
this.fb = fb;
|
|
20
|
-
this.toasterService = toasterService;
|
|
21
|
-
this.authService = authService;
|
|
22
|
-
this.configState = configState;
|
|
23
|
-
this.isSelfRegistrationEnabled = true;
|
|
24
|
-
this.authWrapperKey = "Account.AuthWrapperComponent" /* AuthWrapper */;
|
|
25
|
-
}
|
|
26
|
-
ngOnInit() {
|
|
27
|
-
this.init();
|
|
28
|
-
this.buildForm();
|
|
29
|
-
}
|
|
30
|
-
init() {
|
|
31
|
-
this.isSelfRegistrationEnabled =
|
|
32
|
-
(this.configState.getSetting('Abp.Account.IsSelfRegistrationEnabled') || '').toLowerCase() !== 'false';
|
|
33
|
-
}
|
|
34
|
-
buildForm() {
|
|
35
|
-
this.form = this.fb.group({
|
|
36
|
-
username: ['', [required, maxLength(255)]],
|
|
37
|
-
password: ['', [required, maxLength(128)]],
|
|
38
|
-
rememberMe: [false],
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
onSubmit() {
|
|
42
|
-
if (this.form.invalid)
|
|
43
|
-
return;
|
|
44
|
-
this.inProgress = true;
|
|
45
|
-
const { username, password, rememberMe } = this.form.value;
|
|
46
|
-
const redirectUrl = getRedirectUrl(this.injector);
|
|
47
|
-
this.authService
|
|
48
|
-
.login({ username, password, rememberMe, redirectUrl })
|
|
49
|
-
.pipe(catchError(err => {
|
|
50
|
-
var _a, _b;
|
|
51
|
-
this.toasterService.error(((_a = err.error) === null || _a === void 0 ? void 0 : _a.error_description) ||
|
|
52
|
-
((_b = err.error) === null || _b === void 0 ? void 0 : _b.error.message) ||
|
|
53
|
-
'AbpAccount::DefaultErrorMessage', null, { life: 7000 });
|
|
54
|
-
return throwError(err);
|
|
55
|
-
}), finalize(() => (this.inProgress = false)))
|
|
56
|
-
.subscribe();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LoginComponent, deps: [{ token: i0.Injector }, { token: i1.FormBuilder }, { token: i2.ToasterService }, { token: i3.AuthService }, { token: i3.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
-
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: LoginComponent, selector: "abp-login", ngImport: i0, template: "<h4>{{ 'AbpAccount::Login' | abpLocalization }}</h4>\
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LoginComponent, decorators: [{
|
|
62
|
-
type: Component,
|
|
63
|
-
args: [{
|
|
64
|
-
selector: 'abp-login',
|
|
65
|
-
templateUrl: './login.component.html',
|
|
66
|
-
}]
|
|
67
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.FormBuilder }, { type: i2.ToasterService }, { type: i3.AuthService }, { type: i3.ConfigStateService }]; } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { AuthService, ConfigStateService } from '@abp/ng.core';
|
|
2
|
+
import { ToasterService } from '@abp/ng.theme.shared';
|
|
3
|
+
import { Component, Injector } from '@angular/core';
|
|
4
|
+
import { FormBuilder, Validators } from '@angular/forms';
|
|
5
|
+
import { throwError } from 'rxjs';
|
|
6
|
+
import { catchError, finalize } from 'rxjs/operators';
|
|
7
|
+
import { getRedirectUrl } from '../../utils/auth-utils';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@abp/ng.theme.shared";
|
|
11
|
+
import * as i3 from "@abp/ng.core";
|
|
12
|
+
import * as i4 from "@angular/common";
|
|
13
|
+
import * as i5 from "@angular/router";
|
|
14
|
+
import * as i6 from "@ngx-validate/core";
|
|
15
|
+
const { maxLength, required } = Validators;
|
|
16
|
+
export class LoginComponent {
|
|
17
|
+
constructor(injector, fb, toasterService, authService, configState) {
|
|
18
|
+
this.injector = injector;
|
|
19
|
+
this.fb = fb;
|
|
20
|
+
this.toasterService = toasterService;
|
|
21
|
+
this.authService = authService;
|
|
22
|
+
this.configState = configState;
|
|
23
|
+
this.isSelfRegistrationEnabled = true;
|
|
24
|
+
this.authWrapperKey = "Account.AuthWrapperComponent" /* AuthWrapper */;
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.init();
|
|
28
|
+
this.buildForm();
|
|
29
|
+
}
|
|
30
|
+
init() {
|
|
31
|
+
this.isSelfRegistrationEnabled =
|
|
32
|
+
(this.configState.getSetting('Abp.Account.IsSelfRegistrationEnabled') || '').toLowerCase() !== 'false';
|
|
33
|
+
}
|
|
34
|
+
buildForm() {
|
|
35
|
+
this.form = this.fb.group({
|
|
36
|
+
username: ['', [required, maxLength(255)]],
|
|
37
|
+
password: ['', [required, maxLength(128)]],
|
|
38
|
+
rememberMe: [false],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
onSubmit() {
|
|
42
|
+
if (this.form.invalid)
|
|
43
|
+
return;
|
|
44
|
+
this.inProgress = true;
|
|
45
|
+
const { username, password, rememberMe } = this.form.value;
|
|
46
|
+
const redirectUrl = getRedirectUrl(this.injector);
|
|
47
|
+
this.authService
|
|
48
|
+
.login({ username, password, rememberMe, redirectUrl })
|
|
49
|
+
.pipe(catchError(err => {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
this.toasterService.error(((_a = err.error) === null || _a === void 0 ? void 0 : _a.error_description) ||
|
|
52
|
+
((_b = err.error) === null || _b === void 0 ? void 0 : _b.error.message) ||
|
|
53
|
+
'AbpAccount::DefaultErrorMessage', null, { life: 7000 });
|
|
54
|
+
return throwError(err);
|
|
55
|
+
}), finalize(() => (this.inProgress = false)))
|
|
56
|
+
.subscribe();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LoginComponent, deps: [{ token: i0.Injector }, { token: i1.FormBuilder }, { token: i2.ToasterService }, { token: i3.AuthService }, { token: i3.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: LoginComponent, selector: "abp-login", ngImport: i0, template: "<h4>{{ 'AbpAccount::Login' | abpLocalization }}</h4>\n<strong *ngIf=\"isSelfRegistrationEnabled\">\n {{ 'AbpAccount::AreYouANewUser' | abpLocalization }}\n <a class=\"text-decoration-none\" routerLink=\"/account/register\" queryParamsHandling=\"preserve\">{{\n 'AbpAccount::Register' | abpLocalization\n }}</a>\n</strong>\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" validateOnSubmit class=\"mt-4\">\n <div class=\"mb-3 form-group\">\n <label for=\"login-input-user-name-or-email-address\" class=\"form-label\">{{\n 'AbpAccount::UserNameOrEmailAddress' | abpLocalization\n }}</label>\n <input\n class=\"form-control\"\n type=\"text\"\n id=\"login-input-user-name-or-email-address\"\n formControlName=\"username\"\n autocomplete=\"username\"\n autofocus\n />\n </div>\n <div class=\"mb-3 form-group\">\n <label for=\"login-input-password\" class=\"form-label\">{{ 'AbpAccount::Password' | abpLocalization }}</label>\n <input\n class=\"form-control\"\n type=\"password\"\n id=\"login-input-password\"\n formControlName=\"password\"\n autocomplete=\"current-password\"\n />\n </div>\n\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"form-check\">\n <label class=\"form-check-label mb-2\" for=\"login-input-remember-me\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n id=\"login-input-remember-me\"\n formControlName=\"rememberMe\"\n />\n {{ 'AbpAccount::RememberMe' | abpLocalization }}\n </label>\n </div>\n </div>\n <div class=\"text-end col\">\n <a routerLink=\"/account/forgot-password\">{{\n 'AbpAccount::ForgotPassword' | abpLocalization\n }}</a>\n </div>\n </div>\n\n <abp-button\n [loading]=\"inProgress\"\n buttonType=\"submit\"\n name=\"Action\"\n buttonClass=\"btn-block btn-lg mt-3 btn btn-primary\"\n >\n {{ 'AbpAccount::Login' | abpLocalization }}\n </abp-button>\n</form>\n", components: [{ type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i3.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }], pipes: { "abpLocalization": i3.LocalizationPipe } });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LoginComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: 'abp-login',
|
|
65
|
+
templateUrl: './login.component.html',
|
|
66
|
+
}]
|
|
67
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.FormBuilder }, { type: i2.ToasterService }, { type: i3.AuthService }, { type: i3.ConfigStateService }]; } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUV4RCxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQU0zQyxNQUFNLE9BQU8sY0FBYztJQVN6QixZQUNZLFFBQWtCLEVBQ2xCLEVBQWUsRUFDZixjQUE4QixFQUM5QixXQUF3QixFQUN4QixXQUErQjtRQUovQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBVDNDLDhCQUF5QixHQUFHLElBQUksQ0FBQztRQUVqQyxtQkFBYyxvREFBa0M7SUFRN0MsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVTLElBQUk7UUFDWixJQUFJLENBQUMseUJBQXlCO1lBQzVCLENBQ0csSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsdUNBQXVDLENBQVksSUFBSSxFQUFFLENBQ3ZGLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFFUyxTQUFTO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdkIsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFM0QsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsV0FBVzthQUNiLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO2FBQ3RELElBQUksQ0FDSCxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7O1lBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQ3ZCLENBQUEsTUFBQSxHQUFHLENBQUMsS0FBSywwQ0FBRSxpQkFBaUI7aUJBQzFCLE1BQUEsR0FBRyxDQUFDLEtBQUssMENBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQTtnQkFDeEIsaUNBQWlDLEVBQ25DLElBQUksRUFDSixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FDZixDQUFDO1lBQ0YsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUMxQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7OzRHQTlEVSxjQUFjO2dHQUFkLGNBQWMsaURDZjNCLHdnRUE4REE7NEZEL0NhLGNBQWM7a0JBSjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFdBQVcsRUFBRSx3QkFBd0I7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aFNlcnZpY2UsIENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZUFjY291bnRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBnZXRSZWRpcmVjdFVybCB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dGgtdXRpbHMnO1xuXG5jb25zdCB7IG1heExlbmd0aCwgcmVxdWlyZWQgfSA9IFZhbGlkYXRvcnM7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGluUHJvZ3Jlc3M6IGJvb2xlYW47XG5cbiAgaXNTZWxmUmVnaXN0cmF0aW9uRW5hYmxlZCA9IHRydWU7XG5cbiAgYXV0aFdyYXBwZXJLZXkgPSBlQWNjb3VudENvbXBvbmVudHMuQXV0aFdyYXBwZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdCgpIHtcbiAgICB0aGlzLmlzU2VsZlJlZ2lzdHJhdGlvbkVuYWJsZWQgPVxuICAgICAgKFxuICAgICAgICAodGhpcy5jb25maWdTdGF0ZS5nZXRTZXR0aW5nKCdBYnAuQWNjb3VudC5Jc1NlbGZSZWdpc3RyYXRpb25FbmFibGVkJykgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgKS50b0xvd2VyQ2FzZSgpICE9PSAnZmFsc2UnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRm9ybSgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHVzZXJuYW1lOiBbJycsIFtyZXF1aXJlZCwgbWF4TGVuZ3RoKDI1NSldXSxcbiAgICAgIHBhc3N3b3JkOiBbJycsIFtyZXF1aXJlZCwgbWF4TGVuZ3RoKDEyOCldXSxcbiAgICAgIHJlbWVtYmVyTWU6IFtmYWxzZV0sXG4gICAgfSk7XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcblxuICAgIHRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICBjb25zdCB7IHVzZXJuYW1lLCBwYXNzd29yZCwgcmVtZW1iZXJNZSB9ID0gdGhpcy5mb3JtLnZhbHVlO1xuXG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBnZXRSZWRpcmVjdFVybCh0aGlzLmluamVjdG9yKTtcblxuICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgIC5sb2dpbih7IHVzZXJuYW1lLCBwYXNzd29yZCwgcmVtZW1iZXJNZSwgcmVkaXJlY3RVcmwgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcbiAgICAgICAgICAgIGVyci5lcnJvcj8uZXJyb3JfZGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvci5tZXNzYWdlIHx8XG4gICAgICAgICAgICAgICdBYnBBY2NvdW50OjpEZWZhdWx0RXJyb3JNZXNzYWdlJyxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB7IGxpZmU6IDcwMDAgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5pblByb2dyZXNzID0gZmFsc2UpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGg0Pnt7ICdBYnBBY2NvdW50OjpMb2dpbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2g0PlxuPHN0cm9uZyAqbmdJZj1cImlzU2VsZlJlZ2lzdHJhdGlvbkVuYWJsZWRcIj5cbiAge3sgJ0FicEFjY291bnQ6OkFyZVlvdUFOZXdVc2VyJyB8IGFicExvY2FsaXphdGlvbiB9fVxuICA8YSBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lXCIgcm91dGVyTGluaz1cIi9hY2NvdW50L3JlZ2lzdGVyXCIgcXVlcnlQYXJhbXNIYW5kbGluZz1cInByZXNlcnZlXCI+e3tcbiAgICAnQWJwQWNjb3VudDo6UmVnaXN0ZXInIHwgYWJwTG9jYWxpemF0aW9uXG4gIH19PC9hPlxuPC9zdHJvbmc+XG48Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiIHZhbGlkYXRlT25TdWJtaXQgY2xhc3M9XCJtdC00XCI+XG4gIDxkaXYgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgZm9yPVwibG9naW4taW5wdXQtdXNlci1uYW1lLW9yLWVtYWlsLWFkZHJlc3NcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57e1xuICAgICAgJ0FicEFjY291bnQ6OlVzZXJOYW1lT3JFbWFpbEFkZHJlc3MnIHwgYWJwTG9jYWxpemF0aW9uXG4gICAgfX08L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgaWQ9XCJsb2dpbi1pbnB1dC11c2VyLW5hbWUtb3ItZW1haWwtYWRkcmVzc1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiXG4gICAgICBhdXRvY29tcGxldGU9XCJ1c2VybmFtZVwiXG4gICAgICBhdXRvZm9jdXNcbiAgICAvPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1iLTMgZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBmb3I9XCJsb2dpbi1pbnB1dC1wYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdBYnBBY2NvdW50OjpQYXNzd29yZCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgIGlkPVwibG9naW4taW5wdXQtcGFzc3dvcmRcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwiY3VycmVudC1wYXNzd29yZFwiXG4gICAgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMlwiIGZvcj1cImxvZ2luLWlucHV0LXJlbWVtYmVyLW1lXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGlkPVwibG9naW4taW5wdXQtcmVtZW1iZXItbWVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVtZW1iZXJNZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7eyAnQWJwQWNjb3VudDo6UmVtZW1iZXJNZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBjb2xcIj5cbiAgICAgIDxhIHJvdXRlckxpbms9XCIvYWNjb3VudC9mb3Jnb3QtcGFzc3dvcmRcIj57e1xuICAgICAgICAnQWJwQWNjb3VudDo6Rm9yZ290UGFzc3dvcmQnIHwgYWJwTG9jYWxpemF0aW9uXG4gICAgICB9fTwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGFicC1idXR0b25cbiAgICBbbG9hZGluZ109XCJpblByb2dyZXNzXCJcbiAgICBidXR0b25UeXBlPVwic3VibWl0XCJcbiAgICBuYW1lPVwiQWN0aW9uXCJcbiAgICBidXR0b25DbGFzcz1cImJ0bi1ibG9jayBidG4tbGcgbXQtMyBidG4gYnRuLXByaW1hcnlcIlxuICA+XG4gICAge3sgJ0FicEFjY291bnQ6OkxvZ2luJyB8IGFicExvY2FsaXphdGlvbiB9fVxuICA8L2FicC1idXR0b24+XG48L2Zvcm0+XG4iXX0=
|