@idea-ionic/auth 6.11.1 → 6.12.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 (35) hide show
  1. package/environment.d.ts +1 -0
  2. package/esm2020/environment.mjs +3 -2
  3. package/esm2020/public-api.mjs +4 -1
  4. package/esm2020/src/auth.module.mjs +19 -6
  5. package/esm2020/src/auth.service.mjs +167 -42
  6. package/esm2020/src/confirmPassword.page.mjs +16 -22
  7. package/esm2020/src/forgotPassword.page.mjs +17 -24
  8. package/esm2020/src/mfaChallenge.page.mjs +45 -0
  9. package/esm2020/src/newPassword.page.mjs +18 -25
  10. package/esm2020/src/resendLink.page.mjs +12 -17
  11. package/esm2020/src/setupMFA/setupMFA.module.mjs +22 -0
  12. package/esm2020/src/setupMFA/setupMFAButton.component.mjs +43 -0
  13. package/esm2020/src/setupMFA/setupMFAModal.component.mjs +77 -0
  14. package/esm2020/src/setupMFA.page.mjs +24 -0
  15. package/esm2020/src/signIn.page.mjs +36 -47
  16. package/esm2020/src/signUp.page.mjs +18 -32
  17. package/fesm2015/idea-ionic-auth.mjs +485 -211
  18. package/fesm2015/idea-ionic-auth.mjs.map +1 -1
  19. package/fesm2020/idea-ionic-auth.mjs +470 -211
  20. package/fesm2020/idea-ionic-auth.mjs.map +1 -1
  21. package/package.json +2 -1
  22. package/public-api.d.ts +3 -0
  23. package/src/auth.module.d.ts +9 -6
  24. package/src/auth.service.d.ts +54 -13
  25. package/src/confirmPassword.page.d.ts +11 -30
  26. package/src/forgotPassword.page.d.ts +6 -19
  27. package/src/mfaChallenge.page.d.ts +20 -0
  28. package/src/newPassword.page.d.ts +7 -28
  29. package/src/resendLink.page.d.ts +5 -17
  30. package/src/setupMFA/setupMFA.module.d.ts +12 -0
  31. package/src/setupMFA/setupMFAButton.component.d.ts +26 -0
  32. package/src/setupMFA/setupMFAModal.component.d.ts +20 -0
  33. package/src/setupMFA.page.d.ts +10 -0
  34. package/src/signIn.page.d.ts +9 -51
  35. package/src/signUp.page.d.ts +8 -29
@@ -13,9 +13,6 @@ export class IDEAResendLinkPage {
13
13
  this.auth = auth;
14
14
  this.t = t;
15
15
  }
16
- /**
17
- * Resend the link to confirm the email address.
18
- */
19
16
  async resendConfirmationLink() {
20
17
  this.errorMsg = null;
21
18
  if (!this.email) {
@@ -23,30 +20,28 @@ export class IDEAResendLinkPage {
23
20
  this.message.error('IDEA_AUTH.SENDING_FAILED');
24
21
  return;
25
22
  }
26
- await this.loading.show();
27
- this.auth
28
- .resendConfirmationCode(this.email)
29
- .then(() => {
23
+ try {
24
+ await this.loading.show();
25
+ await this.auth.resendConfirmationCode(this.email);
30
26
  this.message.success('IDEA_AUTH.CONFIRMATION_LINK_SENT');
31
27
  this.goToAuth();
32
- })
33
- .catch(() => {
28
+ }
29
+ catch (error) {
34
30
  this.errorMsg = this.t._('IDEA_AUTH.IS_THE_EMAIL_CORRECT');
35
31
  this.message.error('IDEA_AUTH.SENDING_FAILED');
36
- })
37
- .finally(() => this.loading.hide());
32
+ }
33
+ finally {
34
+ this.loading.hide();
35
+ }
38
36
  }
39
- /**
40
- * Go to auth page.
41
- */
42
37
  goToAuth() {
43
38
  this.navCtrl.navigateBack(['auth']);
44
39
  }
45
40
  }
