1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-11 22:03:36 +00:00

[PM-15058] fix admin console hmtl constraints (#12053)

This commit is contained in:
✨ Audrey ✨
2024-11-20 05:25:37 -05:00
committed by GitHub
parent 079f84e7d9
commit 1360c2abba
2 changed files with 47 additions and 33 deletions

View File

@@ -23,34 +23,52 @@
<div class="tw-grid tw-grid-cols-12 tw-gap-4"> <div class="tw-grid tw-grid-cols-12 tw-gap-4">
<bit-form-field class="tw-col-span-6"> <bit-form-field class="tw-col-span-6">
<bit-label>{{ "minLength" | i18n }}</bit-label> <bit-label>{{ "minLength" | i18n }}</bit-label>
<input bitInput type="number" min="5" max="128" formControlName="minLength" /> <input
bitInput
type="number"
[min]="minLengthMin"
[max]="minLengthMax"
formControlName="minLength"
/>
</bit-form-field> </bit-form-field>
</div> </div>
<div class="tw-grid tw-grid-cols-12 tw-gap-4"> <div class="tw-grid tw-grid-cols-12 tw-gap-4">
<bit-form-field class="tw-col-span-6"> <bit-form-field class="tw-col-span-6">
<bit-label>{{ "minNumbers" | i18n }}</bit-label> <bit-label>{{ "minNumbers" | i18n }}</bit-label>
<input bitInput type="number" min="0" max="9" formControlName="minNumbers" /> <input
bitInput
type="number"
[min]="minNumbersMin"
[max]="minNumbersMax"
formControlName="minNumbers"
/>
</bit-form-field> </bit-form-field>
<bit-form-field class="tw-col-span-6"> <bit-form-field class="tw-col-span-6">
<bit-label>{{ "minSpecial" | i18n }}</bit-label> <bit-label>{{ "minSpecial" | i18n }}</bit-label>
<input bitInput type="number" min="0" max="9" formControlName="minSpecial" /> <input
bitInput
type="number"
[min]="minSpecialMin"
[max]="minSpecialMax"
formControlName="minSpecial"
/>
</bit-form-field> </bit-form-field>
</div> </div>
<bit-form-control> <bit-form-control>
<input type="checkbox" bitCheckbox formControlName="useUpper" id="useUpper" /> <input type="checkbox" bitCheckbox formControlName="useUpper" id="useUpper" />
<bit-label>A-Z</bit-label> <bit-label>{{ "uppercaseLabel" | i18n }}</bit-label>
</bit-form-control> </bit-form-control>
<bit-form-control> <bit-form-control>
<input type="checkbox" bitCheckbox formControlName="useLower" id="useLower" /> <input type="checkbox" bitCheckbox formControlName="useLower" id="useLower" />
<bit-label>a-z</bit-label> <bit-label>{{ "lowercaseLabel" | i18n }}</bit-label>
</bit-form-control> </bit-form-control>
<bit-form-control> <bit-form-control>
<input type="checkbox" bitCheckbox formControlName="useNumbers" id="useNumbers" /> <input type="checkbox" bitCheckbox formControlName="useNumbers" id="useNumbers" />
<bit-label>0-9</bit-label> <bit-label>{{ "numbersLabel" | i18n }}</bit-label>
</bit-form-control> </bit-form-control>
<bit-form-control> <bit-form-control>
<input type="checkbox" bitCheckbox formControlName="useSpecial" id="useSpecial" /> <input type="checkbox" bitCheckbox formControlName="useSpecial" id="useSpecial" />
<bit-label>!&#64;#$%^&amp;*</bit-label> <bit-label>{{ "specialCharactersLabel" | i18n }}</bit-label>
</bit-form-control> </bit-form-control>
</div> </div>
@@ -60,7 +78,13 @@
<div class="tw-grid tw-grid-cols-12 tw-gap-4"> <div class="tw-grid tw-grid-cols-12 tw-gap-4">
<bit-form-field class="tw-col-span-6"> <bit-form-field class="tw-col-span-6">
<bit-label>{{ "minimumNumberOfWords" | i18n }}</bit-label> <bit-label>{{ "minimumNumberOfWords" | i18n }}</bit-label>
<input bitInput type="number" min="6" max="20" formControlName="minNumberWords" /> <input
bitInput
type="number"
[min]="minNumberWordsMin"
[max]="minNumberWordsMax"
formControlName="minNumberWords"
/>
</bit-form-field> </bit-form-field>
</div> </div>
<bit-form-control> <bit-form-control>

View File

@@ -21,39 +21,29 @@ export class PasswordGeneratorPolicy extends BasePolicy {
templateUrl: "password-generator.component.html", templateUrl: "password-generator.component.html",
}) })
export class PasswordGeneratorPolicyComponent extends BasePolicyComponent { export class PasswordGeneratorPolicyComponent extends BasePolicyComponent {
// these properties forward the application default settings to the UI
// for HTML attribute bindings
protected readonly minLengthMin = Generators.password.settings.constraints.length.min;
protected readonly minLengthMax = Generators.password.settings.constraints.length.max;
protected readonly minNumbersMin = Generators.password.settings.constraints.minNumber.min;
protected readonly minNumbersMax = Generators.password.settings.constraints.minNumber.max;
protected readonly minSpecialMin = Generators.password.settings.constraints.minSpecial.min;
protected readonly minSpecialMax = Generators.password.settings.constraints.minSpecial.max;
protected readonly minNumberWordsMin = Generators.passphrase.settings.constraints.numWords.min;
protected readonly minNumberWordsMax = Generators.passphrase.settings.constraints.numWords.max;
data = this.formBuilder.group({ data = this.formBuilder.group({
overridePasswordType: [null], overridePasswordType: [null],
minLength: [ minLength: [null, [Validators.min(this.minLengthMin), Validators.max(this.minLengthMax)]],
null,
[
Validators.min(Generators.password.settings.constraints.length.min),
Validators.max(Generators.password.settings.constraints.length.max),
],
],
useUpper: [null], useUpper: [null],
useLower: [null], useLower: [null],
useNumbers: [null], useNumbers: [null],
useSpecial: [null], useSpecial: [null],
minNumbers: [ minNumbers: [null, [Validators.min(this.minNumbersMin), Validators.max(this.minNumbersMax)]],
null, minSpecial: [null, [Validators.min(this.minSpecialMin), Validators.max(this.minSpecialMax)]],
[
Validators.min(Generators.password.settings.constraints.minNumber.min),
Validators.max(Generators.password.settings.constraints.minNumber.max),
],
],
minSpecial: [
null,
[
Validators.min(Generators.password.settings.constraints.minSpecial.min),
Validators.max(Generators.password.settings.constraints.minSpecial.max),
],
],
minNumberWords: [ minNumberWords: [
null, null,
[ [Validators.min(this.minNumberWordsMin), Validators.max(this.minNumberWordsMax)],
Validators.min(Generators.passphrase.settings.constraints.numWords.min),
Validators.max(Generators.passphrase.settings.constraints.numWords.max),
],
], ],
capitalize: [null], capitalize: [null],
includeNumber: [null], includeNumber: [null],