mirror of
https://github.com/bitwarden/browser
synced 2025-12-11 22:03:36 +00:00
[PM-15938] - Restrict viewing hidden input based on permission (#13016)
* allow string or boolean disabled prop in input directive * fix tests * add test * disable custom fields in partial edit * disable custom fields in partial edit * manually disable inputs * revert changes to directive * revert other changes * remove unnecessary check for partial-edit
This commit is contained in:
@@ -115,7 +115,13 @@ describe("CustomFieldsComponent", () => {
|
|||||||
value: true,
|
value: true,
|
||||||
newField: false,
|
newField: false,
|
||||||
},
|
},
|
||||||
{ linkedId: 1, name: "linked label", type: FieldType.Linked, value: null, newField: false },
|
{
|
||||||
|
linkedId: 1,
|
||||||
|
name: "linked label",
|
||||||
|
type: FieldType.Linked,
|
||||||
|
value: null,
|
||||||
|
newField: false,
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -132,6 +138,19 @@ describe("CustomFieldsComponent", () => {
|
|||||||
expect(button).toBeFalsy();
|
expect(button).toBeFalsy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should disable the hidden field input when `viewPassword` is false", () => {
|
||||||
|
originalCipherView.viewPassword = false;
|
||||||
|
originalCipherView.fields = mockFieldViews;
|
||||||
|
|
||||||
|
component.ngOnInit();
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const input = fixture.debugElement.query(By.css('[data-testid="custom-hidden-field"]'));
|
||||||
|
|
||||||
|
expect(input.nativeElement.disabled).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
it("when `viewPassword` is true the user can see the view toggle option", () => {
|
it("when `viewPassword` is true the user can see the view toggle option", () => {
|
||||||
originalCipherView.viewPassword = true;
|
originalCipherView.viewPassword = true;
|
||||||
originalCipherView.fields = mockFieldViews;
|
originalCipherView.fields = mockFieldViews;
|
||||||
|
|||||||
@@ -158,20 +158,23 @@ export class CustomFieldsComponent implements OnInit, AfterViewInit {
|
|||||||
value = field.value === "true" ? true : false;
|
value = field.value === "true" ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.fields.push(
|
const customField = this.formBuilder.group<CustomField>({
|
||||||
this.formBuilder.group<CustomField>({
|
type: field.type,
|
||||||
type: field.type,
|
name: field.name,
|
||||||
name: field.name,
|
value: value,
|
||||||
value: value,
|
linkedId: field.linkedId,
|
||||||
linkedId: field.linkedId,
|
newField: false,
|
||||||
newField: false,
|
});
|
||||||
}),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!this.cipherFormContainer.originalCipherView?.viewPassword) {
|
if (
|
||||||
this.customFieldsForm.disable();
|
field.type === FieldType.Hidden &&
|
||||||
}
|
!this.cipherFormContainer.originalCipherView?.viewPassword
|
||||||
|
) {
|
||||||
|
customField.controls.value.disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.fields.push(customField);
|
||||||
|
});
|
||||||
|
|
||||||
// Disable the form if in partial-edit mode
|
// Disable the form if in partial-edit mode
|
||||||
// Must happen after the initial fields are populated
|
// Must happen after the initial fields are populated
|
||||||
|
|||||||
Reference in New Issue
Block a user