46
41
  IDEAResendLinkPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEAResendLinkPage, deps: [{ token: i1.NavController }, { token: i2.IDEAMessageService }, { token: i2.IDEALoadingService }, { token: i3.IDEAAuthService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
47
- IDEAResendLinkPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IDEAResendLinkPage, selector: "idea-resend-link", ngImport: i0, template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.RESEND_LINK_HINT')\" (click)=\"resendConfirmationLink()\">\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid 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(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content 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{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}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i1.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: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] });
42
+ IDEAResendLinkPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IDEAResendLinkPage, selector: "idea-resend-link", ngImport: i0, template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n ></ion-input>\n </ion-item>\n <ion-button\n expand=\"block\"\n [title]=\"'IDEA_AUTH.RESEND_LINK_HINT' | translate\"\n (click)=\"resendConfirmationLink()\"\n >\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", 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-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{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}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i1.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: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] });
48
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEAResendLinkPage, decorators: [{
49
44
  type: Component,
50
- args: [{ selector: 'idea-resend-link', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.RESEND_LINK_HINT')\" (click)=\"resendConfirmationLink()\">\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid 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(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content 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{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}\n"] }]
45
+ args: [{ selector: 'idea-resend-link', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n ></ion-input>\n </ion-item>\n <ion-button\n expand=\"block\"\n [title]=\"'IDEA_AUTH.RESEND_LINK_HINT' | translate\"\n (click)=\"resendConfirmationLink()\"\n >\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", 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-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{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}\n"] }]
51
46
  }], ctorParameters: function () { return [{ type: i1.NavController }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i3.IDEAAuthService }, { type: i2.IDEATranslationsService }]; } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZW5kTGluay5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9yZXNlbmRMaW5rLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3Jlc2VuZExpbmsucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLGtCQUFrQjtJQVU3QixZQUNTLE9BQXNCLEVBQ3RCLE9BQTJCLEVBQzNCLE9BQTJCLEVBQzNCLElBQXFCLEVBQ3JCLENBQTBCO1FBSjFCLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsTUFBQyxHQUFELENBQUMsQ0FBeUI7SUFDaEMsQ0FBQztJQUVKOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHNCQUFzQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQy9DLE9BQU87U0FDUjtRQUNELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSTthQUNOLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7K0dBL0NVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdEQ1gvQiwyekRBK0NBOzJGRHBDYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgSURFQU1lc3NhZ2VTZXJ2aWNlLCBJREVBTG9hZGluZ1NlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXJlc2VuZC1saW5rJyxcbiAgdGVtcGxhdGVVcmw6ICdyZXNlbmRMaW5rLnBhZ2UuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhdXRoLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBUmVzZW5kTGlua1BhZ2Uge1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdXNlZCB0byBpZGVudGlmeSB0aGUgYWNjb3VudC5cbiAgICovXG4gIHB1YmxpYyBlbWFpbDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSBpbiB0aGUgVUksIGlmIGFueS5cbiAgICovXG4gIHB1YmxpYyBlcnJvck1zZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYXZDdHJsOiBOYXZDb250cm9sbGVyLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aDogSURFQUF1dGhTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJlc2VuZCB0aGUgbGluayB0byBjb25maXJtIHRoZSBlbWFpbCBhZGRyZXNzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlc2VuZENvbmZpcm1hdGlvbkxpbmsoKSB7XG4gICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XG4gICAgaWYgKCF0aGlzLmVtYWlsKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy50Ll8oJ0lERUFfQVVUSC5WQUxJRF9FTUFJTF9PQkxJR0FUT1JZJyk7XG4gICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5TRU5ESU5HX0ZBSUxFRCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgIHRoaXMuYXV0aFxuICAgICAgLnJlc2VuZENvbmZpcm1hdGlvbkNvZGUodGhpcy5lbWFpbClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlLnN1Y2Nlc3MoJ0lERUFfQVVUSC5DT05GSVJNQVRJT05fTElOS19TRU5UJyk7XG4gICAgICAgIHRoaXMuZ29Ub0F1dGgoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy50Ll8oJ0lERUFfQVVUSC5JU19USEVfRU1BSUxfQ09SUkVDVCcpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5TRU5ESU5HX0ZBSUxFRCcpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRvIGF1dGggcGFnZS5cbiAgICovXG4gIHB1YmxpYyBnb1RvQXV0aCgpIHtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVCYWNrKFsnYXV0aCddKTtcbiAgfVxufVxuIiwiPGlvbi1jb250ZW50PlxuICA8Zm9ybSBjbGFzcz1cImZsZXhCb3hcIj5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJhdXRoQ2FyZFwiPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiPnt7ICdJREVBX0FVVEguQ09ORklSTV9BQ0NPVU5UJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT57eyAnSURFQV9BVVRILlJFU0VORF9DT05GSVJNQVRJT05fTElOS19ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8cCBjbGFzcz1cImVycm9yQm94XCIgKm5nSWY9XCJlcnJvck1zZ1wiPlxuICAgICAgICAgIDxiPiB7eyAnSURFQV9BVVRILkVSUk9SJyB8IHRyYW5zbGF0ZSB9fS4gPC9iPlxuICAgICAgICAgIHt7IGVycm9yTXNnIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJpbmxpbmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGVyc29uLWNpcmNsZVwiIGNvbG9yPVwicHJpbWFyeVwiPiA8L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBwYXR0ZXJuPVwiW0EtWmEtejAtOS5fJSstXXsyLH1AW2EtekEtWi1fLl17Mix9Wy5dezF9W2EtekEtWl17Mix9XCJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FVVEguRU1BSUwnKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguRU1BSUxfSElOVCcpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZXNlbmRDb25maXJtYXRpb25MaW5rKClcIlxuICAgICAgICAgID48L2lvbi1pbnB1dD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguUkVTRU5EX0xJTktfSElOVCcpXCIgKGNsaWNrKT1cInJlc2VuZENvbmZpcm1hdGlvbkxpbmsoKVwiPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguUkVTRU5EX0xJTksnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTl9ISU5UJylcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvQXV0aCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguQkFDS19UT19TSUdOX0lOJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZW5kTGluay5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9yZXNlbmRMaW5rLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3Jlc2VuZExpbmsucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixZQUNVLE9BQXNCLEVBQ3RCLE9BQTJCLEVBQzNCLE9BQTJCLEVBQzNCLElBQXFCLEVBQ3JCLENBQTBCO1FBSjFCLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsTUFBQyxHQUFELENBQUMsQ0FBeUI7SUFDakMsQ0FBQztJQUVKLEtBQUssQ0FBQyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUMvQyxPQUFPO1NBQ1I7UUFDRCxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQ2hEO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OytHQWxDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix3RENYL0IsazREQW1EQTsyRkR4Q2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElERUFNZXNzYWdlU2VydmljZSwgSURFQUxvYWRpbmdTZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1yZXNlbmQtbGluaycsXG4gIHRlbXBsYXRlVXJsOiAncmVzZW5kTGluay5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXV0aC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQVJlc2VuZExpbmtQYWdlIHtcbiAgZW1haWw6IHN0cmluZztcbiAgZXJyb3JNc2c6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2FkaW5nOiBJREVBTG9hZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoOiBJREVBQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgcmVzZW5kQ29uZmlybWF0aW9uTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcbiAgICBpZiAoIXRoaXMuZW1haWwpIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSB0aGlzLnQuXygnSURFQV9BVVRILlZBTElEX0VNQUlMX09CTElHQVRPUlknKTtcbiAgICAgIHRoaXMubWVzc2FnZS5lcnJvcignSURFQV9BVVRILlNFTkRJTkdfRkFJTEVEJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgICAgYXdhaXQgdGhpcy5hdXRoLnJlc2VuZENvbmZpcm1hdGlvbkNvZGUodGhpcy5lbWFpbCk7XG4gICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BVVRILkNPTkZJUk1BVElPTl9MSU5LX1NFTlQnKTtcbiAgICAgIHRoaXMuZ29Ub0F1dGgoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5lcnJvck1zZyA9IHRoaXMudC5fKCdJREVBX0FVVEguSVNfVEhFX0VNQUlMX0NPUlJFQ1QnKTtcbiAgICAgIHRoaXMubWVzc2FnZS5lcnJvcignSURFQV9BVVRILlNFTkRJTkdfRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub0F1dGgoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayhbJ2F1dGgnXSk7XG4gIH1cbn1cbiIsIjxpb24tY29udGVudD5cbiAgPGZvcm0gY2xhc3M9XCJmbGV4Qm94XCI+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwiYXV0aENhcmRcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZSBjb2xvcj1cInByaW1hcnlcIj57eyAnSURFQV9BVVRILkNPTkZJUk1fQUNDT1VOVCcgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+e3sgJ0lERUFfQVVUSC5SRVNFTkRfQ09ORklSTUFUSU9OX0xJTktfSElOVCcgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPHAgY2xhc3M9XCJlcnJvckJveFwiICpuZ0lmPVwiZXJyb3JNc2dcIj5cbiAgICAgICAgICA8Yj4ge3sgJ0lERUFfQVVUSC5FUlJPUicgfCB0cmFuc2xhdGUgfX0uIDwvYj5cbiAgICAgICAgICB7eyBlcnJvck1zZyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1jaXJjbGVcIiBjb2xvcj1cInByaW1hcnlcIj4gPC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwiZW1haWxcIlxuICAgICAgICAgICAgcGF0dGVybj1cIltBLVphLXowLTkuXyUrLV17Mix9QFthLXpBLVotXy5dezIsfVsuXXsxfVthLXpBLVpdezIsfVwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiZW1haWxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJREVBX0FVVEguRU1BSUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILkVNQUlMX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZXNlbmRDb25maXJtYXRpb25MaW5rKClcIlxuICAgICAgICAgID48L2lvbi1pbnB1dD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguUkVTRU5EX0xJTktfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJyZXNlbmRDb25maXJtYXRpb25MaW5rKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5SRVNFTkRfTElOSycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5CQUNLX1RPX1NJR05fSU5fSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvQXV0aCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguQkFDS19UT19TSUdOX0lOJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { IonicModule } from '@ionic/angular';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { IDEATranslationsModule } from '@idea-ionic/common';
6
+ import { IDEASetupMFAModalComponent } from './setupMFAModal.component';
7
+ import { IDEASetupMFAButtonComponent } from './setupMFAButton.component';
8
+ import * as i0 from "@angular/core";
9
+ export class IDEASetupMFAModule {
10
+ }
11
+ IDEASetupMFAModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ IDEASetupMFAModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAModule, declarations: [IDEASetupMFAModalComponent, IDEASetupMFAButtonComponent], imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule], exports: [IDEASetupMFAModalComponent, IDEASetupMFAButtonComponent] });
13
+ IDEASetupMFAModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAModule, imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule] });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAModule, decorators: [{
15
+ type: NgModule,
16
+ args: [{
17
+ imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule],
18
+ declarations: [IDEASetupMFAModalComponent, IDEASetupMFAButtonComponent],
19
+ exports: [IDEASetupMFAModalComponent, IDEASetupMFAButtonComponent]
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBNRkEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9zZXR1cE1GQS9zZXR1cE1GQS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFPekUsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUhkLDBCQUEwQixFQUFFLDJCQUEyQixhQUQ1RCxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsYUFFOUQsMEJBQTBCLEVBQUUsMkJBQTJCO2dIQUV0RCxrQkFBa0IsWUFKbkIsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsc0JBQXNCOzJGQUk3RCxrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLENBQUM7b0JBQ3pFLFlBQVksRUFBRSxDQUFDLDBCQUEwQixFQUFFLDJCQUEyQixDQUFDO29CQUN2RSxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwyQkFBMkIsQ0FBQztpQkFDbkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJREVBVHJhbnNsYXRpb25zTW9kdWxlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQVNldHVwTUZBTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3NldHVwTUZBTW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFTZXR1cE1GQUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vc2V0dXBNRkFCdXR0b24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIElvbmljTW9kdWxlLCBJREVBVHJhbnNsYXRpb25zTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbSURFQVNldHVwTUZBTW9kYWxDb21wb25lbnQsIElERUFTZXR1cE1GQUJ1dHRvbkNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtJREVBU2V0dXBNRkFNb2RhbENvbXBvbmVudCwgSURFQVNldHVwTUZBQnV0dG9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJREVBU2V0dXBNRkFNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { IDEASetupMFAModalComponent } from './setupMFAModal.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ionic/angular";
5
+ import * as i2 from "../auth.service";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@idea-ionic/common";
8
+ export class IDEASetupMFAButtonComponent {
9
+ constructor(modalCtrl, auth) {
10
+ this.modalCtrl = modalCtrl;
11
+ this.auth = auth;
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.modalCtrl.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
+ }
31
+ IDEASetupMFAButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAButtonComponent, deps: [{ token: i1.ModalController }, { token: i2.IDEAAuthService }], target: i0.ɵɵFactoryTarget.Component });
32
+ IDEASetupMFAButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IDEASetupMFAButtonComponent, selector: "idea-setup-mfa-button", inputs: { color: "color", fill: "fill" }, outputs: { change: "change" }, ngImport: i0, template: "<ion-button *ngIf=\"isMFAEnabled !== undefined\" [color]=\"color\" [fill]=\"fill\" (click)=\"openMFAModal()\">\n {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}\n</ion-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "pipe", type: i4.IDEATranslatePipe, name: "translate" }] });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAButtonComponent, decorators: [{
34
+ type: Component,
35
+ args: [{ selector: 'idea-setup-mfa-button', template: "<ion-button *ngIf=\"isMFAEnabled !== undefined\" [color]=\"color\" [fill]=\"fill\" (click)=\"openMFAModal()\">\n {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}\n</ion-button>\n" }]
36
+ }], ctorParameters: function () { return [{ type: i1.ModalController }, { type: i2.IDEAAuthService }]; }, propDecorators: { color: [{
37
+ type: Input
38
+ }], fill: [{
39
+ type: Input
40
+ }], change: [{
41
+ type: Output
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBNRkFCdXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9zZXR1cE1GQS9zZXR1cE1GQUJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3NldHVwTUZBL3NldHVwTUZBQnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQVN2RSxNQUFNLE9BQU8sMkJBQTJCO0lBZ0J0QyxZQUFvQixTQUEwQixFQUFVLElBQXFCO1FBQXpELGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFQN0U7O1dBRUc7UUFDTyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUlpQyxDQUFDO0lBQ2pGLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0csS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQVEsRUFBRTtZQUMzQyxJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7d0hBOUJVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHNJQ1p4Qyx1TkFHQTsyRkRTYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsdUJBQXVCO29JQVF4QixLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuaW1wb3J0IHsgSURFQVNldHVwTUZBTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3NldHVwTUZBTW9kYWwuY29tcG9uZW50JztcblxuaW1wb3J0IHsgSURFQUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1zZXR1cC1tZmEtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICdzZXR1cE1GQUJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzZXR1cE1GQUJ1dHRvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFTZXR1cE1GQUJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsbCBvcHRpb24gZm9yIHRoZSBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKSBmaWxsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHRoZW4gdGhlIE1GQSBzZXR1cCBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBpc01GQUVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlciwgcHJpdmF0ZSBhdXRoOiBJREVBQXV0aFNlcnZpY2UpIHt9XG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuaXNNRkFFbmFibGVkID0gYXdhaXQgdGhpcy5hdXRoLmNoZWNrSWZVc2VySGFzTUZBRW5hYmxlZCh0cnVlKTtcbiAgfVxuXG4gIGFzeW5jIG9wZW5NRkFNb2RhbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDdHJsLmNyZWF0ZSh7IGNvbXBvbmVudDogSURFQVNldHVwTUZBTW9kYWxDb21wb25lbnQsIGJhY2tkcm9wRGlzbWlzczogZmFsc2UgfSk7XG4gICAgbW9kYWwub25EaWREaXNtaXNzKCkudGhlbigoeyBkYXRhIH0pOiB2b2lkID0+IHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRoaXMuaXNNRkFFbmFibGVkID0gZGF0YS5lbmFibGVkO1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KGRhdGEuZW5hYmxlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgbW9kYWwucHJlc2VudCgpO1xuICB9XG59XG4iLCI8aW9uLWJ1dHRvbiAqbmdJZj1cImlzTUZBRW5hYmxlZCAhPT0gdW5kZWZpbmVkXCIgW2NvbG9yXT1cImNvbG9yXCIgW2ZpbGxdPVwiZmlsbFwiIChjbGljayk9XCJvcGVuTUZBTW9kYWwoKVwiPlxuICB7eyAoaXNNRkFFbmFibGVkID8gJ0lERUFfQVVUSC5ESVNBQkxFX01GQScgOiAnSURFQV9BVVRILlNFVFVQX01GQScpIHwgdHJhbnNsYXRlIH19XG48L2lvbi1idXR0b24+XG4iXX0=
@@ -0,0 +1,77 @@
1
+ import { Component } from '@angular/core';
2
+ import { toCanvas } from 'qrcode';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ionic/angular";
5
+ import * as i2 from "@idea-ionic/common";
6
+ import * as i3 from "../auth.service";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "@angular/forms";
9
+ export class IDEASetupMFAModalComponent {
10
+ constructor(modalCtrl, loading, message, auth) {
11
+ this.modalCtrl = modalCtrl;
12
+ this.loading = loading;
13
+ this.message = message;
14
+ this.auth = auth;
15
+ }
16
+ async ngOnInit() {
17
+ try {
18
+ await this.loading.show();
19
+ this.isMFAEnabled = await this.auth.checkIfUserHasMFAEnabled(true);
20
+ if (!this.isMFAEnabled) {
21
+ const url = await this.auth.getURLForEnablingMFA();
22
+ await this.generateQRCodeCanvasByURL(url);
23
+ }
24
+ }
25
+ catch (error) {
26
+ this.message.error('COMMON.OPERATION_FAILED');
27
+ }
28
+ finally {
29
+ this.loading.hide();
30
+ }
31
+ }
32
+ generateQRCodeCanvasByURL(url) {
33
+ return new Promise((resolve, reject) => {
34
+ const container = document.getElementById('qrCodeContainer');
35
+ container.innerHTML = '';
36
+ toCanvas(url, { errorCorrectionLevel: 'L' }, (err, canvas) => {
37
+ if (err)
38
+ return reject(err);
39
+ canvas.style.width = '100%';
40
+ canvas.style.height = '100%';
41
+ canvas.style.borderRadius = '4px';
42
+ container.appendChild(canvas);
43
+ resolve();
44
+ });
45
+ });
46
+ }
47
+ async setMFA(enable) {
48
+ if (!this.otpCode)
49
+ return;
50
+ try {
51
+ await this.loading.show();
52
+ if (enable)
53
+ await this.auth.enableMFA(this.otpCode);
54
+ else
55
+ await this.auth.disableMFA(this.otpCode);
56
+ this.isMFAEnabled = enable;
57
+ this.message.success('COMMON.OPERATION_COMPLETED');
58
+ this.modalCtrl.dismiss({ enabled: enable });
59
+ }
60
+ catch (error) {
61
+ this.message.error('COMMON.OPERATION_FAILED');
62
+ }
63
+ finally {
64
+ this.loading.hide();
65
+ }
66
+ }
67
+ close() {
68
+ this.modalCtrl.dismiss();
69
+ }
70
+ }
71
+ IDEASetupMFAModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAModalComponent, deps: [{ token: i1.ModalController }, { token: i2.IDEALoadingService }, { token: i2.IDEAMessageService }, { token: i3.IDEAAuthService }], target: i0.ɵɵFactoryTarget.Component });
72
+ IDEASetupMFAModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IDEASetupMFAModalComponent, selector: "idea-setup-mfa-modal", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}</ion-title>\n </ion-toolbar>\n</ion-header>\n<ion-content class=\"ion-padding\">\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label class=\"ion-text-center\">\n <h2>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_I' : 'IDEA_AUTH.SETUP_MFA_I') | translate }}</h2>\n <p>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_II' : 'IDEA_AUTH.SETUP_MFA_II') | translate }}</p>\n </ion-label>\n </ion-list-header>\n <ion-card color=\"white\">\n <ion-card-content>\n <div id=\"qrCodeContainer\" *ngIf=\"!isMFAEnabled\"></div>\n <ion-item color=\"light\">\n <ion-label position=\"floating\">{{ 'IDEA_AUTH.OTP_CODE' | translate }}</ion-label>\n <ion-input type=\"text\" inputmode=\"numeric\" [(ngModel)]=\"otpCode\"></ion-input>\n </ion-item>\n <ion-button expand=\"block\" class=\"ion-margin-top\" [disabled]=\"!otpCode\" (click)=\"setMFA(!isMFAEnabled)\">\n {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.ENABLE_MFA') | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </ion-list>\n</ion-content>\n", 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: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.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: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAModalComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'idea-setup-mfa-modal', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.SETUP_MFA') | translate }}</ion-title>\n </ion-toolbar>\n</ion-header>\n<ion-content class=\"ion-padding\">\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label class=\"ion-text-center\">\n <h2>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_I' : 'IDEA_AUTH.SETUP_MFA_I') | translate }}</h2>\n <p>{{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA_II' : 'IDEA_AUTH.SETUP_MFA_II') | translate }}</p>\n </ion-label>\n </ion-list-header>\n <ion-card color=\"white\">\n <ion-card-content>\n <div id=\"qrCodeContainer\" *ngIf=\"!isMFAEnabled\"></div>\n <ion-item color=\"light\">\n <ion-label position=\"floating\">{{ 'IDEA_AUTH.OTP_CODE' | translate }}</ion-label>\n <ion-input type=\"text\" inputmode=\"numeric\" [(ngModel)]=\"otpCode\"></ion-input>\n </ion-item>\n <ion-button expand=\"block\" class=\"ion-margin-top\" [disabled]=\"!otpCode\" (click)=\"setMFA(!isMFAEnabled)\">\n {{ (isMFAEnabled ? 'IDEA_AUTH.DISABLE_MFA' : 'IDEA_AUTH.ENABLE_MFA') | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </ion-list>\n</ion-content>\n", 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"] }]
76
+ }], ctorParameters: function () { return [{ type: i1.ModalController }, { type: i2.IDEALoadingService }, { type: i2.IDEAMessageService }, { type: i3.IDEAAuthService }]; } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBNRkFNb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3NldHVwTUZBL3NldHVwTUZBTW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9zZXR1cE1GQS9zZXR1cE1GQU1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQVVsQyxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFlBQ1UsU0FBMEIsRUFDMUIsT0FBMkIsRUFDM0IsT0FBMkIsRUFDM0IsSUFBcUI7UUFIckIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBaUI7SUFDNUIsQ0FBQztJQUNKLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ25ELE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDL0M7Z0JBQVM7WUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUNPLHlCQUF5QixDQUFDLEdBQVc7UUFDM0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQVEsRUFBRTtZQUMzQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0QsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDekIsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBVSxFQUFFLE1BQXlCLEVBQVEsRUFBRTtnQkFDM0YsSUFBSSxHQUFHO29CQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFlO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDMUIsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLE1BQU07Z0JBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O2dCQUMvQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDN0M7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDL0M7Z0JBQVM7WUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7O3VIQXpEVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw0RENadkMscytDQWdDQTsyRkRwQmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyB0b0NhbnZhcyB9IGZyb20gJ3FyY29kZSc7XG5cbmltcG9ydCB7IElERUFBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBJREVBTG9hZGluZ1NlcnZpY2UsIElERUFNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtc2V0dXAtbWZhLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICdzZXR1cE1GQU1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3NldHVwTUZBTW9kYWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBU2V0dXBNRkFNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG90cENvZGU6IHN0cmluZztcbiAgaXNNRkFFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBsb2FkaW5nOiBJREVBTG9hZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoOiBJREVBQXV0aFNlcnZpY2VcbiAgKSB7fVxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkaW5nLnNob3coKTtcbiAgICAgIHRoaXMuaXNNRkFFbmFibGVkID0gYXdhaXQgdGhpcy5hdXRoLmNoZWNrSWZVc2VySGFzTUZBRW5hYmxlZCh0cnVlKTtcbiAgICAgIGlmICghdGhpcy5pc01GQUVuYWJsZWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgdGhpcy5hdXRoLmdldFVSTEZvckVuYWJsaW5nTUZBKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVRUkNvZGVDYW52YXNCeVVSTCh1cmwpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5oaWRlKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZ2VuZXJhdGVRUkNvZGVDYW52YXNCeVVSTCh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncXJDb2RlQ29udGFpbmVyJyk7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJyc7XG4gICAgICB0b0NhbnZhcyh1cmwsIHsgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6ICdMJyB9LCAoZXJyOiBFcnJvciwgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgY2FudmFzLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICAgICAgY2FudmFzLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHgnO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRNRkEoZW5hYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm90cENvZGUpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkaW5nLnNob3coKTtcbiAgICAgIGlmIChlbmFibGUpIGF3YWl0IHRoaXMuYXV0aC5lbmFibGVNRkEodGhpcy5vdHBDb2RlKTtcbiAgICAgIGVsc2UgYXdhaXQgdGhpcy5hdXRoLmRpc2FibGVNRkEodGhpcy5vdHBDb2RlKTtcbiAgICAgIHRoaXMuaXNNRkFFbmFibGVkID0gZW5hYmxlO1xuICAgICAgdGhpcy5tZXNzYWdlLnN1Y2Nlc3MoJ0NPTU1PTi5PUEVSQVRJT05fQ09NUExFVEVEJyk7XG4gICAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKHsgZW5hYmxlZDogZW5hYmxlIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0NPTU1PTi5PUEVSQVRJT05fRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcygpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0NPTU1PTi5DTE9TRScgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlPnt7IChpc01GQUVuYWJsZWQgPyAnSURFQV9BVVRILkRJU0FCTEVfTUZBJyA6ICdJREVBX0FVVEguU0VUVVBfTUZBJykgfCB0cmFuc2xhdGUgfX08L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGgyPnt7IChpc01GQUVuYWJsZWQgPyAnSURFQV9BVVRILkRJU0FCTEVfTUZBX0knIDogJ0lERUFfQVVUSC5TRVRVUF9NRkFfSScpIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgPHA+e3sgKGlzTUZBRW5hYmxlZCA/ICdJREVBX0FVVEguRElTQUJMRV9NRkFfSUknIDogJ0lERUFfQVVUSC5TRVRVUF9NRkFfSUknKSB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgIDxpb24tY2FyZCBjb2xvcj1cIndoaXRlXCI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPGRpdiBpZD1cInFyQ29kZUNvbnRhaW5lclwiICpuZ0lmPVwiIWlzTUZBRW5hYmxlZFwiPjwvZGl2PlxuICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiPlxuICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJmbG9hdGluZ1wiPnt7ICdJREVBX0FVVEguT1RQX0NPREUnIHwgdHJhbnNsYXRlIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPGlvbi1pbnB1dCB0eXBlPVwidGV4dFwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBbKG5nTW9kZWwpXT1cIm90cENvZGVcIj48L2lvbi1pbnB1dD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjbGFzcz1cImlvbi1tYXJnaW4tdG9wXCIgW2Rpc2FibGVkXT1cIiFvdHBDb2RlXCIgKGNsaWNrKT1cInNldE1GQSghaXNNRkFFbmFibGVkKVwiPlxuICAgICAgICAgIHt7IChpc01GQUVuYWJsZWQgPyAnSURFQV9BVVRILkRJU0FCTEVfTUZBJyA6ICdJREVBX0FVVEguRU5BQkxFX01GQScpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2lvbi1saXN0PlxuPC9pb24tY29udGVudD5cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ionic/angular";
4
+ import * as i2 from "@angular/forms";
5
+ import * as i3 from "./setupMFA/setupMFAButton.component";
6
+ import * as i4 from "@idea-ionic/common";
7
+ export class IDEASetupMFAPage {
8
+ constructor(navCtrl) {
9
+ this.navCtrl = navCtrl;
10
+ }
11
+ reloadApp() {
12
+ window.location.assign('');
13
+ }
14
+ goToAuth() {
15
+ this.navCtrl.navigateBack(['auth']);
16
+ }
17
+ }
18
+ IDEASetupMFAPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAPage, deps: [{ token: i1.NavController }], target: i0.ɵɵFactoryTarget.Component });
19
+ IDEASetupMFAPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IDEASetupMFAPage, selector: "idea-mfa-setup", ngImport: i0, template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.SETUP_MFA' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.MFA_IS_MANDATORY' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <idea-setup-mfa-button (change)=\"reloadApp()\"></idea-setup-mfa-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", 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-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{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}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i1.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: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IDEASetupMFAButtonComponent, selector: "idea-setup-mfa-button", inputs: ["color", "fill"], outputs: ["change"] }, { kind: "pipe", type: i4.IDEATranslatePipe, name: "translate" }] });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IDEASetupMFAPage, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'idea-mfa-setup', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.SETUP_MFA' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.MFA_IS_MANDATORY' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <idea-setup-mfa-button (change)=\"reloadApp()\"></idea-setup-mfa-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", 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-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{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}\n"] }]
23
+ }], ctorParameters: function () { return [{ type: i1.NavController }]; } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBNRkEucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvc2V0dXBNRkEucGFnZS50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvc2V0dXBNRkEucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVExQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQW9CLE9BQXNCO1FBQXRCLFlBQU8sR0FBUCxPQUFPLENBQWU7SUFBRyxDQUFDO0lBRTlDLFNBQVM7UUFDUCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs2R0FSVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixzRENSN0IsMHlCQXNCQTsyRkRkYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLW1mYS1zZXR1cCcsXG4gIHRlbXBsYXRlVXJsOiAnc2V0dXBNRkEucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2F1dGguc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFTZXR1cE1GQVBhZ2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIpIHt9XG5cbiAgcmVsb2FkQXBwKCk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oJycpO1xuICB9XG4gIGdvVG9BdXRoKCk6IHZvaWQge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUJhY2soWydhdXRoJ10pO1xuICB9XG59XG4iLCI8aW9uLWNvbnRlbnQ+XG4gIDxmb3JtIGNsYXNzPVwiZmxleEJveFwiPlxuICAgIDxpb24tY2FyZCBjbGFzcz1cImF1dGhDYXJkXCI+XG4gICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtdGl0bGUgY29sb3I9XCJwcmltYXJ5XCI+e3sgJ0lERUFfQVVUSC5TRVRVUF9NRkEnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPnt7ICdJREVBX0FVVEguTUZBX0lTX01BTkRBVE9SWScgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPGlkZWEtc2V0dXAtbWZhLWJ1dHRvbiAoY2hhbmdlKT1cInJlbG9hZEFwcCgpXCI+PC9pZGVhLXNldHVwLW1mYS1idXR0b24+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbENhc2VCdXR0b25cIlxuICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTl9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9BdXRoKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5CQUNLX1RPX1NJR05fSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuIl19