Browse Source

UI: Add validation for twoFA settings

pull/14378/head
ArtemDzhereleiko 10 months ago
parent
commit
5dd8608086
  1. 5
      ui-ngx/src/app/modules/home/pages/admin/two-factor-auth-settings.component.html
  2. 7
      ui-ngx/src/app/modules/home/pages/admin/two-factor-auth-settings.component.ts
  3. 1
      ui-ngx/src/assets/locale/locale.constant-en_US.json

5
ui-ngx/src/app/modules/home/pages/admin/two-factor-auth-settings.component.html

@ -90,6 +90,9 @@
<section class="tb-form-panel stroked" formArrayName="providers">
<div class="tb-form-panel-title" translate>admin.2fa.available-providers</div>
@if (!atListOneProvider) {
<tb-error noMargin error="{{ 'admin.2fa.available-providers-required' | translate }}" class="flex h-4 items-center pl-3"/>
}
<ng-container *ngFor="let provider of providersForm.controls; let i = index; trackBy: trackByElement">
<div class="tb-form-panel stroked tb-slide-toggle">
<mat-expansion-panel class="tb-settings" [formGroupName]="i">
@ -243,7 +246,7 @@
</div>
<div class="flex flex-row items-center justify-end gap-2">
<button mat-button mat-raised-button color="primary"
[disabled]="(isLoading$ | async) || twoFaFormGroup.invalid || !twoFaFormGroup.dirty"
[disabled]="(isLoading$ | async) || twoFaFormGroup.invalid || !twoFaFormGroup.dirty || !atListOneProvider"
type="submit">
{{'action.save' | translate}}
</button>

7
ui-ngx/src/app/modules/home/pages/admin/two-factor-auth-settings.component.ts

@ -184,6 +184,13 @@ export class TwoFactorAuthSettingsComponent extends PageComponent implements OnI
});
}
get atListOneProvider():boolean {
if (this.twoFaFormGroup.get('enforceTwoFa').value) {
return this.providersForm.value.some(value => value.enable);
}
return true;
}
private setAuthConfigFormValue(settings: TwoFactorAuthSettings) {
const [checkRateLimitNumber, checkRateLimitTime] = this.splitRateLimit(settings?.verificationCodeCheckRateLimit);
const allowProvidersConfig = settings?.providers.map(provider => provider.providerType) || [];

1
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -485,6 +485,7 @@
"2fa": {
"2fa": "Two-factor authentication",
"available-providers": "Available providers",
"available-providers-required": "At least one 2FA provider should be configured.",
"issuer-name": "Issuer name",
"issuer-name-required": "Issuer name is required.",
"max-verification-failures-before-user-lockout": "Max verification failures before user lockout",

Loading…
Cancel
Save