From 445ce5a8640ed6db1abe7fd68af83848fb24e399 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 19 Feb 2025 18:51:36 +1000 Subject: [PATCH] Enforce password complexity. Ref https://github.com/GNS3/gns3-gui/issues/3698 --- .../change-user-password/change-user-password.component.html | 2 +- .../change-user-password/change-user-password.component.ts | 5 +++-- .../components/users/logged-user/logged-user.component.ts | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.html b/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.html index 557c001c..dea2d3be 100644 --- a/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.html +++ b/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.html @@ -4,7 +4,7 @@ Password must be between 6 and 100 characters. + >Password must be at least 8 characters long and contain at least one digit, one lowercase letter and one uppercase letter. diff --git a/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.ts b/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.ts index 4c342c98..55b9394c 100644 --- a/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.ts +++ b/src/app/components/user-management/user-detail/change-user-password/change-user-password.component.ts @@ -23,12 +23,13 @@ export class ChangeUserPasswordComponent implements OnInit { private toasterService: ToasterService) { } ngOnInit(): void { + const password_regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8}$/; this.user = this.data.user; this.editPasswordForm = new UntypedFormGroup({ password: new UntypedFormControl(null, - [Validators.minLength(6), Validators.maxLength(100), Validators.required] ), + [Validators.minLength(6), Validators.maxLength(100), Validators.pattern(password_regex), Validators.required] ), confirmPassword: new UntypedFormControl(null, - [Validators.minLength(6), Validators.maxLength(100), Validators.required] ), + [Validators.minLength(6), Validators.maxLength(100), Validators.pattern(password_regex), Validators.required] ), },{ validators: [matchingPassword] }) diff --git a/src/app/components/users/logged-user/logged-user.component.ts b/src/app/components/users/logged-user/logged-user.component.ts index 1678f874..801939b1 100644 --- a/src/app/components/users/logged-user/logged-user.component.ts +++ b/src/app/components/users/logged-user/logged-user.component.ts @@ -37,7 +37,7 @@ export class LoggedUserComponent implements OnInit { changePassword() { this.dialog.open(ChangeUserPasswordComponent, - {width: '400px', height: '300px', data: {user: this.user, controller: this.controller, self_update: true}}); + {width: '500px', height: '300px', data: {user: this.user, controller: this.controller, self_update: true}}); } copyToken() {