diff --git a/src/app/password-recovery/pages/password-recovery/password-recovery.component.html b/src/app/password-recovery/pages/password-recovery/password-recovery.component.html index 3219a6e9b..f1f9e9d70 100644 --- a/src/app/password-recovery/pages/password-recovery/password-recovery.component.html +++ b/src/app/password-recovery/pages/password-recovery/password-recovery.component.html @@ -162,7 +162,11 @@ } @if (submitted) {
We have sent a recovery email to {{ recoveryForm.get('email').value }} + > {{ recoveryForm.get('email').value }}@if (isPasswordReset) { and any other verified email addresses on your account}

diff --git a/src/app/password-recovery/pages/password-recovery/password-recovery.component.spec.ts b/src/app/password-recovery/pages/password-recovery/password-recovery.component.spec.ts index ddbddc434..567d0a46f 100644 --- a/src/app/password-recovery/pages/password-recovery/password-recovery.component.spec.ts +++ b/src/app/password-recovery/pages/password-recovery/password-recovery.component.spec.ts @@ -56,4 +56,35 @@ describe('PasswordRecoveryComponent', () => { it('should create', () => { expect(component).toBeTruthy() }) + + /** Renders the confirmation branch for the given recovery type and returns its text. */ + function confirmationTextFor(recoveryType: string): string { + component.recoveryForm.get('recoveryType').setValue(recoveryType) + component.recoveryForm.get('email').setValue('josiah_carberry@brown.edu') + component.submitted = true + fixture.detectChanges() + return fixture.nativeElement.textContent + } + + it('mentions the other verified addresses after a password reset', () => { + expect(confirmationTextFor('password')).toContain( + 'and any other verified email addresses on your account' + ) + }) + + it('does not mention other verified addresses on the forgot-iD path', () => { + // /forgot-id.json still emails a single address, so the fan out wording would be a lie here. + expect(confirmationTextFor('orcidId')).not.toContain( + 'and any other verified email addresses on your account' + ) + }) + + it('still shows the submitted email in both modes', () => { + expect(confirmationTextFor('password')).toContain( + 'josiah_carberry@brown.edu' + ) + expect(confirmationTextFor('orcidId')).toContain( + 'josiah_carberry@brown.edu' + ) + }) }) diff --git a/src/app/password-recovery/pages/password-recovery/password-recovery.component.ts b/src/app/password-recovery/pages/password-recovery/password-recovery.component.ts index a97d6b375..d30cbb83f 100644 --- a/src/app/password-recovery/pages/password-recovery/password-recovery.component.ts +++ b/src/app/password-recovery/pages/password-recovery/password-recovery.component.ts @@ -25,6 +25,14 @@ export class PasswordRecoveryComponent implements OnInit { ariaLabelMyOrcidAccountPassword = $localize`:@@recovery.myOrcidAccountPassword:my ORCID account password` ariaLabelMy16DigitOrcidId = $localize`:@@recovery.my16DigitOrcidId:my 16-digit ORCID iD` + /** + * The confirmation block is shared with the "remind me my ORCID iD" flow, which still emails a + * single address, so only the password reset path may claim the fan out. + */ + get isPasswordReset(): boolean { + return this.recoveryForm?.get('recoveryType')?.value === 'password' + } + ngOnInit() { this.recoveryForm = new FormGroup({ recoveryType: new FormControl('password', Validators.required), diff --git a/src/locale/messages.lr.xlf b/src/locale/messages.lr.xlf index 7a4380983..f7c5a8c7e 100644 --- a/src/locale/messages.lr.xlf +++ b/src/locale/messages.lr.xlf @@ -11831,11 +11831,19 @@ LR + + and any other verified email addresses on your account + + src/app/password-recovery/pages/password-recovery/password-recovery.component.html + 168 + + LR + If you do not receive the recovery email within 10 minutes please check your spam folder. src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 168,171 + 172,175 LR @@ -11843,7 +11851,7 @@ Back to sign in src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 178 + 182 LR diff --git a/src/locale/messages.rl.xlf b/src/locale/messages.rl.xlf index ea204007a..8500716f2 100644 --- a/src/locale/messages.rl.xlf +++ b/src/locale/messages.rl.xlf @@ -11831,11 +11831,19 @@ RL + + and any other verified email addresses on your account + + src/app/password-recovery/pages/password-recovery/password-recovery.component.html + 168 + + RL + If you do not receive the recovery email within 10 minutes please check your spam folder. src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 168,171 + 172,175 RL @@ -11843,7 +11851,7 @@ Back to sign in src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 178 + 182 RL diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf index 2844f2434..269fd6803 100644 --- a/src/locale/messages.xlf +++ b/src/locale/messages.xlf @@ -10623,18 +10623,25 @@ 164 + + and any other verified email addresses on your account + + src/app/password-recovery/pages/password-recovery/password-recovery.component.html + 168 + + If you do not receive the recovery email within 10 minutes please check your spam folder. src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 168,171 + 172,175 Back to sign in src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 178 + 182 diff --git a/src/locale/messages.xx.xlf b/src/locale/messages.xx.xlf index f7fd69e6f..a3abc340d 100644 --- a/src/locale/messages.xx.xlf +++ b/src/locale/messages.xx.xlf @@ -11831,11 +11831,19 @@ X + + and any other verified email addresses on your account + + src/app/password-recovery/pages/password-recovery/password-recovery.component.html + 168 + + X + If you do not receive the recovery email within 10 minutes please check your spam folder. src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 168,171 + 172,175 X @@ -11843,7 +11851,7 @@ Back to sign in src/app/password-recovery/pages/password-recovery/password-recovery.component.html - 178 + 182 X