import { Component, Input } from "@angular/core"; import { UntypedFormBuilder } from "@angular/forms"; import { Router } from "@angular/router"; import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/components/register.component"; import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { MasterPasswordPolicyOptions } from "@bitwarden/common/admin-console/models/domain/master-password-policy-options"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { ReferenceEventRequest } from "@bitwarden/common/models/request/reference-event.request"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; import { DialogService } from "@bitwarden/components"; @Component({ selector: "app-register-form", templateUrl: "./register-form.component.html", }) export class RegisterFormComponent extends BaseRegisterComponent { @Input() queryParamEmail: string; @Input() enforcedPolicyOptions: MasterPasswordPolicyOptions; @Input() referenceDataValue: ReferenceEventRequest; showErrorSummary = false; characterMinimumMessage: string; constructor( formValidationErrorService: FormValidationErrorsService, formBuilder: UntypedFormBuilder, authService: AuthService, router: Router, i18nService: I18nService, cryptoService: CryptoService, apiService: ApiService, stateService: StateService, platformUtilsService: PlatformUtilsService, passwordGenerationService: PasswordGenerationServiceAbstraction, private policyService: PolicyService, environmentService: EnvironmentService, logService: LogService, auditService: AuditService, dialogService: DialogService ) { super( formValidationErrorService, formBuilder, authService, router, i18nService, cryptoService, apiService, stateService, platformUtilsService, passwordGenerationService, environmentService, logService, auditService, dialogService ); } async ngOnInit() { await super.ngOnInit(); this.referenceData = this.referenceDataValue; if (this.queryParamEmail) { this.formGroup.get("email")?.setValue(this.queryParamEmail); } if (this.enforcedPolicyOptions != null && this.enforcedPolicyOptions.minLength > 0) { this.characterMinimumMessage = ""; } else { this.characterMinimumMessage = this.i18nService.t("characterMinimum", this.minimumLength); } } async submit() { if ( this.enforcedPolicyOptions != null && !this.policyService.evaluateMasterPassword( this.passwordStrengthResult.score, this.formGroup.value.masterPassword, this.enforcedPolicyOptions ) ) { this.platformUtilsService.showToast( "error", this.i18nService.t("errorOccurred"), this.i18nService.t("masterPasswordPolicyRequirementsNotMet") ); return; } await super.submit(false); } }