[PM-10100] Remove auto password generation (#10355)
* [PM-10100] Remove initial password generation on new Login ciphers * [PM-10100] Update password help text * [PM-10100] Fix linter
This commit is contained in:
parent
0b6701d3f8
commit
600c8de129
|
@ -1815,6 +1815,17 @@
|
|||
"useThisUsername": {
|
||||
"message": "Use this username"
|
||||
},
|
||||
"securePasswordGenerated": {
|
||||
"message": "Secure password generated! Don't forget to also update your password on the website."
|
||||
},
|
||||
"useGeneratorHelpTextPartOne": {
|
||||
"message": "Use the generator",
|
||||
"description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'"
|
||||
},
|
||||
"useGeneratorHelpTextPartTwo": {
|
||||
"message": "to create a strong unique password",
|
||||
"description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'"
|
||||
},
|
||||
"vaultTimeoutAction": {
|
||||
"message": "Vault timeout action"
|
||||
},
|
||||
|
|
|
@ -39,7 +39,4 @@ export class BrowserCipherFormGenerationService implements CipherFormGenerationS
|
|||
|
||||
return result.generatedValue;
|
||||
}
|
||||
async generateInitialPassword(): Promise<string> {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6050,6 +6050,26 @@
|
|||
"randomWord": {
|
||||
"message": "Random word"
|
||||
},
|
||||
"usernameGenerator": {
|
||||
"message": "Username generator"
|
||||
},
|
||||
"useThisPassword": {
|
||||
"message": "Use this password"
|
||||
},
|
||||
"useThisUsername": {
|
||||
"message": "Use this username"
|
||||
},
|
||||
"securePasswordGenerated": {
|
||||
"message": "Secure password generated! Don't forget to also update your password on the website."
|
||||
},
|
||||
"useGeneratorHelpTextPartOne": {
|
||||
"message": "Use the generator",
|
||||
"description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'"
|
||||
},
|
||||
"useGeneratorHelpTextPartTwo": {
|
||||
"message": "to create a strong unique password",
|
||||
"description": "This will be used as part of a larger sentence, broken up to include the generator icon. The full sentence will read 'Use the generator [GENERATOR_ICON] to create a strong unique password'"
|
||||
},
|
||||
"service": {
|
||||
"message": "Service"
|
||||
},
|
||||
|
|
|
@ -11,10 +11,4 @@ export abstract class CipherFormGenerationService {
|
|||
* Generates a random username. Called when the user clicks the "Generate Username" button in the UI.
|
||||
*/
|
||||
abstract generateUsername(): Promise<string | null>;
|
||||
|
||||
/**
|
||||
* Generates an initial password for a new cipher. This should not involve any user interaction as it will
|
||||
* be used to pre-fill the password field in the UI for new Login ciphers.
|
||||
*/
|
||||
abstract generateInitialPassword(): Promise<string | null>;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { CommonModule } from "@angular/common";
|
||||
import { Component, DestroyRef, EventEmitter, Input, Output } from "@angular/core";
|
||||
import { Component, DestroyRef, EventEmitter, Input, OnChanges, Output } from "@angular/core";
|
||||
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
||||
import { firstValueFrom, map, startWith, Subject, Subscription, switchMap, tap } from "rxjs";
|
||||
|
||||
|
@ -42,7 +42,7 @@ import {
|
|||
TypographyModule,
|
||||
],
|
||||
})
|
||||
export class CipherFormGeneratorComponent {
|
||||
export class CipherFormGeneratorComponent implements OnChanges {
|
||||
/**
|
||||
* The type of generator form to show.
|
||||
*/
|
||||
|
|
|
@ -23,6 +23,16 @@
|
|||
<bit-form-field>
|
||||
<bit-label>{{ "password" | i18n }}</bit-label>
|
||||
<input bitInput formControlName="password" type="password" />
|
||||
<bit-hint *ngIf="loginDetailsForm.controls.password.enabled">
|
||||
<ng-container *ngIf="newPasswordGenerated">
|
||||
{{ "securePasswordGenerated" | i18n }}
|
||||
</ng-container>
|
||||
<ng-container *ngIf="!newPasswordGenerated">
|
||||
{{ "useGeneratorHelpTextPartOne" | i18n }}
|
||||
<i class="bwi bwi-generate" aria-hidden="true"></i>
|
||||
{{ "useGeneratorHelpTextPartTwo" | i18n }}
|
||||
</ng-container>
|
||||
</bit-hint>
|
||||
<button
|
||||
type="button"
|
||||
bitIconButton="bwi-check-circle"
|
||||
|
|
|
@ -125,14 +125,6 @@ describe("LoginDetailsSectionComponent", () => {
|
|||
});
|
||||
});
|
||||
|
||||
it("initializes 'loginDetailsForm' with generated password when creating a new cipher", async () => {
|
||||
generationService.generateInitialPassword.mockResolvedValue("generated-password");
|
||||
|
||||
await component.ngOnInit();
|
||||
|
||||
expect(component.loginDetailsForm.controls.password.value).toBe("generated-password");
|
||||
});
|
||||
|
||||
describe("viewHiddenFields", () => {
|
||||
beforeEach(() => {
|
||||
(cipherFormContainer.originalCipherView as CipherView) = {
|
||||
|
|
|
@ -52,6 +52,11 @@ export class LoginDetailsSectionComponent implements OnInit {
|
|||
totp: [""],
|
||||
});
|
||||
|
||||
/**
|
||||
* Flag indicating whether a new password has been generated for the current form.
|
||||
*/
|
||||
newPasswordGenerated: boolean;
|
||||
|
||||
/**
|
||||
* Whether the TOTP field can be captured from the current tab. Only available in the browser extension.
|
||||
*/
|
||||
|
@ -148,7 +153,7 @@ export class LoginDetailsSectionComponent implements OnInit {
|
|||
private async initNewCipher() {
|
||||
this.loginDetailsForm.patchValue({
|
||||
username: this.cipherFormContainer.config.initialValues?.username || "",
|
||||
password: await this.generationService.generateInitialPassword(),
|
||||
password: "",
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -193,6 +198,7 @@ export class LoginDetailsSectionComponent implements OnInit {
|
|||
|
||||
if (newPassword) {
|
||||
this.loginDetailsForm.controls.password.patchValue(newPassword);
|
||||
this.newPasswordGenerated = true;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -23,8 +23,4 @@ export class DefaultCipherFormGenerationService implements CipherFormGenerationS
|
|||
const options = await this.usernameGenerationService.getOptions();
|
||||
return await this.usernameGenerationService.generateUsername(options);
|
||||
}
|
||||
|
||||
async generateInitialPassword(): Promise<string> {
|
||||
return await this.generatePassword();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue