From 00d0ff3afc72435f62aeb6a01ba972c32859f8d4 Mon Sep 17 00:00:00 2001
From: Leonardo Mendoza
Date: Thu, 7 May 2026 18:18:32 -0600
Subject: [PATCH 1/8] PD-5529
---
.../form-sign-in/form-sign-in.component.spec.ts | 17 +++++++++++++++++
.../form-sign-in/form-sign-in.component.ts | 11 +++++++++--
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts b/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts
index 19f9113093..d8e3db6204 100644
--- a/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts
+++ b/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts
@@ -16,10 +16,12 @@ import { OauthService } from '../../../core/oauth/oauth.service'
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'
import { ReactiveFormsModule } from '@angular/forms'
+import { Router } from '@angular/router'
describe('FormSignInComponent', () => {
let component: FormSignInComponent
let fixture: ComponentFixture
+ let router: Router
beforeEach(() => {
TestBed.configureTestingModule({
@@ -48,10 +50,25 @@ describe('FormSignInComponent', () => {
beforeEach(() => {
fixture = TestBed.createComponent(FormSignInComponent)
component = fixture.componentInstance
+ router = TestBed.inject(Router)
fixture.detectChanges()
})
it('should create', () => {
expect(component).toBeTruthy()
})
+
+ it('only triggers oauth redirect once per successful flow', () => {
+ component.isOauthAuthorizationTogglzEnable = false
+ component.platform = { social: false, institutional: false } as any
+ component.signInLocal = { params: {} } as any
+ const routerNavigateSpy = spyOn(router, 'navigate').and.returnValue(
+ Promise.resolve(true)
+ )
+
+ component.oauthAuthorize('https://qa.orcid.org/oauth/authorize')
+ component.oauthAuthorize('https://qa.orcid.org/oauth/authorize')
+
+ expect(routerNavigateSpy).toHaveBeenCalledTimes(1)
+ })
})
diff --git a/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts b/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
index e4c3cc9613..d2d2f1c2e4 100644
--- a/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
+++ b/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
@@ -86,6 +86,7 @@ export class FormSignInComponent implements OnInit, OnDestroy {
backendErrorsMatcher = new ErrorStateMatcherForPasswordField()
emailVerified: boolean
invalidVerifyUrl: boolean
+ private oauthRedirectTriggered = false
placeholderUsername = $localize`:@@ngOrcid.signin.username:Email or 16-digit ORCID iD`
placeholderPassword = $localize`:@@ngOrcid.signin.yourOrcidPassword:Your ORCID password`
@@ -386,9 +387,15 @@ export class FormSignInComponent implements OnInit, OnDestroy {
}
oauthAuthorize(urlRedirect) {
+ if (this.oauthRedirectTriggered) {
+ return
+ }
+ this.oauthRedirectTriggered = true
+
if (this.isOauthAuthorizationTogglzEnable) {
- if (this._oauthUrlSessionManager.get()) {
- urlRedirect = this._oauthUrlSessionManager.get()
+ const storedOauthRedirectUrl = this._oauthUrlSessionManager.get()
+ if (storedOauthRedirectUrl) {
+ urlRedirect = storedOauthRedirectUrl
this._oauthUrlSessionManager.clear()
}
//add http if not present
From 0ccbf5be92f21943cfd6b85f1d928d6d7c8ffe05 Mon Sep 17 00:00:00 2001
From: Leonardo Mendoza
Date: Thu, 7 May 2026 18:20:17 -0600
Subject: [PATCH 2/8] PD-5551
---
.../two-factor-recovery-codes.component.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html
index 119fabdb49..deda5abf9c 100644
--- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html
+++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html
@@ -13,9 +13,9 @@
Your 2FA recovery codes
- Recovery codes can be used to access your account when you can’t
- receive 2FA codes (for example, if you lose your device). Each code
- can only be used once.
+ Recovery codes can be used to access your ORCID account when you
+ aren’t able to use your authentication app. Each recovery code can
+ only be used once.
Date: Thu, 7 May 2026 18:23:46 -0600
Subject: [PATCH 3/8] PD-5550
---
.../two-factor-enable/two-factor-enable.component.html | 6 +++---
.../two-factor-enable/two-factor-enable.component.scss | 3 +++
src/locale/messages.lr.xlf | 2 +-
src/locale/messages.rl.xlf | 2 +-
src/locale/messages.xlf | 2 +-
src/locale/messages.xx.xlf | 2 +-
6 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
index 9e4f681e41..6e70b931d6 100644
--- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
+++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
@@ -86,7 +86,7 @@
i18n="@@ngOrcid.signin.2fa.verificationCodeRequired"
class="error-message"
>
- Authentication code is required
+ A verification code is required
{{ inputVerificationCode.value?.length || 0 }}/6
@@ -103,7 +103,7 @@
i18n="@@ngOrcid.signin.2fa.badVerificationCodeLength"
class="error-message"
>
- Invalid authentication code length
+ Invalid verification code length
{{ inputVerificationCode.value?.length || 0 }}/6
@@ -117,7 +117,7 @@
i18n="@@ngOrcid.signin.2fa.badVerificationCode"
class="error-message"
>
- Invalid authentication code
+ Invalid verification code
{{ inputVerificationCode.value?.length || 0 }}/6
diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss
index fb49e83a2e..e96a096606 100644
--- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss
+++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss
@@ -27,6 +27,9 @@ textarea.text-code {
}
mat-error {
+ display: block;
+ margin-top: var(--orcid-space-s, 8px);
+
p {
margin: 0 !important;
}
diff --git a/src/locale/messages.lr.xlf b/src/locale/messages.lr.xlf
index dc2a0126bf..528d10586c 100644
--- a/src/locale/messages.lr.xlf
+++ b/src/locale/messages.lr.xlf
@@ -19076,7 +19076,7 @@
LR
- Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once.
+ Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once.
src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html
15,19
diff --git a/src/locale/messages.rl.xlf b/src/locale/messages.rl.xlf
index ebdf07a308..575ee49f80 100644
--- a/src/locale/messages.rl.xlf
+++ b/src/locale/messages.rl.xlf
@@ -19076,7 +19076,7 @@
RL
- Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once.
+ Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once.
src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html
15,19
diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf
index 4b1bef4e71..37e350f3d3 100644
--- a/src/locale/messages.xlf
+++ b/src/locale/messages.xlf
@@ -17091,7 +17091,7 @@
- Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once.
+ Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once.
src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html
15,19
diff --git a/src/locale/messages.xx.xlf b/src/locale/messages.xx.xlf
index 61171f9552..b502b711d6 100644
--- a/src/locale/messages.xx.xlf
+++ b/src/locale/messages.xx.xlf
@@ -19076,7 +19076,7 @@
X
- Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once.
+ Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once.
src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html
15,19
From b07d76be7ec5e3d9d417871781578206b7793174 Mon Sep 17 00:00:00 2001
From: Leonardo Mendoza
Date: Thu, 7 May 2026 18:26:45 -0600
Subject: [PATCH 4/8] PD-5549
---
.../two-factor-enable/two-factor-enable.component.html | 4 +---
.../two-factor-enable/two-factor-enable.component.spec.ts | 6 +++++-
.../two-factor-enable/two-factor-enable.component.ts | 2 +-
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
index 6e70b931d6..96de929fe9 100644
--- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
+++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
@@ -48,9 +48,7 @@
type="button"
class="textarea-copy-action"
[cdkCopyToClipboard]="textCodeClipboard"
- matTooltip="{{ textCodeCopiedTooltip }}"
- #textCodeTooltip="matTooltip"
- (click)="textCodeTooltip.toggle()"
+ matTooltip="{{ textCodeTooltip }}"
i18n-aria-label="@@account.copySetupCode"
aria-label="Copy setup code"
>
diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts
index f7af6f784a..8089a05ec9 100644
--- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts
+++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts
@@ -118,7 +118,7 @@ describe('TwoFactorEnableComponent', () => {
})
it('should call register method when input is filled and submit is triggered', async () => {
- component.twoFactorForm.get('verificationCode').setValue('123456')
+ component.twoFactorForm.get('verificationCode')?.setValue('123456')
fixture.detectChanges()
await fixture.whenStable()
@@ -132,4 +132,8 @@ describe('TwoFactorEnableComponent', () => {
component.twoFactorForm.get('verificationCode')?.hasError('invalidCode')
).toBeFalse()
})
+
+ it('should expose static setup code tooltip text', () => {
+ expect(component.textCodeTooltip).toBe('Copy setup code to clipboard')
+ })
})
diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts
index 0c90c83b84..64dd7cf933 100644
--- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts
+++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts
@@ -45,7 +45,7 @@ export class TwoFactorEnableComponent implements OnInit {
twoFactorForm: UntypedFormGroup
showTextCode = false
loading = false
- textCodeCopiedTooltip = $localize`:@@account.setupCodeClipboard:Setup code has been copied to the clipboard`
+ textCodeTooltip = $localize`:@@account.copySetupCodeToClipboard:Copy setup code to clipboard`
constructor(
private _twoFactorService: TwoFactorAuthenticationService,
From 76537e60ce6f87c1c38f54cfdecef5b8d6ca0bdd Mon Sep 17 00:00:00 2001
From: Leonardo Mendoza
Date: Thu, 7 May 2026 18:30:41 -0600
Subject: [PATCH 5/8] PD-5547
---
.../two-factor-recovery-codes.component.spec.ts | 12 ++++++++++--
.../two-factor-recovery-codes.component.ts | 14 +++++++++++---
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts
index 7a6cd108d8..56d2f52d1b 100644
--- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts
+++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts
@@ -68,17 +68,19 @@ describe('TwoFactorRecoveryCodesComponent', () => {
it('should only allow complete when copy/download and checkbox are done', () => {
expect(component.canCompleteSetup).toBeFalse()
+ expect(component.twoFactorForm.get('confirmCodes')?.disabled).toBeTrue()
component.markCodesCopied()
+ expect(component.twoFactorForm.get('confirmCodes')?.enabled).toBeTrue()
expect(component.canCompleteSetup).toBeFalse()
- component.twoFactorForm.get('confirmCodes').setValue(true)
+ component.twoFactorForm.get('confirmCodes')?.setValue(true)
expect(component.canCompleteSetup).toBeTrue()
})
it('should record click and completion events when setup is completed', async () => {
component.markCodesCopied()
- component.twoFactorForm.get('confirmCodes').setValue(true)
+ component.twoFactorForm.get('confirmCodes')?.setValue(true)
component.completeSetup()
await fixture.whenStable()
@@ -91,4 +93,10 @@ describe('TwoFactorRecoveryCodesComponent', () => {
)
expect(router.navigate).toHaveBeenCalled()
})
+
+ it('should enable confirm checkbox after downloading recovery codes', () => {
+ expect(component.twoFactorForm.get('confirmCodes')?.disabled).toBeTrue()
+ component.downloadRecoveryCodes()
+ expect(component.twoFactorForm.get('confirmCodes')?.enabled).toBeTrue()
+ })
})
diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts
index 677e406c58..fefe90a3e7 100644
--- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts
+++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts
@@ -43,7 +43,10 @@ export class TwoFactorRecoveryCodesComponent implements OnInit {
this.twoFactorForm = new UntypedFormGroup({
backupCodes: new UntypedFormControl(this.backupCodes, []),
- confirmCodes: new UntypedFormControl(false, [Validators.requiredTrue]),
+ confirmCodes: new UntypedFormControl(
+ { value: false, disabled: true },
+ [Validators.requiredTrue]
+ ),
})
}
@@ -55,11 +58,11 @@ export class TwoFactorRecoveryCodesComponent implements OnInit {
this.window.document.body.appendChild(link)
link.click()
this.window.document.body.removeChild(link)
- this.hasDownloadedOrCopied = true
+ this.enableConfirmation()
}
markCodesCopied() {
- this.hasDownloadedOrCopied = true
+ this.enableConfirmation()
}
get canCompleteSetup() {
@@ -86,4 +89,9 @@ export class TwoFactorRecoveryCodesComponent implements OnInit {
}
})
}
+
+ private enableConfirmation() {
+ this.hasDownloadedOrCopied = true
+ this.twoFactorForm.get('confirmCodes')?.enable({ emitEvent: false })
+ }
}
From c8fd79bcda11fc80fa625db7ef4614e6ce48ecc2 Mon Sep 17 00:00:00 2001
From: Leonardo Mendoza
Date: Thu, 7 May 2026 18:37:36 -0600
Subject: [PATCH 6/8] PD-5543
---
.../settings-security-two-factor-auth.component.html | 1 +
.../settings-security-two-factor-auth.component.scss | 11 +++++++++++
2 files changed, 12 insertions(+)
diff --git a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
index fa6dff8da7..e875eac03b 100644
--- a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
+++ b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
@@ -34,6 +34,7 @@
mat-raised-button
color="primary"
id="cy-two-factor-enable"
+ class="two-factor-panel__enable-button"
(click)="twoFactor()"
i18n="@@account.enableTwoFactorAuth"
>
diff --git a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss
index 34e337e30e..49d698af40 100644
--- a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss
+++ b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss
@@ -1,3 +1,9 @@
+:host {
+ display: block;
+ width: 100%;
+}
+
+
.two-factor-panel {
display: flex;
flex-direction: column;
@@ -78,3 +84,8 @@
border-color: var(--orcid-color-state-warning-dark, #d32f2f) !important;
color: #fff !important;
}
+
+.two-factor-panel__enable-button {
+ align-self: flex-start;
+ width: auto;
+}
From f903795c7f735b851bb2daaa0345c7c5cea8633b Mon Sep 17 00:00:00 2001
From: Leonardo Mendoza
Date: Thu, 7 May 2026 18:41:53 -0600
Subject: [PATCH 7/8] PD-0000 format
---
SUPPORTED_BROWSERS.md | 20 ++++----
...gs-security-two-factor-auth.component.scss | 1 -
.../cdk/platform-info/supported-browsers.json | 10 ++--
.../two-factor-recovery-codes.component.ts | 7 ++-
src/locale/messages.lr.xlf | 50 +++++++++----------
src/locale/messages.rl.xlf | 50 +++++++++----------
src/locale/messages.xlf | 50 +++++++++----------
src/locale/messages.xx.xlf | 50 +++++++++----------
8 files changed, 118 insertions(+), 120 deletions(-)
diff --git a/SUPPORTED_BROWSERS.md b/SUPPORTED_BROWSERS.md
index f906905f42..169077cfb4 100644
--- a/SUPPORTED_BROWSERS.md
+++ b/SUPPORTED_BROWSERS.md
@@ -2,13 +2,13 @@
> This file is auto-generated from `.browserslistrc` during the prebuild step. Do not edit manually.
-| Browser | Minimum version |
-| ---------------- | --------------- |
-| Android WebView | 145 or newer |
-| Apple Safari | 17 or newer |
-| Google Chrome | 117 or newer |
-| Microsoft Edge | 117 or newer |
-| Mozilla Firefox | 116 or newer |
-| Opera | 103 or newer |
-| Opera Mobile | 80 or newer |
-| Samsung Internet | 24 or newer |
+| Browser | Minimum version |
+|---------|-----------------|
+| Android WebView | 145 or newer |
+| Apple Safari | 17 or newer |
+| Google Chrome | 119 or newer |
+| Microsoft Edge | 119 or newer |
+| Mozilla Firefox | 119 or newer |
+| Opera | 105 or newer |
+| Opera Mobile | 80 or newer |
+| Samsung Internet | 25 or newer |
diff --git a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss
index 49d698af40..df1179b232 100644
--- a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss
+++ b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss
@@ -3,7 +3,6 @@
width: 100%;
}
-
.two-factor-panel {
display: flex;
flex-direction: column;
diff --git a/src/app/cdk/platform-info/supported-browsers.json b/src/app/cdk/platform-info/supported-browsers.json
index 7b0940b911..af7d12e8aa 100644
--- a/src/app/cdk/platform-info/supported-browsers.json
+++ b/src/app/cdk/platform-info/supported-browsers.json
@@ -1,10 +1,10 @@
{
"chrome": {
- "major": 117,
+ "major": 119,
"minor": 0
},
"firefox": {
- "major": 116,
+ "major": 119,
"minor": 0
},
"android": {
@@ -12,7 +12,7 @@
"minor": 0
},
"edge": {
- "major": 117,
+ "major": 119,
"minor": 0
},
"safari": {
@@ -24,11 +24,11 @@
"minor": 0
},
"opera": {
- "major": 103,
+ "major": 105,
"minor": 0
},
"samsung": {
- "major": 24,
+ "major": 25,
"minor": 0
}
}
diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts
index fefe90a3e7..67c467fb5d 100644
--- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts
+++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts
@@ -43,10 +43,9 @@ export class TwoFactorRecoveryCodesComponent implements OnInit {
this.twoFactorForm = new UntypedFormGroup({
backupCodes: new UntypedFormControl(this.backupCodes, []),
- confirmCodes: new UntypedFormControl(
- { value: false, disabled: true },
- [Validators.requiredTrue]
- ),
+ confirmCodes: new UntypedFormControl({ value: false, disabled: true }, [
+ Validators.requiredTrue,
+ ]),
})
}
diff --git a/src/locale/messages.lr.xlf b/src/locale/messages.lr.xlf
index 528d10586c..2a23573d52 100644
--- a/src/locale/messages.lr.xlf
+++ b/src/locale/messages.lr.xlf
@@ -121,7 +121,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 119,121
+ 117,119
LR
@@ -141,7 +141,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 88,90
+ 86,88
LR
@@ -161,7 +161,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 105,107
+ 103,105
LR
@@ -1598,7 +1598,7 @@
Enable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 39,41
+ 40,42
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
@@ -1618,7 +1618,7 @@
Sign in with 2FA
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 46
+ 47
LR
@@ -1626,7 +1626,7 @@
Use your authentication app to generate a verification code whenever you sign in to ORCID.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 50,53
+ 51,54
LR
@@ -1634,7 +1634,7 @@
Authentication app
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 63,65
+ 64,66
LR
@@ -1642,7 +1642,7 @@
Account recovery
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 71
+ 72
LR
@@ -1650,7 +1650,7 @@
Recover access to your ORCID account if you can't use your authentication app.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 75,78
+ 76,79
LR
@@ -1658,7 +1658,7 @@
2FA recovery codes
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 88,90
+ 89,91
LR
@@ -1666,7 +1666,7 @@
You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 95,98
+ 96,99
LR
@@ -1678,7 +1678,7 @@
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 105,107
+ 106,108
LR
@@ -1686,7 +1686,7 @@
Disable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 115,117
+ 116,118
LR
@@ -1938,7 +1938,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 91
+ 92
LR
@@ -16995,7 +16995,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 463
+ 470
src/locale/i18n.pseudo.component.html
@@ -17015,7 +17015,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 465
+ 472
LR
@@ -17027,11 +17027,11 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 466
+ 473
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 487
+ 494
src/locale/i18n.pseudo.component.html
@@ -18883,7 +18883,7 @@
Email or 16-digit ORCID iD
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 90
+ 91
LR
@@ -18891,7 +18891,7 @@
Claiming your account
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 484
+ 491
LR
@@ -18899,7 +18899,7 @@
Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 486
+ 493
LR
@@ -19039,7 +19039,7 @@
Copy setup code
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 55
+ 53
LR
@@ -19047,12 +19047,12 @@
Enter the 6-digit verification code from your authentication app
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 62,64
+ 60,62
LR
-
- Setup code has been copied to the clipboard
+
+ Copy setup code to clipboard
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts
48
diff --git a/src/locale/messages.rl.xlf b/src/locale/messages.rl.xlf
index 575ee49f80..822be74cf4 100644
--- a/src/locale/messages.rl.xlf
+++ b/src/locale/messages.rl.xlf
@@ -121,7 +121,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 119,121
+ 117,119
RL
@@ -141,7 +141,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 88,90
+ 86,88
RL
@@ -161,7 +161,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 105,107
+ 103,105
RL
@@ -1598,7 +1598,7 @@
Enable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 39,41
+ 40,42
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
@@ -1618,7 +1618,7 @@
Sign in with 2FA
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 46
+ 47
RL
@@ -1626,7 +1626,7 @@
Use your authentication app to generate a verification code whenever you sign in to ORCID.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 50,53
+ 51,54
RL
@@ -1634,7 +1634,7 @@
Authentication app
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 63,65
+ 64,66
RL
@@ -1642,7 +1642,7 @@
Account recovery
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 71
+ 72
RL
@@ -1650,7 +1650,7 @@
Recover access to your ORCID account if you can't use your authentication app.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 75,78
+ 76,79
RL
@@ -1658,7 +1658,7 @@
2FA recovery codes
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 88,90
+ 89,91
RL
@@ -1666,7 +1666,7 @@
You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 95,98
+ 96,99
RL
@@ -1678,7 +1678,7 @@
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 105,107
+ 106,108
RL
@@ -1686,7 +1686,7 @@
Disable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 115,117
+ 116,118
RL
@@ -1938,7 +1938,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 91
+ 92
RL
@@ -16995,7 +16995,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 463
+ 470
src/locale/i18n.pseudo.component.html
@@ -17015,7 +17015,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 465
+ 472
RL
@@ -17027,11 +17027,11 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 466
+ 473
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 487
+ 494
src/locale/i18n.pseudo.component.html
@@ -18883,7 +18883,7 @@
Email or 16-digit ORCID iD
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 90
+ 91
RL
@@ -18891,7 +18891,7 @@
Claiming your account
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 484
+ 491
RL
@@ -18899,7 +18899,7 @@
Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 486
+ 493
RL
@@ -19039,7 +19039,7 @@
Copy setup code
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 55
+ 53
RL
@@ -19047,12 +19047,12 @@
Enter the 6-digit verification code from your authentication app
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 62,64
+ 60,62
RL
-
- Setup code has been copied to the clipboard
+
+ Copy setup code to clipboard
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts
48
diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf
index 37e350f3d3..b291d848ba 100644
--- a/src/locale/messages.xlf
+++ b/src/locale/messages.xlf
@@ -111,7 +111,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 119,121
+ 117,119
@@ -130,7 +130,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 88,90
+ 86,88
@@ -149,7 +149,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 105,107
+ 103,105
@@ -1459,7 +1459,7 @@
Enable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 39,41
+ 40,42
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
@@ -1478,49 +1478,49 @@
Sign in with 2FA
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 46
+ 47
Use your authentication app to generate a verification code whenever you sign in to ORCID.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 50,53
+ 51,54
Authentication app
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 63,65
+ 64,66
Account recovery
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 71
+ 72
Recover access to your ORCID account if you can't use your authentication app.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 75,78
+ 76,79
2FA recovery codes
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 88,90
+ 89,91
You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 95,98
+ 96,99
@@ -1531,14 +1531,14 @@
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 105,107
+ 106,108
Disable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 115,117
+ 116,118
@@ -1761,7 +1761,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 91
+ 92
@@ -15254,7 +15254,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 463
+ 470
src/locale/i18n.pseudo.component.html
@@ -15273,7 +15273,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 465
+ 472
@@ -15284,11 +15284,11 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 466
+ 473
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 487
+ 494
src/locale/i18n.pseudo.component.html
@@ -16922,21 +16922,21 @@
Email or 16-digit ORCID iD
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 90
+ 91
Claiming your account
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 484
+ 491
Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 486
+ 493
@@ -17059,18 +17059,18 @@
Copy setup code
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 55
+ 53
Enter the 6-digit verification code from your authentication app
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 62,64
+ 60,62
-
- Setup code has been copied to the clipboard
+
+ Copy setup code to clipboard
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts
48
diff --git a/src/locale/messages.xx.xlf b/src/locale/messages.xx.xlf
index b502b711d6..b789169f19 100644
--- a/src/locale/messages.xx.xlf
+++ b/src/locale/messages.xx.xlf
@@ -121,7 +121,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 119,121
+ 117,119
X
@@ -141,7 +141,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 88,90
+ 86,88
X
@@ -161,7 +161,7 @@
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 105,107
+ 103,105
X
@@ -1598,7 +1598,7 @@
Enable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 39,41
+ 40,42
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
@@ -1618,7 +1618,7 @@
Sign in with 2FA
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 46
+ 47
X
@@ -1626,7 +1626,7 @@
Use your authentication app to generate a verification code whenever you sign in to ORCID.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 50,53
+ 51,54
X
@@ -1634,7 +1634,7 @@
Authentication app
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 63,65
+ 64,66
X
@@ -1642,7 +1642,7 @@
Account recovery
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 71
+ 72
X
@@ -1650,7 +1650,7 @@
Recover access to your ORCID account if you can't use your authentication app.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 75,78
+ 76,79
X
@@ -1658,7 +1658,7 @@
2FA recovery codes
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 88,90
+ 89,91
X
@@ -1666,7 +1666,7 @@
You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up.
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 95,98
+ 96,99
X
@@ -1678,7 +1678,7 @@
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 105,107
+ 106,108
X
@@ -1686,7 +1686,7 @@
Disable two-factor authentication
src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html
- 115,117
+ 116,118
X
@@ -1938,7 +1938,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 91
+ 92
X
@@ -16995,7 +16995,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 463
+ 470
src/locale/i18n.pseudo.component.html
@@ -17015,7 +17015,7 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 465
+ 472
X
@@ -17027,11 +17027,11 @@
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 466
+ 473
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 487
+ 494
src/locale/i18n.pseudo.component.html
@@ -18883,7 +18883,7 @@
Email or 16-digit ORCID iD
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 90
+ 91
X
@@ -18891,7 +18891,7 @@
Claiming your account
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 484
+ 491
X
@@ -18899,7 +18899,7 @@
Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please
src/app/sign-in/components/form-sign-in/form-sign-in.component.ts
- 486
+ 493
X
@@ -19039,7 +19039,7 @@
Copy setup code
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 55
+ 53
X
@@ -19047,12 +19047,12 @@
Enter the 6-digit verification code from your authentication app
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html
- 62,64
+ 60,62
X
-
- Setup code has been copied to the clipboard
+
+ Copy setup code to clipboard
src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts
48
From 1ee77e920c8efbf4ca70eabad5fec8f6a492ec76 Mon Sep 17 00:00:00 2001
From: Leonardo Mendoza
Date: Thu, 7 May 2026 18:57:35 -0600
Subject: [PATCH 8/8] PD-3931
---
SUPPORTED_BROWSERS.md | 20 +++++++++----------
.../modal-websites.component.ts | 6 +++---
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/SUPPORTED_BROWSERS.md b/SUPPORTED_BROWSERS.md
index 169077cfb4..91e81c363b 100644
--- a/SUPPORTED_BROWSERS.md
+++ b/SUPPORTED_BROWSERS.md
@@ -2,13 +2,13 @@
> This file is auto-generated from `.browserslistrc` during the prebuild step. Do not edit manually.
-| Browser | Minimum version |
-|---------|-----------------|
-| Android WebView | 145 or newer |
-| Apple Safari | 17 or newer |
-| Google Chrome | 119 or newer |
-| Microsoft Edge | 119 or newer |
-| Mozilla Firefox | 119 or newer |
-| Opera | 105 or newer |
-| Opera Mobile | 80 or newer |
-| Samsung Internet | 25 or newer |
+| Browser | Minimum version |
+| ---------------- | --------------- |
+| Android WebView | 145 or newer |
+| Apple Safari | 17 or newer |
+| Google Chrome | 119 or newer |
+| Microsoft Edge | 119 or newer |
+| Mozilla Firefox | 119 or newer |
+| Opera | 105 or newer |
+| Opera Mobile | 80 or newer |
+| Samsung Internet | 25 or newer |
diff --git a/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts b/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts
index 14ccae99af..a7036e32b3 100644
--- a/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts
+++ b/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts
@@ -152,7 +152,6 @@ export class ModalWebsitesComponent implements OnInit, OnDestroy {
websites: [],
visibility: this.originalBackendWebsites.visibility,
}
- this._changeDetectorRef.detach()
this.websites.reverse()
this.websites
.map((value) => value.putCode)
@@ -178,15 +177,15 @@ export class ModalWebsitesComponent implements OnInit, OnDestroy {
}
saveEvent() {
- if (this.isSavingWebsites) {
+ if (this.loadingWebsites || this.isSavingWebsites) {
return
}
+ this.isSavingWebsites = true
this.websitesForm.markAllAsTouched()
this.websitesForm.updateValueAndValidity()
if (this.websitesForm.valid) {
- this.isSavingWebsites = true
this._recordWebsitesService
.postWebsites(this.formToBackend(this.websitesForm))
.pipe(
@@ -201,6 +200,7 @@ export class ModalWebsitesComponent implements OnInit, OnDestroy {
() => {}
)
} else {
+ this.isSavingWebsites = false
this._snackBar.showValidationError()
}
}