@idea-ionic/auth 8.5.12 → 8.6.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.
Files changed (37) hide show
  1. package/fesm2022/idea-ionic-auth.mjs +52 -52
  2. package/fesm2022/idea-ionic-auth.mjs.map +1 -1
  3. package/index.d.ts +358 -3
  4. package/package.json +14 -16
  5. package/esm2022/idea-ionic-auth.mjs +0 -5
  6. package/esm2022/public-api.mjs +0 -15
  7. package/esm2022/src/auth.routes.mjs +0 -22
  8. package/esm2022/src/auth.service.mjs +0 -521
  9. package/esm2022/src/commonPasswords.model.mjs +0 -1003
  10. package/esm2022/src/confirmPassword.page.mjs +0 -309
  11. package/esm2022/src/forgotPassword.page.mjs +0 -178
  12. package/esm2022/src/mfaChallenge.page.mjs +0 -163
  13. package/esm2022/src/newPassword.page.mjs +0 -210
  14. package/esm2022/src/okta.page.mjs +0 -150
  15. package/esm2022/src/passwordPolicy.component.mjs +0 -80
  16. package/esm2022/src/resendLink.page.mjs +0 -176
  17. package/esm2022/src/setupMFA/setupMFAButton.component.mjs +0 -60
  18. package/esm2022/src/setupMFA/setupMFAModal.component.mjs +0 -176
  19. package/esm2022/src/setupMFA.page.mjs +0 -83
  20. package/esm2022/src/signIn.page.mjs +0 -498
  21. package/esm2022/src/signUp.page.mjs +0 -376
  22. package/public-api.d.ts +0 -14
  23. package/src/auth.routes.d.ts +0 -2
  24. package/src/auth.service.d.ts +0 -152
  25. package/src/commonPasswords.model.d.ts +0 -1
  26. package/src/confirmPassword.page.d.ts +0 -26
  27. package/src/forgotPassword.page.d.ts +0 -13
  28. package/src/mfaChallenge.page.d.ts +0 -16
  29. package/src/newPassword.page.d.ts +0 -22
  30. package/src/okta.page.d.ts +0 -20
  31. package/src/passwordPolicy.component.d.ts +0 -8
  32. package/src/resendLink.page.d.ts +0 -14
  33. package/src/setupMFA/setupMFAButton.component.d.ts +0 -23
  34. package/src/setupMFA/setupMFAModal.component.d.ts +0 -16
  35. package/src/setupMFA.page.d.ts +0 -8
  36. package/src/signIn.page.d.ts +0 -36
  37. package/src/signUp.page.d.ts +0 -26
@@ -1,80 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, inject } from '@angular/core';
3
- import { IonCard, IonCardContent, IonCardHeader, IonCardTitle } from '@ionic/angular/standalone';
4
- import { IDEAEnvironment, IDEATranslatePipe } from '@idea-ionic/common';
5
- import * as i0 from "@angular/core";
6
- export class IDEAPasswordPolicyComponent {
7
- constructor() {
8
- this._env = inject(IDEAEnvironment);
9
- this.passwordPolicy = this._env.idea.auth.passwordPolicy;
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPasswordPolicyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAPasswordPolicyComponent, isStandalone: true, selector: "idea-password-policy", ngImport: i0, template: `
13
- <ion-card class="passwordPolicyCard">
14
- <ion-card-header>
15
- <ion-card-title>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS_TITLE' | translate }}</ion-card-title>
16
- </ion-card-header>
17
- <ion-card-content>
18
- <ul>
19
- <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate: { n: passwordPolicy.minLength } }}</li>
20
- @if (passwordPolicy.requireDigits) {
21
- <li>
22
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_DIGITS' | translate }}
23
- </li>
24
- }
25
- @if (passwordPolicy.requireSymbols) {
26
- <li>
27
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_SYMBOLS' | translate }}
28
- </li>
29
- }
30
- @if (passwordPolicy.requireUppercase) {
31
- <li>
32
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_UPPERCASE' | translate }}
33
- </li>
34
- }
35
- @if (passwordPolicy.requireLowercase) {
36
- <li>
37
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_LOWERCASE' | translate }}
38
- </li>
39
- }
40
- </ul>
41
- </ion-card-content>
42
- </ion-card>
43
- `, isInline: true, styles: ["ion-card.passwordPolicyCard{box-shadow:none;border:none;padding:6px}ion-card.passwordPolicyCard ion-card-title{font-size:1rem}ion-card.passwordPolicyCard ul{margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }] }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPasswordPolicyComponent, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'idea-password-policy', standalone: true, imports: [CommonModule, IDEATranslatePipe, IonCard, IonCardHeader, IonCardTitle, IonCardContent], template: `
48
- <ion-card class="passwordPolicyCard">
49
- <ion-card-header>
50
- <ion-card-title>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS_TITLE' | translate }}</ion-card-title>
51
- </ion-card-header>
52
- <ion-card-content>
53
- <ul>
54
- <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate: { n: passwordPolicy.minLength } }}</li>
55
- @if (passwordPolicy.requireDigits) {
56
- <li>
57
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_DIGITS' | translate }}
58
- </li>
59
- }
60
- @if (passwordPolicy.requireSymbols) {
61
- <li>
62
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_SYMBOLS' | translate }}
63
- </li>
64
- }
65
- @if (passwordPolicy.requireUppercase) {
66
- <li>
67
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_UPPERCASE' | translate }}
68
- </li>
69
- }
70
- @if (passwordPolicy.requireLowercase) {
71
- <li>
72
- {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_LOWERCASE' | translate }}
73
- </li>
74
- }
75
- </ul>
76
- </ion-card-content>
77
- </ion-card>
78
- `, styles: ["ion-card.passwordPolicyCard{box-shadow:none;border:none;padding:6px}ion-card.passwordPolicyCard ion-card-title{font-size:1rem}ion-card.passwordPolicyCard ul{margin:0}\n"] }]
79
- }], ctorParameters: () => [] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmRQb2xpY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9wYXNzd29yZFBvbGljeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBc0R4RSxNQUFNLE9BQU8sMkJBQTJCO0lBS3RDO1FBSlUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUt2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDM0QsQ0FBQzs4R0FQVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnRkFoRDVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JULGlQQWhDUyxZQUFZLDBCQUFFLGlCQUFpQixrREFBRSxPQUFPLHlMQUFFLGFBQWEsc0dBQUUsWUFBWSxzRkFBRSxjQUFjOzsyRkFpRHBGLDJCQUEyQjtrQkFwRHZDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsWUFDdEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNhcmQsIElvbkNhcmRDb250ZW50LCBJb25DYXJkSGVhZGVyLCBJb25DYXJkVGl0bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IElERUFFbnZpcm9ubWVudCwgSURFQVRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXBhc3N3b3JkLXBvbGljeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElERUFUcmFuc2xhdGVQaXBlLCBJb25DYXJkLCBJb25DYXJkSGVhZGVyLCBJb25DYXJkVGl0bGUsIElvbkNhcmRDb250ZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJwYXNzd29yZFBvbGljeUNhcmRcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZT57eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UU19USVRMRScgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxsaT57eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5NSU5fTEVOR1RIJyB8IHRyYW5zbGF0ZTogeyBuOiBwYXNzd29yZFBvbGljeS5taW5MZW5ndGggfSB9fTwvbGk+XG4gICAgICAgICAgQGlmIChwYXNzd29yZFBvbGljeS5yZXF1aXJlRGlnaXRzKSB7XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7ICdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTLlJFUVVJUkVfRElHSVRTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChwYXNzd29yZFBvbGljeS5yZXF1aXJlU3ltYm9scykge1xuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5SRVFVSVJFX1NZTUJPTFMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHBhc3N3b3JkUG9saWN5LnJlcXVpcmVVcHBlcmNhc2UpIHtcbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFMuUkVRVUlSRV9VUFBFUkNBU0UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHBhc3N3b3JkUG9saWN5LnJlcXVpcmVMb3dlcmNhc2UpIHtcbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFMuUkVRVUlSRV9MT1dFUkNBU0UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBpb24tY2FyZC5wYXNzd29yZFBvbGljeUNhcmQge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgIH1cbiAgICAgIGlvbi1jYXJkLnBhc3N3b3JkUG9saWN5Q2FyZCBpb24tY2FyZC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cbiAgICAgIGlvbi1jYXJkLnBhc3N3b3JkUG9saWN5Q2FyZCB1bCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSURFQVBhc3N3b3JkUG9saWN5Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIF9lbnYgPSBpbmplY3QoSURFQUVudmlyb25tZW50KTtcblxuICBwYXNzd29yZFBvbGljeTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucGFzc3dvcmRQb2xpY3kgPSB0aGlzLl9lbnYuaWRlYS5hdXRoLnBhc3N3b3JkUG9saWN5O1xuICB9XG59XG4iXX0=
@@ -1,176 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, inject } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { NavController, IonContent, IonIcon, IonCard, IonCardHeader, IonCardTitle, IonCardContent, IonCardSubtitle, IonInput, IonItem, IonLabel, IonButton } from '@ionic/angular/standalone';
5
- import { IDEAMessageService, IDEALoadingService, IDEATranslationsService, IDEATranslatePipe } from '@idea-ionic/common';
6
- import { IDEAAuthService } from './auth.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/forms";
9
- export class IDEAResendLinkPage {
10
- constructor() {
11
- this._nav = inject(NavController);
12
- this._message = inject(IDEAMessageService);
13
- this._loading = inject(IDEALoadingService);
14
- this._auth = inject(IDEAAuthService);
15
- this._translate = inject(IDEATranslationsService);
16
- }
17
- async resendConfirmationLink() {
18
- this.errorMsg = null;
19
- if (!this.email) {
20
- this.errorMsg = this._translate._('IDEA_AUTH.VALID_EMAIL_OBLIGATORY');
21
- this._message.error('IDEA_AUTH.SENDING_FAILED');
22
- return;
23
- }
24
- try {
25
- await this._loading.show();
26
- await this._auth.resendConfirmationCode(this.email);
27
- this._message.success('IDEA_AUTH.CONFIRMATION_LINK_SENT');
28
- this.goToAuth();
29
- }
30
- catch (error) {
31
- this.errorMsg = this._translate._('IDEA_AUTH.IS_THE_EMAIL_CORRECT');
32
- this._message.error('IDEA_AUTH.SENDING_FAILED');
33
- }
34
- finally {
35
- this._loading.hide();
36
- }
37
- }
38
- goToAuth() {
39
- this._nav.navigateBack(['auth']);
40
- }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAResendLinkPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAResendLinkPage, isStandalone: true, selector: "idea-resend-link", ngImport: i0, template: `
43
- <ion-content>
44
- <form class="flexBox">
45
- <ion-card class="authCard">
46
- <ion-card-header>
47
- <ion-card-title color="primary">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>
48
- <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>
49
- </ion-card-header>
50
- <ion-card-content>
51
- @if (errorMsg) {
52
- <p testId="resendlink.error" class="errorBox">
53
- <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>
54
- {{ errorMsg }}
55
- </p>
56
- }
57
- <ion-item>
58
- <ion-label position="inline">
59
- <ion-icon name="person-circle" color="primary" />
60
- </ion-label>
61
- <ion-input
62
- testId="resendlink.email"
63
- type="email"
64
- inputmode="email"
65
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
66
- spellcheck="false"
67
- autocorrect="off"
68
- autocomplete="email"
69
- [placeholder]="'IDEA_AUTH.EMAIL' | translate"
70
- [title]="'IDEA_AUTH.EMAIL_HINT' | translate"
71
- [ngModelOptions]="{ standalone: true }"
72
- [(ngModel)]="email"
73
- (keyup.enter)="resendConfirmationLink()"
74
- />
75
- </ion-item>
76
- <ion-button
77
- testId="resendLinkButton"
78
- expand="block"
79
- [title]="'IDEA_AUTH.RESEND_LINK_HINT' | translate"
80
- (click)="resendConfirmationLink()"
81
- >
82
- {{ 'IDEA_AUTH.RESEND_LINK' | translate }}
83
- </ion-button>
84
- <ion-button
85
- testId="backToSignInButton"
86
- fill="clear"
87
- expand="block"
88
- class="smallCaseButton"
89
- [title]="'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate"
90
- (click)="goToAuth()"
91
- >
92
- {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}
93
- </ion-button>
94
- </ion-card-content>
95
- </ion-card>
96
- </form>
97
- </ion-content>
98
- `, isInline: true, styles: [".flexBox{background:var(--idea-auth-background-color, var(--ion-color-white-shade))}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--idea-auth-card-background-color, var(--ion-color-white));border:1px solid var(--idea-auth-card-border-color, var(--ion-color-light));border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--idea-auth-card-background-color, var(--ion-color-white));--border-color: var(--idea-auth-card-border-color, var(--ion-color-light))}.authCard ion-card-content ion-label[position=inline] ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button:not([slot=end]){margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}.passwordPolicyPopover{--width: 350px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
99
- }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAResendLinkPage, decorators: [{
101
- type: Component,
102
- args: [{ selector: 'idea-resend-link', standalone: true, imports: [
103
- CommonModule,
104
- FormsModule,
105
- IDEATranslatePipe,
106
- IonButton,
107
- IonLabel,
108
- IonItem,
109
- IonInput,
110
- IonCardSubtitle,
111
- IonCardContent,
112
- IonCardTitle,
113
- IonCardHeader,
114
- IonCard,
115
- IonIcon,
116
- IonContent,
117
- IonInput
118
- ], template: `
119
- <ion-content>
120
- <form class="flexBox">
121
- <ion-card class="authCard">
122
- <ion-card-header>
123
- <ion-card-title color="primary">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>
124
- <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>
125
- </ion-card-header>
126
- <ion-card-content>
127
- @if (errorMsg) {
128
- <p testId="resendlink.error" class="errorBox">
129
- <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>
130
- {{ errorMsg }}
131
- </p>
132
- }
133
- <ion-item>
134
- <ion-label position="inline">
135
- <ion-icon name="person-circle" color="primary" />
136
- </ion-label>
137
- <ion-input
138
- testId="resendlink.email"
139
- type="email"
140
- inputmode="email"
141
- pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
142
- spellcheck="false"
143
- autocorrect="off"
144
- autocomplete="email"
145
- [placeholder]="'IDEA_AUTH.EMAIL' | translate"
146
- [title]="'IDEA_AUTH.EMAIL_HINT' | translate"
147
- [ngModelOptions]="{ standalone: true }"
148
- [(ngModel)]="email"
149
- (keyup.enter)="resendConfirmationLink()"
150
- />
151
- </ion-item>
152
- <ion-button
153
- testId="resendLinkButton"
154
- expand="block"
155
- [title]="'IDEA_AUTH.RESEND_LINK_HINT' | translate"
156
- (click)="resendConfirmationLink()"
157
- >
158
- {{ 'IDEA_AUTH.RESEND_LINK' | translate }}
159
- </ion-button>
160
- <ion-button
161
- testId="backToSignInButton"
162
- fill="clear"
163
- expand="block"
164
- class="smallCaseButton"
165
- [title]="'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate"
166
- (click)="goToAuth()"
167
- >
168
- {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}
169
- </ion-button>
170
- </ion-card-content>
171
- </ion-card>
172
- </form>
173
- </ion-content>
174
- `, styles: [".flexBox{background:var(--idea-auth-background-color, var(--ion-color-white-shade))}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--idea-auth-card-background-color, var(--ion-color-white));border:1px solid var(--idea-auth-card-border-color, var(--ion-color-light));border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--idea-auth-card-background-color, var(--ion-color-white));--border-color: var(--idea-auth-card-border-color, var(--ion-color-light))}.authCard ion-card-content ion-label[position=inline] ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button:not([slot=end]){margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}.passwordPolicyPopover{--width: 350px}\n"] }]
175
- }] });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZW5kTGluay5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9yZXNlbmRMaW5rLnBhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixPQUFPLEVBQ1AsT0FBTyxFQUNQLGFBQWEsRUFDYixZQUFZLEVBQ1osY0FBYyxFQUNkLGVBQWUsRUFDZixRQUFRLEVBQ1IsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1YsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWlGakQsTUFBTSxPQUFPLGtCQUFrQjtJQS9FL0I7UUFnRlUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QixhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLFVBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBNEJ0RDtJQXZCQyxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDaEQsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBaENVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDRFQTNEbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0RULDBuREF4RUMsWUFBWSw4QkFDWixXQUFXLDQ2QkFDWCxpQkFBaUIsa0RBQ2pCLFNBQVMsb1BBQ1QsUUFBUSw2RkFDUixPQUFPLDBOQUNQLFFBQVEsOGVBQ1IsZUFBZSx5RkFDZixjQUFjLCtFQUNkLFlBQVksc0ZBQ1osYUFBYSxzR0FDYixPQUFPLHlMQUNQLE9BQU8sMkpBQ1AsVUFBVTs7MkZBOERELGtCQUFrQjtrQkEvRTlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULFFBQVE7d0JBQ1IsT0FBTzt3QkFDUCxRQUFRO3dCQUNSLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsUUFBUTtxQkFDVCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBOYXZDb250cm9sbGVyLFxuICBJb25Db250ZW50LFxuICBJb25JY29uLFxuICBJb25DYXJkLFxuICBJb25DYXJkSGVhZGVyLFxuICBJb25DYXJkVGl0bGUsXG4gIElvbkNhcmRDb250ZW50LFxuICBJb25DYXJkU3VidGl0bGUsXG4gIElvbklucHV0LFxuICBJb25JdGVtLFxuICBJb25MYWJlbCxcbiAgSW9uQnV0dG9uXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSURFQU1lc3NhZ2VTZXJ2aWNlLCBJREVBTG9hZGluZ1NlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlLCBJREVBVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1yZXNlbmQtbGluaycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSURFQVRyYW5zbGF0ZVBpcGUsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkxhYmVsLFxuICAgIElvbkl0ZW0sXG4gICAgSW9uSW5wdXQsXG4gICAgSW9uQ2FyZFN1YnRpdGxlLFxuICAgIElvbkNhcmRDb250ZW50LFxuICAgIElvbkNhcmRUaXRsZSxcbiAgICBJb25DYXJkSGVhZGVyLFxuICAgIElvbkNhcmQsXG4gICAgSW9uSWNvbixcbiAgICBJb25Db250ZW50LFxuICAgIElvbklucHV0XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1jb250ZW50PlxuICAgICAgPGZvcm0gY2xhc3M9XCJmbGV4Qm94XCI+XG4gICAgICAgIDxpb24tY2FyZCBjbGFzcz1cImF1dGhDYXJkXCI+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZSBjb2xvcj1cInByaW1hcnlcIj57eyAnSURFQV9BVVRILkNPTkZJUk1fQUNDT1VOVCcgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPnt7ICdJREVBX0FVVEguUkVTRU5EX0NPTkZJUk1BVElPTl9MSU5LX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIEBpZiAoZXJyb3JNc2cpIHtcbiAgICAgICAgICAgICAgPHAgdGVzdElkPVwicmVzZW5kbGluay5lcnJvclwiIGNsYXNzPVwiZXJyb3JCb3hcIj5cbiAgICAgICAgICAgICAgICA8Yj4ge3sgJ0lERUFfQVVUSC5FUlJPUicgfCB0cmFuc2xhdGUgfX0uIDwvYj5cbiAgICAgICAgICAgICAgICB7eyBlcnJvck1zZyB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJpbmxpbmVcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1jaXJjbGVcIiBjb2xvcj1cInByaW1hcnlcIiAvPlxuICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICAgIHRlc3RJZD1cInJlc2VuZGxpbmsuZW1haWxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIHBhdHRlcm49XCJbQS1aYS16MC05Ll8lKy1dezIsfUBbYS16QS1aLV8uXXsyLH1bLl17MX1bYS16QS1aXXsyLH1cIlxuICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0lERUFfQVVUSC5FTUFJTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILkVNQUlMX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZXNlbmRDb25maXJtYXRpb25MaW5rKClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIHRlc3RJZD1cInJlc2VuZExpbmtCdXR0b25cIlxuICAgICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILlJFU0VORF9MSU5LX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2VuZENvbmZpcm1hdGlvbkxpbmsoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdJREVBX0FVVEguUkVTRU5EX0xJTksnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICB0ZXN0SWQ9XCJiYWNrVG9TaWduSW5CdXR0b25cIlxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQkFDS19UT19TSUdOX0lOX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9BdXRoKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ2F1dGguc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFSZXNlbmRMaW5rUGFnZSB7XG4gIHByaXZhdGUgX25hdiA9IGluamVjdChOYXZDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChJREVBTWVzc2FnZVNlcnZpY2UpO1xuICBwcml2YXRlIF9sb2FkaW5nID0gaW5qZWN0KElERUFMb2FkaW5nU2VydmljZSk7XG4gIHByaXZhdGUgX2F1dGggPSBpbmplY3QoSURFQUF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcblxuICBlbWFpbDogc3RyaW5nO1xuICBlcnJvck1zZzogc3RyaW5nO1xuXG4gIGFzeW5jIHJlc2VuZENvbmZpcm1hdGlvbkxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XG4gICAgaWYgKCF0aGlzLmVtYWlsKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfQVVUSC5WQUxJRF9FTUFJTF9PQkxJR0FUT1JZJyk7XG4gICAgICB0aGlzLl9tZXNzYWdlLmVycm9yKCdJREVBX0FVVEguU0VORElOR19GQUlMRUQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2xvYWRpbmcuc2hvdygpO1xuICAgICAgYXdhaXQgdGhpcy5fYXV0aC5yZXNlbmRDb25maXJtYXRpb25Db2RlKHRoaXMuZW1haWwpO1xuICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdJREVBX0FVVEguQ09ORklSTUFUSU9OX0xJTktfU0VOVCcpO1xuICAgICAgdGhpcy5nb1RvQXV0aCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfQVVUSC5JU19USEVfRU1BSUxfQ09SUkVDVCcpO1xuICAgICAgdGhpcy5fbWVzc2FnZS5lcnJvcignSURFQV9BVVRILlNFTkRJTkdfRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRpbmcuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9BdXRoKCk6IHZvaWQge1xuICAgIHRoaXMuX25hdi5uYXZpZ2F0ZUJhY2soWydhdXRoJ10pO1xuICB9XG59XG4iXX0=
@@ -1,60 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
3
- import { ModalController, IonButton } from '@ionic/angular/standalone';
4
- import { IDEATranslatePipe } from '@idea-ionic/common';
5
- import { IDEASetupMFAModalComponent } from './setupMFAModal.component';
6
- import { IDEAAuthService } from '../auth.service';
7
- import * as i0 from "@angular/core";
8
- export class IDEASetupMFAButtonComponent {
9
- constructor() {
10
- this._modal = inject(ModalController);
11
- this._auth = inject(IDEAAuthService);
12
- /**
13
- * Trigger then the MFA setup changes.
14
- */
15
- this.change = new EventEmitter();
16
- }
17
- async ngOnInit() {
18
- this.isMFAEnabled = await this._auth.checkIfUserHasMFAEnabled(true);
19
- }
20
- async openMFAModal() {
21
- const modal = await this._modal.create({ component: IDEASetupMFAModalComponent, backdropDismiss: false });
22
- modal.onDidDismiss().then(({ data }) => {
23
- if (data) {
24
- this.isMFAEnabled = data.enabled;
25
- this.change.emit(data.enabled);
26
- }
27
- });
28
- await modal.present();
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASetupMFAButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEASetupMFAButtonComponent, isStandalone: true, selector: "idea-setup-mfa-button", inputs: { color: "color", fill: "fill" }, outputs: { change: "change" }, ngImport: i0, template: `
32
- @if (isMFAEnabled !== undefined) {
33
- <ion-button [color]="color" [fill]="fill" (click)="openMFAModal()">
34
- {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}
35
- </ion-button>
36
- }
37
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASetupMFAButtonComponent, decorators: [{
40
- type: Component,
41
- args: [{
42
- selector: 'idea-setup-mfa-button',
43
- standalone: true,
44
- imports: [CommonModule, IDEATranslatePipe, IonButton],
45
- template: `
46
- @if (isMFAEnabled !== undefined) {
47
- <ion-button [color]="color" [fill]="fill" (click)="openMFAModal()">
48
- {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}
49
- </ion-button>
50
- }
51
- `
52
- }]
53
- }], propDecorators: { color: [{
54
- type: Input
55
- }], fill: [{
56
- type: Input
57
- }], change: [{
58
- type: Output
59
- }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBNRkFCdXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9zZXR1cE1GQS9zZXR1cE1GQUJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWNsRCxNQUFNLE9BQU8sMkJBQTJCO0lBWnhDO1FBYVUsV0FBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBVXhDOztXQUVHO1FBQ08sV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FrQmhEO0lBZEMsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBUSxFQUFFO1lBQzNDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0FoQ1UsMkJBQTJCO2tHQUEzQiwyQkFBMkIsMEpBUjVCOzs7Ozs7R0FNVCwyREFQUyxZQUFZLDBCQUFFLGlCQUFpQixrREFBRSxTQUFTOzsyRkFTekMsMkJBQTJCO2tCQVp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO29CQUNyRCxRQUFRLEVBQUU7Ozs7OztHQU1UO2lCQUNGOzhCQVFVLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBJb25CdXR0b24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IElERUFUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQVNldHVwTUZBTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3NldHVwTUZBTW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtc2V0dXAtbWZhLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElERUFUcmFuc2xhdGVQaXBlLCBJb25CdXR0b25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoaXNNRkFFbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIDxpb24tYnV0dG9uIFtjb2xvcl09XCJjb2xvclwiIFtmaWxsXT1cImZpbGxcIiAoY2xpY2spPVwib3Blbk1GQU1vZGFsKClcIj5cbiAgICAgICAge3sgKGlzTUZBRW5hYmxlZCA/ICdJREVBX0FVVEguRElTQUJMRV9NRkEnIDogJ0lERUFfQVVUSC5TRVRVUF9NRkEnKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIH1cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBJREVBU2V0dXBNRkFCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9tb2RhbCA9IGluamVjdChNb2RhbENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9hdXRoID0gaW5qZWN0KElERUFBdXRoU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgYnV0dG9uLlxuICAgKi9cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWxsIG9wdGlvbiBmb3IgdGhlIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIGZpbGw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRyaWdnZXIgdGhlbiB0aGUgTUZBIHNldHVwIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGlzTUZBRW5hYmxlZDogYm9vbGVhbjtcblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmlzTUZBRW5hYmxlZCA9IGF3YWl0IHRoaXMuX2F1dGguY2hlY2tJZlVzZXJIYXNNRkFFbmFibGVkKHRydWUpO1xuICB9XG5cbiAgYXN5bmMgb3Blbk1GQU1vZGFsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy5fbW9kYWwuY3JlYXRlKHsgY29tcG9uZW50OiBJREVBU2V0dXBNRkFNb2RhbENvbXBvbmVudCwgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSB9KTtcbiAgICBtb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKCh7IGRhdGEgfSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5pc01GQUVuYWJsZWQgPSBkYXRhLmVuYWJsZWQ7XG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQoZGF0YS5lbmFibGVkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,176 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, inject } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { ModalController, IonHeader, IonToolbar, IonButtons, IonButton, IonIcon, IonTitle, IonContent, IonList, IonListHeader, IonLabel, IonCard, IonCardContent, IonItem, IonInput } from '@ionic/angular/standalone';
5
- import { toCanvas } from 'qrcode';
6
- import { IDEALoadingService, IDEAMessageService, IDEATranslatePipe } from '@idea-ionic/common';
7
- import { IDEAAuthService } from '../auth.service';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- export class IDEASetupMFAModalComponent {
11
- constructor() {
12
- this._modal = inject(ModalController);
13
- this._loading = inject(IDEALoadingService);
14
- this._message = inject(IDEAMessageService);
15
- this._auth = inject(IDEAAuthService);
16
- }
17
- async ngOnInit() {
18
- try {
19
- await this._loading.show();
20
- this.isMFAEnabled = await this._auth.checkIfUserHasMFAEnabled(true);
21
- if (!this.isMFAEnabled) {
22
- const url = await this._auth.getURLForEnablingMFA();
23
- await this.generateQRCodeCanvasByURL(url);
24
- }
25
- }
26
- catch (error) {
27
- this._message.error('COMMON.OPERATION_FAILED');
28
- }
29
- finally {
30
- this._loading.hide();
31
- }
32
- }
33
- generateQRCodeCanvasByURL(url) {
34
- return new Promise((resolve, reject) => {
35
- const container = document.getElementById('qrCodeContainer');
36
- container.innerHTML = '';
37
- toCanvas(url, { errorCorrectionLevel: 'L' }, (err, canvas) => {
38
- if (err)
39
- return reject(err);
40
- canvas.style.width = '100%';
41
- canvas.style.height = '100%';
42
- canvas.style.borderRadius = '4px';
43
- container.appendChild(canvas);
44
- resolve();
45
- });
46
- });
47
- }
48
- async setMFA(enable) {
49
- if (!this.otpCode)
50
- return;
51
- try {
52
- await this._loading.show();
53
- if (enable)
54
- await this._auth.enableMFA(this.otpCode);
55
- else
56
- await this._auth.disableMFA(this.otpCode);
57
- this.isMFAEnabled = enable;
58
- this._message.success('COMMON.OPERATION_COMPLETED');
59
- this._modal.dismiss({ enabled: enable });
60
- }
61
- catch (error) {
62
- this._message.error('COMMON.OPERATION_FAILED');
63
- }
64
- finally {
65
- this._loading.hide();
66
- }
67
- }
68
- close() {
69
- this._modal.dismiss();
70
- }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASetupMFAModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEASetupMFAModalComponent, isStandalone: true, selector: "idea-setup-mfa-modal", ngImport: i0, template: `
73
- <ion-header>
74
- <ion-toolbar color="ideaToolbar">
75
- <ion-buttons slot="start">
76
- <ion-button [title]="'COMMON.CLOSE' | translate" (click)="close()">
77
- <ion-icon name="close-circle-outline" slot="icon-only" />
78
- </ion-button>
79
- </ion-buttons>
80
- <ion-title>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}</ion-title>
81
- </ion-toolbar>
82
- </ion-header>
83
- <ion-content class="ion-padding">
84
- <ion-list class="aList">
85
- <ion-list-header>
86
- <ion-label class="ion-text-center">
87
- <h2>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_I' : 'IDEA_AUTH.SETUP_MFA_I') | translate }}</h2>
88
- <p>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_II' : 'IDEA_AUTH.SETUP_MFA_II') | translate }}</p>
89
- </ion-label>
90
- </ion-list-header>
91
- <ion-card color="white">
92
- <ion-card-content>
93
- @if (!isMFAEnabled) {
94
- <div id="qrCodeContainer"></div>
95
- }
96
- <ion-item color="light">
97
- <ion-input
98
- type="text"
99
- inputmode="numeric"
100
- labelPlacement="floating"
101
- [label]="'IDEA_AUTH.OTP_CODE' | translate"
102
- [(ngModel)]="otpCode"
103
- />
104
- </ion-item>
105
- <ion-button expand="block" class="ion-margin-top" [disabled]="!otpCode" (click)="setMFA(!isMFAEnabled)">
106
- {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.ENABLE_MFA') | translate }}
107
- </ion-button>
108
- </ion-card-content>
109
- </ion-card>
110
- </ion-list>
111
- </ion-content>
112
- `, isInline: true, styles: ["ion-list.aList{padding-top:0}ion-list.aList ion-card{margin:10px auto;max-width:300px}ion-list.aList #qrCodeContainer{width:180px;margin:10px auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
113
- }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASetupMFAModalComponent, decorators: [{
115
- type: Component,
116
- args: [{ selector: 'idea-setup-mfa-modal', standalone: true, imports: [
117
- CommonModule,
118
- FormsModule,
119
- IDEATranslatePipe,
120
- IonItem,
121
- IonCardContent,
122
- IonCard,
123
- IonLabel,
124
- IonListHeader,
125
- IonList,
126
- IonContent,
127
- IonTitle,
128
- IonIcon,
129
- IonButton,
130
- IonButtons,
131
- IonToolbar,
132
- IonHeader,
133
- IonInput
134
- ], template: `
135
- <ion-header>
136
- <ion-toolbar color="ideaToolbar">
137
- <ion-buttons slot="start">
138
- <ion-button [title]="'COMMON.CLOSE' | translate" (click)="close()">
139
- <ion-icon name="close-circle-outline" slot="icon-only" />
140
- </ion-button>
141
- </ion-buttons>
142
- <ion-title>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}</ion-title>
143
- </ion-toolbar>
144
- </ion-header>
145
- <ion-content class="ion-padding">
146
- <ion-list class="aList">
147
- <ion-list-header>
148
- <ion-label class="ion-text-center">
149
- <h2>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_I' : 'IDEA_AUTH.SETUP_MFA_I') | translate }}</h2>
150
- <p>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_II' : 'IDEA_AUTH.SETUP_MFA_II') | translate }}</p>
151
- </ion-label>
152
- </ion-list-header>
153
- <ion-card color="white">
154
- <ion-card-content>
155
- @if (!isMFAEnabled) {
156
- <div id="qrCodeContainer"></div>
157
- }
158
- <ion-item color="light">
159
- <ion-input
160
- type="text"
161
- inputmode="numeric"
162
- labelPlacement="floating"
163
- [label]="'IDEA_AUTH.OTP_CODE' | translate"
164
- [(ngModel)]="otpCode"
165
- />
166
- </ion-item>
167
- <ion-button expand="block" class="ion-margin-top" [disabled]="!otpCode" (click)="setMFA(!isMFAEnabled)">
168
- {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.ENABLE_MFA') | translate }}
169
- </ion-button>
170
- </ion-card-content>
171
- </ion-card>
172
- </ion-list>
173
- </ion-content>
174
- `, styles: ["ion-list.aList{padding-top:0}ion-list.aList ion-card{margin:10px auto;max-width:300px}ion-list.aList #qrCodeContainer{width:180px;margin:10px auto}\n"] }]
175
- }] });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBNRkFNb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3NldHVwTUZBL3NldHVwTUZBTW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLGFBQWEsRUFDYixRQUFRLEVBQ1IsT0FBTyxFQUNQLGNBQWMsRUFDZCxPQUFPLEVBQ1AsUUFBUSxFQUNULE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWlGbEQsTUFBTSxPQUFPLDBCQUEwQjtJQS9FdkM7UUFnRlUsV0FBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLFVBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7S0FxRHpDO0lBaERDLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJ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QWlCLGtEQUNqQixPQUFPLDBOQUNQLGNBQWMsK0VBQ2QsT0FBTyx5TEFDUCxRQUFRLDZGQUNSLGFBQWEsZ0dBQ2IsT0FBTyx5RkFDUCxVQUFVLHdLQUNWLFFBQVEsaUZBQ1IsT0FBTywySkFDUCxTQUFTLG9QQUNULFVBQVUsOEVBQ1YsVUFBVSxtRkFDVixTQUFTLG9HQUNULFFBQVE7OzJGQTJEQywwQkFBMEI7a0JBL0V0QyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixRQUFRO3dCQUNSLE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxRQUFRO3FCQUNULFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBNb2RhbENvbnRyb2xsZXIsXG4gIElvbkhlYWRlcixcbiAgSW9uVG9vbGJhcixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQnV0dG9uLFxuICBJb25JY29uLFxuICBJb25UaXRsZSxcbiAgSW9uQ29udGVudCxcbiAgSW9uTGlzdCxcbiAgSW9uTGlzdEhlYWRlcixcbiAgSW9uTGFiZWwsXG4gIElvbkNhcmQsXG4gIElvbkNhcmRDb250ZW50LFxuICBJb25JdGVtLFxuICBJb25JbnB1dFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IHRvQ2FudmFzIH0gZnJvbSAncXJjb2RlJztcbmltcG9ydCB7IElERUFMb2FkaW5nU2VydmljZSwgSURFQU1lc3NhZ2VTZXJ2aWNlLCBJREVBVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtc2V0dXAtbWZhLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJREVBVHJhbnNsYXRlUGlwZSxcbiAgICBJb25JdGVtLFxuICAgIElvbkNhcmRDb250ZW50LFxuICAgIElvbkNhcmQsXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uTGlzdEhlYWRlcixcbiAgICBJb25MaXN0LFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uVGl0bGUsXG4gICAgSW9uSWNvbixcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25JbnB1dFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCInQ09NTU9OLkNMT1NFJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgICA8aW9uLXRpdGxlPnt7IChpc01GQUVuYWJsZWQgPyAnSURFQV9BVVRILkRJU0FCTEVfTUZBJyA6ICdJREVBX0FVVEguU0VUVVBfTUZBJykgfCB0cmFuc2xhdGUgfX08L2lvbi10aXRsZT5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgICAgICA8aW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMj57eyAoaXNNRkFFbmFibGVkID8gJ0lERUFfQVVUSC5ESVNBQkxFX01GQV9JJyA6ICdJREVBX0FVVEguU0VUVVBfTUZBX0knKSB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgICAgICA8cD57eyAoaXNNRkFFbmFibGVkID8gJ0lERUFfQVVUSC5ESVNBQkxFX01GQV9JSScgOiAnSURFQV9BVVRILlNFVFVQX01GQV9JSScpIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8L2lvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkIGNvbG9yPVwid2hpdGVcIj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIEBpZiAoIWlzTUZBRW5hYmxlZCkge1xuICAgICAgICAgICAgICA8ZGl2IGlkPVwicXJDb2RlQ29udGFpbmVyXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiPlxuICAgICAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgICAgIGxhYmVsUGxhY2VtZW50PVwiZmxvYXRpbmdcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInSURFQV9BVVRILk9UUF9DT0RFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvdHBDb2RlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGNsYXNzPVwiaW9uLW1hcmdpbi10b3BcIiBbZGlzYWJsZWRdPVwiIW90cENvZGVcIiAoY2xpY2spPVwic2V0TUZBKCFpc01GQUVuYWJsZWQpXCI+XG4gICAgICAgICAgICAgIHt7IChpc01GQUVuYWJsZWQgPyAnSURFQV9BVVRILkRJU0FCTEVfTUZBJyA6ICdJREVBX0FVVEguRU5BQkxFX01GQScpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgPC9pb24tbGlzdD5cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBpb24tbGlzdC5hTGlzdCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBpb24tY2FyZCB7XG4gICAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG87XG4gICAgICAgICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICAgICAgfVxuICAgICAgICAjcXJDb2RlQ29udGFpbmVyIHtcbiAgICAgICAgICB3aWR0aDogMTgwcHg7XG4gICAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSURFQVNldHVwTUZBTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9tb2RhbCA9IGluamVjdChNb2RhbENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9sb2FkaW5nID0gaW5qZWN0KElERUFMb2FkaW5nU2VydmljZSk7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoSURFQU1lc3NhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfYXV0aCA9IGluamVjdChJREVBQXV0aFNlcnZpY2UpO1xuXG4gIG90cENvZGU6IHN0cmluZztcbiAgaXNNRkFFbmFibGVkOiBib29sZWFuO1xuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9sb2FkaW5nLnNob3coKTtcbiAgICAgIHRoaXMuaXNNRkFFbmFibGVkID0gYXdhaXQgdGhpcy5fYXV0aC5jaGVja0lmVXNlckhhc01GQUVuYWJsZWQodHJ1ZSk7XG4gICAgICBpZiAoIXRoaXMuaXNNRkFFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuX2F1dGguZ2V0VVJMRm9yRW5hYmxpbmdNRkEoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5nZW5lcmF0ZVFSQ29kZUNhbnZhc0J5VVJMKHVybCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuX21lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRpbmcuaGlkZSgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdlbmVyYXRlUVJDb2RlQ2FudmFzQnlVUkwodXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3FyQ29kZUNvbnRhaW5lcicpO1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgICAgdG9DYW52YXModXJsLCB7IGVycm9yQ29ycmVjdGlvbkxldmVsOiAnTCcgfSwgKGVycjogRXJyb3IsIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICBjYW52YXMuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgIGNhbnZhcy5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2V0TUZBKGVuYWJsZTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5vdHBDb2RlKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2xvYWRpbmcuc2hvdygpO1xuICAgICAgaWYgKGVuYWJsZSkgYXdhaXQgdGhpcy5fYXV0aC5lbmFibGVNRkEodGhpcy5vdHBDb2RlKTtcbiAgICAgIGVsc2UgYXdhaXQgdGhpcy5fYXV0aC5kaXNhYmxlTUZBKHRoaXMub3RwQ29kZSk7XG4gICAgICB0aGlzLmlzTUZBRW5hYmxlZCA9IGVuYWJsZTtcbiAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQ09NTU9OLk9QRVJBVElPTl9DT01QTEVURUQnKTtcbiAgICAgIHRoaXMuX21vZGFsLmRpc21pc3MoeyBlbmFibGVkOiBlbmFibGUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuX21lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRpbmcuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoKTtcbiAgfVxufVxuIl19