From 65074b0d12d261d99c1c7f420a92069a20a2e144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa?= Date: Mon, 28 Oct 2024 14:52:45 +0100 Subject: [PATCH 01/39] Initialize SDK even when orgKeys is null (#11748) --- .../src/platform/services/sdk/default-sdk.service.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libs/common/src/platform/services/sdk/default-sdk.service.ts b/libs/common/src/platform/services/sdk/default-sdk.service.ts index adea07becc7..a1617315448 100644 --- a/libs/common/src/platform/services/sdk/default-sdk.service.ts +++ b/libs/common/src/platform/services/sdk/default-sdk.service.ts @@ -96,7 +96,7 @@ export class DefaultSdkService implements SdkService { let client: BitwardenClient; const createAndInitializeClient = async () => { - if (privateKey == null || userKey == null || orgKeys == null) { + if (privateKey == null || userKey == null) { return undefined; } @@ -150,7 +150,7 @@ export class DefaultSdkService implements SdkService { kdfParams: KdfConfig, privateKey: EncryptedString, userKey: UserKey, - orgKeys: Record, + orgKeys?: Record, ) { await client.crypto().initialize_user_crypto({ email: account.email, @@ -169,9 +169,12 @@ export class DefaultSdkService implements SdkService { }, privateKey, }); + + // We initialize the org crypto even if the org_keys are + // null to make sure any existing org keys are cleared. await client.crypto().initialize_org_crypto({ organizationKeys: new Map( - Object.entries(orgKeys) + Object.entries(orgKeys ?? {}) .filter(([_, v]) => v.type === "organization") .map(([k, v]) => [k, v.key]), ), From 3f3f5cb7f0b3f922153612f5b185bd0d0de8ec41 Mon Sep 17 00:00:00 2001 From: watsondm <129207532+watsondm@users.noreply.github.com> Date: Mon, 28 Oct 2024 10:43:26 -0400 Subject: [PATCH 02/39] SRE-1060 Add usdev to additional regions config (#11612) --- apps/web/config/usdev.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/web/config/usdev.json b/apps/web/config/usdev.json index af96a38c6af..c19deba27b1 100644 --- a/apps/web/config/usdev.json +++ b/apps/web/config/usdev.json @@ -4,6 +4,15 @@ "notifications": "https://notifications.usdev.bitwarden.pw", "scim": "https://scim.usdev.bitwarden.pw" }, + "additionalRegions": [ + { + "key": "USDEV", + "domain": "usdev.bitwarden.pw", + "urls": { + "webVault": "https://vault.usdev.bitwarden.pw" + } + } + ], "flags": { "showPasswordless": true } From f4dfd042bb68f1de28beea55aeddebd86eae7acd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 11:12:43 -0400 Subject: [PATCH 03/39] [deps]: Update uuid to v11 (#11737) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../native-messaging-test-runner/package-lock.json | 10 +++++----- apps/desktop/native-messaging-test-runner/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/desktop/native-messaging-test-runner/package-lock.json b/apps/desktop/native-messaging-test-runner/package-lock.json index b243b51acc9..3b37ecb5f4d 100644 --- a/apps/desktop/native-messaging-test-runner/package-lock.json +++ b/apps/desktop/native-messaging-test-runner/package-lock.json @@ -14,7 +14,7 @@ "module-alias": "2.2.3", "node-ipc": "9.2.1", "ts-node": "10.9.2", - "uuid": "10.0.0", + "uuid": "11.0.1", "yargs": "17.7.2" }, "devDependencies": { @@ -421,16 +421,16 @@ "license": "MIT" }, "node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.1.tgz", + "integrity": "sha512-wt9UB5EcLhnboy1UvA1mvGPXkIIrHSu+3FmUksARfdVw9tuPf3CH/CohxO0Su1ApoKAeT6BVzAJIvjTuQVSmuQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { diff --git a/apps/desktop/native-messaging-test-runner/package.json b/apps/desktop/native-messaging-test-runner/package.json index ccd480e31b6..ad657d0a98f 100644 --- a/apps/desktop/native-messaging-test-runner/package.json +++ b/apps/desktop/native-messaging-test-runner/package.json @@ -19,7 +19,7 @@ "module-alias": "2.2.3", "node-ipc": "9.2.1", "ts-node": "10.9.2", - "uuid": "10.0.0", + "uuid": "11.0.1", "yargs": "17.7.2" }, "devDependencies": { From dd653b5269f469fe97f3e00f0e2a158a8088e24c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 11:13:21 -0400 Subject: [PATCH 04/39] [deps] Autofill: Update tldts to v6.1.56 (#11728) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- apps/cli/package.json | 2 +- package-lock.json | 18 +++++++++--------- package.json | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/cli/package.json b/apps/cli/package.json index 55bcee689d0..fb9f682f961 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -80,7 +80,7 @@ "papaparse": "5.4.1", "proper-lockfile": "4.1.2", "rxjs": "7.8.1", - "tldts": "6.1.52", + "tldts": "6.1.56", "zxcvbn": "4.4.2" } } diff --git a/package-lock.json b/package-lock.json index f60ec732132..a92dd243112 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,7 +68,7 @@ "qrious": "4.0.2", "rxjs": "7.8.1", "tabbable": "6.2.0", - "tldts": "6.1.52", + "tldts": "6.1.56", "utf-8-validate": "6.0.4", "zone.js": "0.13.3", "zxcvbn": "4.4.2" @@ -225,7 +225,7 @@ "papaparse": "5.4.1", "proper-lockfile": "4.1.2", "rxjs": "7.8.1", - "tldts": "6.1.52", + "tldts": "6.1.56", "zxcvbn": "4.4.2" }, "bin": { @@ -36439,21 +36439,21 @@ } }, "node_modules/tldts": { - "version": "6.1.52", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.52.tgz", - "integrity": "sha512-fgrDJXDjbAverY6XnIt0lNfv8A0cf7maTEaZxNykLGsLG7XP+5xhjBTrt/ieAsFjAlZ+G5nmXomLcZDkxXnDzw==", + "version": "6.1.56", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.56.tgz", + "integrity": "sha512-2PT1oRZCxtsbLi5R2SQjE/v4vvgRggAtVcYj+3Rrcnu2nPZvu7m64+gDa/EsVSWd3QzEc0U0xN+rbEKsJC47kA==", "license": "MIT", "dependencies": { - "tldts-core": "^6.1.52" + "tldts-core": "^6.1.56" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.52", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.52.tgz", - "integrity": "sha512-j4OxQI5rc1Ve/4m/9o2WhWSC4jGc4uVbCINdOEJRAraCi0YqTqgMcxUx7DbmuP0G3PCixoof/RZB0Q5Kh9tagw==", + "version": "6.1.56", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.56.tgz", + "integrity": "sha512-Ihxv/Bwiyj73icTYVgBUkQ3wstlCglLoegSgl64oSrGUBX1hc7Qmf/CnrnJLaQdZrCnTaLqMYOwKMKlkfkFrxQ==", "license": "MIT" }, "node_modules/tmp": { diff --git a/package.json b/package.json index bf9c8b76735..77cf21e2bae 100644 --- a/package.json +++ b/package.json @@ -202,7 +202,7 @@ "qrious": "4.0.2", "rxjs": "7.8.1", "tabbable": "6.2.0", - "tldts": "6.1.52", + "tldts": "6.1.56", "utf-8-validate": "6.0.4", "zone.js": "0.13.3", "zxcvbn": "4.4.2" From db6c6a84cc69a1d1a607c37787b573bc5641e2de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 11:13:54 -0400 Subject: [PATCH 05/39] [deps] Platform: Update @types/node to v20.17.1 (#11733) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../native-messaging-test-runner/package-lock.json | 8 ++++---- apps/desktop/native-messaging-test-runner/package.json | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/desktop/native-messaging-test-runner/package-lock.json b/apps/desktop/native-messaging-test-runner/package-lock.json index 3b37ecb5f4d..06c6cd1d2e5 100644 --- a/apps/desktop/native-messaging-test-runner/package-lock.json +++ b/apps/desktop/native-messaging-test-runner/package-lock.json @@ -18,7 +18,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@types/node": "20.16.11", + "@types/node": "20.17.1", "@types/node-ipc": "9.2.3", "typescript": "4.7.4" } @@ -106,9 +106,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.16.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", - "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", + "version": "20.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.1.tgz", + "integrity": "sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" diff --git a/apps/desktop/native-messaging-test-runner/package.json b/apps/desktop/native-messaging-test-runner/package.json index ad657d0a98f..0c38902ea4c 100644 --- a/apps/desktop/native-messaging-test-runner/package.json +++ b/apps/desktop/native-messaging-test-runner/package.json @@ -23,7 +23,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@types/node": "20.16.11", + "@types/node": "20.17.1", "@types/node-ipc": "9.2.3", "typescript": "4.7.4" }, diff --git a/package-lock.json b/package-lock.json index a92dd243112..be4bdd07f69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -110,7 +110,7 @@ "@types/koa-json": "2.0.23", "@types/lowdb": "1.0.15", "@types/lunr": "2.3.7", - "@types/node": "20.16.11", + "@types/node": "20.17.1", "@types/node-fetch": "2.6.4", "@types/node-forge": "1.3.11", "@types/node-ipc": "9.2.3", @@ -9642,9 +9642,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.16.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", - "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", + "version": "20.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.1.tgz", + "integrity": "sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 77cf21e2bae..a27397e61c6 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@types/koa-json": "2.0.23", "@types/lowdb": "1.0.15", "@types/lunr": "2.3.7", - "@types/node": "20.16.11", + "@types/node": "20.17.1", "@types/node-fetch": "2.6.4", "@types/node-forge": "1.3.11", "@types/node-ipc": "9.2.3", From 2a956744bdb8057fb33c2b8fae6db277e0bc18a7 Mon Sep 17 00:00:00 2001 From: Brandon Treston Date: Mon, 28 Oct 2024 11:24:14 -0400 Subject: [PATCH 06/39] [PM-13645] Fix invite counter to check remaining number of seats in plan (#11577) * Fix invite counter to check remaining number of seats in plan * Remove redundant async pipe subscriptions --- .../member-dialog/member-dialog.component.html | 11 ++++++----- .../member-dialog/member-dialog.component.ts | 5 +++++ apps/web/src/locales/en/messages.json | 3 +++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.html b/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.html index 2c5daf93c6f..a8ecf255f33 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.html +++ b/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.html @@ -23,14 +23,15 @@

{{ "inviteUserDesc" | i18n }}

- + {{ "email" | i18n }} - {{ - "inviteMultipleEmailDesc" - | i18n - : (organization.productTierType === ProductTierType.TeamsStarter ? "10" : "20") + {{ + "inviteMultipleEmailDesc" | i18n: remainingSeats }} + + {{ "inviteSingleEmailDesc" | i18n: remainingSeats }} +
diff --git a/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts b/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts index 8df40e35fef..4a95c9cb9cb 100644 --- a/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts +++ b/apps/web/src/app/admin-console/organizations/members/components/member-dialog/member-dialog.component.ts @@ -89,6 +89,7 @@ export class MemberDialogComponent implements OnDestroy { PermissionMode = PermissionMode; showNoMasterPasswordWarning = false; isOnSecretsManagerStandalone: boolean; + remainingSeats$: Observable; protected organization$: Observable; protected collectionAccessItems: AccessItemView[] = []; @@ -250,6 +251,10 @@ export class MemberDialogComponent implements OnDestroy { this.loading = false; }); + + this.remainingSeats$ = this.organization$.pipe( + map((organization) => organization.seats - this.params.numConfirmedMembers), + ); } private setFormValidators(organization: Organization) { diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 9ea33149de8..dc1722bc7a8 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -3214,6 +3214,9 @@ } } }, + "inviteSingleEmailDesc": { + "message": "You have 1 invite remaining." + }, "userUsingTwoStep": { "message": "This user is using two-step login to protect their account." }, From f86bc9bf28af22dc39123316f4aa8921d90498b3 Mon Sep 17 00:00:00 2001 From: Brandon Treston Date: Mon, 28 Oct 2024 11:58:16 -0400 Subject: [PATCH 07/39] [PM-13651] migrate verify recover delete provider component (#11586) * Refactor VerifyRevocerDeleteProvider component to use component library * Remove components form loose-components.module * Refactor submit function definition into expression * Move module out of oss, implement AnonLayoutComponentWrapper route * Add type to button * Remove try/catch with error logging * remove logger service, remove formPromise field --- ...ify-recover-delete-provider.component.html | 34 ------------------- apps/web/src/app/oss-routing.module.ts | 7 ---- .../src/app/shared/loose-components.module.ts | 6 ---- .../providers/providers-routing.module.ts | 2 +- .../providers/providers.component.html | 0 .../providers/providers.component.ts | 0 .../providers/providers.module.ts | 4 +++ ...ify-recover-delete-provider.component.html | 15 ++++++++ ...erify-recover-delete-provider.component.ts | 33 ++++++------------ .../bit-web/src/app/app-routing.module.ts | 16 +++++++++ 10 files changed, 46 insertions(+), 71 deletions(-) delete mode 100644 apps/web/src/app/admin-console/providers/verify-recover-delete-provider.component.html rename {apps/web => bitwarden_license/bit-web}/src/app/admin-console/providers/providers.component.html (100%) rename {apps/web => bitwarden_license/bit-web}/src/app/admin-console/providers/providers.component.ts (100%) create mode 100644 bitwarden_license/bit-web/src/app/admin-console/providers/verify-recover-delete-provider.component.html rename {apps/web => bitwarden_license/bit-web}/src/app/admin-console/providers/verify-recover-delete-provider.component.ts (63%) diff --git a/apps/web/src/app/admin-console/providers/verify-recover-delete-provider.component.html b/apps/web/src/app/admin-console/providers/verify-recover-delete-provider.component.html deleted file mode 100644 index a287a537a4d..00000000000 --- a/apps/web/src/app/admin-console/providers/verify-recover-delete-provider.component.html +++ /dev/null @@ -1,34 +0,0 @@ -
-
-
-

{{ "deleteProvider" | i18n }}

-
-
- {{ "deleteProviderWarning" | i18n }} -

- {{ name }} -

-

{{ "deleteProviderRecoverConfirmDesc" | i18n }}

-
-
- - - {{ "cancel" | i18n }} - -
-
-
-
-
-
diff --git a/apps/web/src/app/oss-routing.module.ts b/apps/web/src/app/oss-routing.module.ts index b3a8db20028..71d26030b03 100644 --- a/apps/web/src/app/oss-routing.module.ts +++ b/apps/web/src/app/oss-routing.module.ts @@ -40,7 +40,6 @@ import { flagEnabled, Flags } from "../utils/flags"; import { VerifyRecoverDeleteOrgComponent } from "./admin-console/organizations/manage/verify-recover-delete-org.component"; import { AcceptFamilySponsorshipComponent } from "./admin-console/organizations/sponsorships/accept-family-sponsorship.component"; import { FamiliesForEnterpriseSetupComponent } from "./admin-console/organizations/sponsorships/families-for-enterprise-setup.component"; -import { VerifyRecoverDeleteProviderComponent } from "./admin-console/providers/verify-recover-delete-provider.component"; import { CreateOrganizationComponent } from "./admin-console/settings/create-organization.component"; import { deepLinkGuard } from "./auth/guards/deep-link.guard"; import { HintComponent } from "./auth/hint.component"; @@ -156,12 +155,6 @@ const routes: Routes = [ canActivate: [unauthGuardFn()], data: { titleId: "deleteOrganization" }, }, - { - path: "verify-recover-delete-provider", - component: VerifyRecoverDeleteProviderComponent, - canActivate: [unauthGuardFn()], - data: { titleId: "deleteAccount" } satisfies RouteDataProperties, - }, { path: "update-temp-password", component: UpdateTempPasswordComponent, diff --git a/apps/web/src/app/shared/loose-components.module.ts b/apps/web/src/app/shared/loose-components.module.ts index 638a523cd4f..a238f2110ce 100644 --- a/apps/web/src/app/shared/loose-components.module.ts +++ b/apps/web/src/app/shared/loose-components.module.ts @@ -17,8 +17,6 @@ import { InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent import { ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent } from "../admin-console/organizations/tools/reused-passwords-report.component"; import { UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent } from "../admin-console/organizations/tools/unsecured-websites-report.component"; import { WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent } from "../admin-console/organizations/tools/weak-passwords-report.component"; -import { ProvidersComponent } from "../admin-console/providers/providers.component"; -import { VerifyRecoverDeleteProviderComponent } from "../admin-console/providers/verify-recover-delete-provider.component"; import { HintComponent } from "../auth/hint.component"; import { RecoverDeleteComponent } from "../auth/recover-delete.component"; import { RecoverTwoFactorComponent } from "../auth/recover-two-factor.component"; @@ -149,7 +147,6 @@ import { SharedModule } from "./shared.module"; PremiumBadgeComponent, ProfileComponent, ChangeAvatarDialogComponent, - ProvidersComponent, PurgeVaultComponent, RecoverDeleteComponent, RecoverTwoFactorComponent, @@ -176,7 +173,6 @@ import { SharedModule } from "./shared.module"; UpdateTempPasswordComponent, VerifyEmailTokenComponent, VerifyRecoverDeleteComponent, - VerifyRecoverDeleteProviderComponent, ], exports: [ UserVerificationModule, @@ -218,7 +214,6 @@ import { SharedModule } from "./shared.module"; PremiumBadgeComponent, ProfileComponent, ChangeAvatarDialogComponent, - ProvidersComponent, PurgeVaultComponent, RecoverDeleteComponent, RecoverTwoFactorComponent, @@ -246,7 +241,6 @@ import { SharedModule } from "./shared.module"; UserLayoutComponent, VerifyEmailTokenComponent, VerifyRecoverDeleteComponent, - VerifyRecoverDeleteProviderComponent, HeaderModule, DangerZoneComponent, ], diff --git a/bitwarden_license/bit-web/src/app/admin-console/providers/providers-routing.module.ts b/bitwarden_license/bit-web/src/app/admin-console/providers/providers-routing.module.ts index 55c22ec4cea..00c944e69bb 100644 --- a/bitwarden_license/bit-web/src/app/admin-console/providers/providers-routing.module.ts +++ b/bitwarden_license/bit-web/src/app/admin-console/providers/providers-routing.module.ts @@ -4,7 +4,6 @@ import { RouterModule, Routes } from "@angular/router"; import { authGuard } from "@bitwarden/angular/auth/guards"; import { AnonLayoutWrapperComponent } from "@bitwarden/auth/angular"; import { Provider } from "@bitwarden/common/admin-console/models/domain/provider"; -import { ProvidersComponent } from "@bitwarden/web-vault/app/admin-console/providers/providers.component"; import { FrontendLayoutComponent } from "@bitwarden/web-vault/app/layouts/frontend-layout.component"; import { UserLayoutComponent } from "@bitwarden/web-vault/app/layouts/user-layout.component"; @@ -22,6 +21,7 @@ import { AcceptProviderComponent } from "./manage/accept-provider.component"; import { EventsComponent } from "./manage/events.component"; import { MembersComponent } from "./manage/members.component"; import { ProvidersLayoutComponent } from "./providers-layout.component"; +import { ProvidersComponent } from "./providers.component"; import { AccountComponent } from "./settings/account.component"; import { SetupProviderComponent } from "./setup/setup-provider.component"; import { SetupComponent } from "./setup/setup.component"; diff --git a/apps/web/src/app/admin-console/providers/providers.component.html b/bitwarden_license/bit-web/src/app/admin-console/providers/providers.component.html similarity index 100% rename from apps/web/src/app/admin-console/providers/providers.component.html rename to bitwarden_license/bit-web/src/app/admin-console/providers/providers.component.html diff --git a/apps/web/src/app/admin-console/providers/providers.component.ts b/bitwarden_license/bit-web/src/app/admin-console/providers/providers.component.ts similarity index 100% rename from apps/web/src/app/admin-console/providers/providers.component.ts rename to bitwarden_license/bit-web/src/app/admin-console/providers/providers.component.ts diff --git a/bitwarden_license/bit-web/src/app/admin-console/providers/providers.module.ts b/bitwarden_license/bit-web/src/app/admin-console/providers/providers.module.ts index b6c7125c48c..80108e66eda 100644 --- a/bitwarden_license/bit-web/src/app/admin-console/providers/providers.module.ts +++ b/bitwarden_license/bit-web/src/app/admin-console/providers/providers.module.ts @@ -32,10 +32,12 @@ import { MembersComponent } from "./manage/members.component"; import { UserAddEditComponent } from "./manage/user-add-edit.component"; import { ProvidersLayoutComponent } from "./providers-layout.component"; import { ProvidersRoutingModule } from "./providers-routing.module"; +import { ProvidersComponent } from "./providers.component"; import { WebProviderService } from "./services/web-provider.service"; import { AccountComponent } from "./settings/account.component"; import { SetupProviderComponent } from "./setup/setup-provider.component"; import { SetupComponent } from "./setup/setup.component"; +import { VerifyRecoverDeleteProviderComponent } from "./verify-recover-delete-provider.component"; @NgModule({ imports: [ @@ -73,6 +75,8 @@ import { SetupComponent } from "./setup/setup.component"; ProviderBillingHistoryComponent, ProviderSubscriptionComponent, ProviderSubscriptionStatusComponent, + ProvidersComponent, + VerifyRecoverDeleteProviderComponent, ], providers: [WebProviderService], }) diff --git a/bitwarden_license/bit-web/src/app/admin-console/providers/verify-recover-delete-provider.component.html b/bitwarden_license/bit-web/src/app/admin-console/providers/verify-recover-delete-provider.component.html new file mode 100644 index 00000000000..116e1660d7a --- /dev/null +++ b/bitwarden_license/bit-web/src/app/admin-console/providers/verify-recover-delete-provider.component.html @@ -0,0 +1,15 @@ +

{{ "deleteProvider" | i18n }}

+{{ "deleteProviderWarning" | i18n }} +

+ {{ name }} +

+

{{ "deleteProviderRecoverConfirmDesc" | i18n }}

+
+
+ + + {{ "cancel" | i18n }} + +
diff --git a/apps/web/src/app/admin-console/providers/verify-recover-delete-provider.component.ts b/bitwarden_license/bit-web/src/app/admin-console/providers/verify-recover-delete-provider.component.ts similarity index 63% rename from apps/web/src/app/admin-console/providers/verify-recover-delete-provider.component.ts rename to bitwarden_license/bit-web/src/app/admin-console/providers/verify-recover-delete-provider.component.ts index dc6fa099610..a4461b3e11a 100644 --- a/apps/web/src/app/admin-console/providers/verify-recover-delete-provider.component.ts +++ b/bitwarden_license/bit-web/src/app/admin-console/providers/verify-recover-delete-provider.component.ts @@ -5,8 +5,6 @@ import { firstValueFrom } from "rxjs"; import { ProviderApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/provider/provider-api.service.abstraction"; import { ProviderVerifyRecoverDeleteRequest } from "@bitwarden/common/admin-console/models/request/provider/provider-verify-recover-delete.request"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; -import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { ToastService } from "@bitwarden/components"; @Component({ @@ -16,7 +14,6 @@ import { ToastService } from "@bitwarden/components"; // eslint-disable-next-line rxjs-angular/prefer-takeuntil export class VerifyRecoverDeleteProviderComponent implements OnInit { name: string; - formPromise: Promise; private providerId: string; private token: string; @@ -24,10 +21,8 @@ export class VerifyRecoverDeleteProviderComponent implements OnInit { constructor( private router: Router, private providerApiService: ProviderApiServiceAbstraction, - private platformUtilsService: PlatformUtilsService, private i18nService: I18nService, private route: ActivatedRoute, - private logService: LogService, private toastService: ToastService, ) {} @@ -42,22 +37,14 @@ export class VerifyRecoverDeleteProviderComponent implements OnInit { } } - async submit() { - try { - const request = new ProviderVerifyRecoverDeleteRequest(this.token); - this.formPromise = this.providerApiService.providerRecoverDeleteToken( - this.providerId, - request, - ); - await this.formPromise; - this.toastService.showToast({ - variant: "success", - title: this.i18nService.t("providerDeleted"), - message: this.i18nService.t("providerDeletedDesc"), - }); - await this.router.navigate(["/"]); - } catch (e) { - this.logService.error(e); - } - } + submit = async () => { + const request = new ProviderVerifyRecoverDeleteRequest(this.token); + await this.providerApiService.providerRecoverDeleteToken(this.providerId, request); + this.toastService.showToast({ + variant: "success", + title: this.i18nService.t("providerDeleted"), + message: this.i18nService.t("providerDeletedDesc"), + }); + await this.router.navigate(["/"]); + }; } diff --git a/bitwarden_license/bit-web/src/app/app-routing.module.ts b/bitwarden_license/bit-web/src/app/app-routing.module.ts index f3f3c158708..6aed12511c1 100644 --- a/bitwarden_license/bit-web/src/app/app-routing.module.ts +++ b/bitwarden_license/bit-web/src/app/app-routing.module.ts @@ -1,9 +1,13 @@ import { NgModule } from "@angular/core"; import { RouterModule, Routes } from "@angular/router"; +import { unauthGuardFn } from "@bitwarden/angular/auth/guards"; +import { AnonLayoutWrapperComponent } from "@bitwarden/auth/angular"; import { deepLinkGuard } from "@bitwarden/web-vault/app/auth/guards/deep-link.guard"; +import { RouteDataProperties } from "@bitwarden/web-vault/app/core"; import { ProvidersModule } from "./admin-console/providers/providers.module"; +import { VerifyRecoverDeleteProviderComponent } from "./admin-console/providers/verify-recover-delete-provider.component"; const routes: Routes = [ { @@ -17,6 +21,18 @@ const routes: Routes = [ loadChildren: async () => (await import("./secrets-manager/secrets-manager.module")).SecretsManagerModule, }, + { + path: "verify-recover-delete-provider", + component: AnonLayoutWrapperComponent, + canActivate: [unauthGuardFn()], + children: [ + { + path: "", + component: VerifyRecoverDeleteProviderComponent, + data: { titleId: "deleteAccount" } satisfies RouteDataProperties, + }, + ], + }, ]; @NgModule({ From 53f13f4ea549fca217b8716ca00b691e94320071 Mon Sep 17 00:00:00 2001 From: Jared McCannon Date: Mon, 28 Oct 2024 11:00:39 -0500 Subject: [PATCH 08/39] [PM-10314] Update Warnings for Verifying Domains and Single Org Policy Auto Enable (#11688) * Updated description and warning for single org policy. * Added check for verified domains in disabling single org. --- .../policies/policy-edit.component.html | 2 +- .../policies/policy-edit.component.ts | 3 ++ .../policies/single-org.component.html | 9 +++- .../policies/single-org.component.ts | 31 ++++++++++++- apps/web/src/locales/en/messages.json | 12 ++++++ .../domain-verification.component.ts | 43 +++++++++++++++++-- .../models/response/policy.response.ts | 2 + 7 files changed, 93 insertions(+), 9 deletions(-) diff --git a/apps/web/src/app/admin-console/organizations/policies/policy-edit.component.html b/apps/web/src/app/admin-console/organizations/policies/policy-edit.component.html index 20f62c1be0b..f656d488e06 100644 --- a/apps/web/src/app/admin-console/organizations/policies/policy-edit.component.html +++ b/apps/web/src/app/admin-console/organizations/policies/policy-edit.component.html @@ -15,7 +15,7 @@ - + + + From d50e8bbf4c73342364f6b89a7c86ba28fb8f3bab Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Tue, 29 Oct 2024 19:46:09 +0100 Subject: [PATCH 26/39] Add linux .desktop file (#11774) --- apps/desktop/resources/com.bitwarden.desktop.desktop | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 apps/desktop/resources/com.bitwarden.desktop.desktop diff --git a/apps/desktop/resources/com.bitwarden.desktop.desktop b/apps/desktop/resources/com.bitwarden.desktop.desktop new file mode 100644 index 00000000000..d61387f3e82 --- /dev/null +++ b/apps/desktop/resources/com.bitwarden.desktop.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Bitwarden +Exec=bitwarden %u +Terminal=false +Type=Application +Icon=com.bitwarden.desktop +StartupWMClass=Bitwarden +GenericName=Password Manager +Comment=A secure and free password manager for all of your devices. +MimeType=x-scheme-handler/bitwarden; +Categories=System;Security; From 896d19551af906a7af367cd772fcd7c639939292 Mon Sep 17 00:00:00 2001 From: Cesar Gonzalez Date: Tue, 29 Oct 2024 16:55:40 -0500 Subject: [PATCH 27/39] [PM-14054] Fixing scroll-based repositioning of inline menu when inline menu is focused (#11770) --- .../src/autofill/content/bootstrap-autofill-overlay-menu.ts | 1 + .../src/autofill/content/bootstrap-autofill-overlay.ts | 1 + .../services/autofill-overlay-content.service.spec.ts | 6 +++++- .../autofill/services/autofill-overlay-content.service.ts | 5 ++++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/browser/src/autofill/content/bootstrap-autofill-overlay-menu.ts b/apps/browser/src/autofill/content/bootstrap-autofill-overlay-menu.ts index 35930647921..cd22e1e5353 100644 --- a/apps/browser/src/autofill/content/bootstrap-autofill-overlay-menu.ts +++ b/apps/browser/src/autofill/content/bootstrap-autofill-overlay-menu.ts @@ -21,6 +21,7 @@ import AutofillInit from "./autofill-init"; domQueryService, domElementVisibilityService, inlineMenuFieldQualificationService, + inlineMenuContentService, ); windowContext.bitwardenAutofillInit = new AutofillInit( diff --git a/apps/browser/src/autofill/content/bootstrap-autofill-overlay.ts b/apps/browser/src/autofill/content/bootstrap-autofill-overlay.ts index 174a695b769..11c8e4afd66 100644 --- a/apps/browser/src/autofill/content/bootstrap-autofill-overlay.ts +++ b/apps/browser/src/autofill/content/bootstrap-autofill-overlay.ts @@ -24,6 +24,7 @@ import AutofillInit from "./autofill-init"; domQueryService, domElementVisibilityService, inlineMenuFieldQualificationService, + inlineMenuContentService, ); windowContext.bitwardenAutofillInit = new AutofillInit( diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts index 91ad63955c7..49a0b3ca844 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts @@ -1,4 +1,4 @@ -import { mock } from "jest-mock-extended"; +import { mock, MockProxy } from "jest-mock-extended"; import { EVENTS } from "@bitwarden/common/autofill/constants"; import { CipherType } from "@bitwarden/common/vault/enums"; @@ -13,6 +13,7 @@ import { import AutofillField from "../models/autofill-field"; import AutofillForm from "../models/autofill-form"; import AutofillPageDetails from "../models/autofill-page-details"; +import { AutofillInlineMenuContentService } from "../overlay/inline-menu/abstractions/autofill-inline-menu-content.service"; import { createAutofillFieldMock } from "../spec/autofill-mocks"; import { flushPromises, @@ -35,6 +36,7 @@ describe("AutofillOverlayContentService", () => { let domElementVisibilityService: DomElementVisibilityService; let autofillInit: AutofillInit; let inlineMenuFieldQualificationService: InlineMenuFieldQualificationService; + let inlineMenuContentService: MockProxy; let autofillOverlayContentService: AutofillOverlayContentService; let sendExtensionMessageSpy: jest.SpyInstance; const sendResponseSpy = jest.fn(); @@ -44,10 +46,12 @@ describe("AutofillOverlayContentService", () => { inlineMenuFieldQualificationService = new InlineMenuFieldQualificationService(); domQueryService = new DomQueryService(); domElementVisibilityService = new DomElementVisibilityService(); + inlineMenuContentService = mock(); autofillOverlayContentService = new AutofillOverlayContentService( domQueryService, domElementVisibilityService, inlineMenuFieldQualificationService, + inlineMenuContentService, ); autofillInit = new AutofillInit( domQueryService, diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts index 645795d9f27..ea3c5784949 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts @@ -28,6 +28,7 @@ import { } from "../enums/autofill-overlay.enum"; import AutofillField from "../models/autofill-field"; import AutofillPageDetails from "../models/autofill-page-details"; +import { AutofillInlineMenuContentService } from "../overlay/inline-menu/abstractions/autofill-inline-menu-content.service"; import { ElementWithOpId, FillableFormFieldElement, FormFieldElement } from "../types"; import { currentlyInSandboxedIframe, @@ -155,6 +156,7 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ private domQueryService: DomQueryService, private domElementVisibilityService: DomElementVisibilityService, private inlineMenuFieldQualificationService: InlineMenuFieldQualificationService, + private inlineMenuContentService?: AutofillInlineMenuContentService, ) {} /** @@ -1580,7 +1582,8 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ if (activeElement) { return ( activeElement === this.mostRecentlyFocusedField || - activeElement.contains(this.mostRecentlyFocusedField) + activeElement.contains(this.mostRecentlyFocusedField) || + this.inlineMenuContentService?.isElementInlineMenu(activeElement as HTMLElement) ); } From e1863e6c5c015c570cb13a10aa601689058f3bc4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:41:24 +0100 Subject: [PATCH 28/39] [deps] Platform: Update Rust crate futures to v0.3.31 (#11531) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- apps/desktop/desktop_native/Cargo.lock | 4 ++-- apps/desktop/desktop_native/core/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/desktop/desktop_native/Cargo.lock b/apps/desktop/desktop_native/Cargo.lock index 13023ed5c3c..a730ee36f87 100644 --- a/apps/desktop/desktop_native/Cargo.lock +++ b/apps/desktop/desktop_native/Cargo.lock @@ -710,9 +710,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", diff --git a/apps/desktop/desktop_native/core/Cargo.toml b/apps/desktop/desktop_native/core/Cargo.toml index 3180604918e..7df096d2494 100644 --- a/apps/desktop/desktop_native/core/Cargo.toml +++ b/apps/desktop/desktop_native/core/Cargo.toml @@ -30,7 +30,7 @@ arboard = { version = "=3.4.1", default-features = false, features = [ base64 = "=0.22.1" cbc = { version = "=0.1.2", features = ["alloc"] } dirs = "=5.0.1" -futures = "=0.3.30" +futures = "=0.3.31" interprocess = { version = "=2.2.1", features = ["tokio"] } libc = "=0.2.159" log = "=0.4.22" From 85fa0f6f36ac52a35c08ab0bc95a2a45bc1105e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:45:48 +0100 Subject: [PATCH 29/39] [deps] Platform: Update @types/jquery to v3.5.32 (#11315) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ccf6ea3d2a9..d375daa4e81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "@types/firefox-webext-browser": "120.0.4", "@types/inquirer": "8.2.10", "@types/jest": "29.5.12", - "@types/jquery": "3.5.30", + "@types/jquery": "3.5.32", "@types/jsdom": "21.1.7", "@types/koa": "2.15.0", "@types/koa__multer": "2.0.7", @@ -9467,9 +9467,9 @@ "license": "MIT" }, "node_modules/@types/jquery": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz", - "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.32.tgz", + "integrity": "sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index bf83d37b048..80bb9661f19 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@types/firefox-webext-browser": "120.0.4", "@types/inquirer": "8.2.10", "@types/jest": "29.5.12", - "@types/jquery": "3.5.30", + "@types/jquery": "3.5.32", "@types/jsdom": "21.1.7", "@types/koa": "2.15.0", "@types/koa__multer": "2.0.7", From 7ce26f7aea6ec5d6a9e36b97115b43785d1d6221 Mon Sep 17 00:00:00 2001 From: Andreas Coroiu Date: Wed, 30 Oct 2024 14:00:08 +0100 Subject: [PATCH 30/39] Group macOS bindings (#11785) * fix: group `security-framework` and `security-framework-sys` dependency in renovate * reactor: rename to macOS/iOS bindings --- .github/renovate.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/renovate.json b/.github/renovate.json index 562622807c2..b044212e58a 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -35,6 +35,10 @@ "matchPackageNames": ["@types/jest", "jest", "ts-jest", "jest-preset-angular"], "matchUpdateTypes": "major" }, + { + "groupName": "macOS/iOS bindings", + "matchPackageNames": ["core-foundation", "security-framework", "security-framework-sys"] + }, { "matchPackageNames": [ "@ngtools/webpack", From 8af0b6e3802f331e23d6fa3278a2cfef2ffb3687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=A8=20Audrey=20=E2=9C=A8?= Date: Wed, 30 Oct 2024 09:43:18 -0400 Subject: [PATCH 31/39] [PM-14190] Replace history card with item component (#11775) --- ...redential-generator-history.component.html | 43 +++++++++---------- .../credential-generator-history.component.ts | 21 +++++++-- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/libs/tools/generator/components/src/credential-generator-history.component.html b/libs/tools/generator/components/src/credential-generator-history.component.html index c42d6a12729..05199763a15 100644 --- a/libs/tools/generator/components/src/credential-generator-history.component.html +++ b/libs/tools/generator/components/src/credential-generator-history.component.html @@ -1,23 +1,22 @@ - -
-
- - {{ - credential.generationDate | date: "medium" - }} + + + +
+ {{ credential.generationDate | date: "medium" }}
- -
- + + + + + + + diff --git a/libs/tools/generator/components/src/credential-generator-history.component.ts b/libs/tools/generator/components/src/credential-generator-history.component.ts index bcedd91babf..ddac750a60a 100644 --- a/libs/tools/generator/components/src/credential-generator-history.component.ts +++ b/libs/tools/generator/components/src/credential-generator-history.component.ts @@ -8,15 +8,18 @@ import { JslibModule } from "@bitwarden/angular/jslib.module"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { UserId } from "@bitwarden/common/types/guid"; import { - CardComponent, ColorPasswordModule, IconButtonModule, + ItemModule, NoItemsModule, SectionComponent, SectionHeaderComponent, } from "@bitwarden/components"; +import { CredentialGeneratorService } from "@bitwarden/generator-core"; import { GeneratedCredential, GeneratorHistoryService } from "@bitwarden/generator-history"; +import { GeneratorModule } from "./generator.module"; + @Component({ standalone: true, selector: "bit-credential-generator-history", @@ -28,9 +31,10 @@ import { GeneratedCredential, GeneratorHistoryService } from "@bitwarden/generat NoItemsModule, JslibModule, RouterLink, - CardComponent, + ItemModule, SectionComponent, SectionHeaderComponent, + GeneratorModule, ], }) export class CredentialGeneratorHistoryComponent { @@ -39,6 +43,7 @@ export class CredentialGeneratorHistoryComponent { constructor( private accountService: AccountService, + private generatorService: CredentialGeneratorService, private history: GeneratorHistoryService, ) { this.accountService.activeAccount$ @@ -53,8 +58,18 @@ export class CredentialGeneratorHistoryComponent { .pipe( takeUntilDestroyed(), switchMap((id) => id && this.history.credentials$(id)), - map((credentials) => credentials), + map((credentials) => credentials.filter((c) => (c.credential ?? "") !== "")), ) .subscribe(this.credentials$); } + + protected getCopyText(credential: GeneratedCredential) { + const info = this.generatorService.algorithm(credential.category); + return info.copy; + } + + protected getGeneratedValueText(credential: GeneratedCredential) { + const info = this.generatorService.algorithm(credential.category); + return info.generatedValue; + } } From dd6def2f5201b621ed1cabfe6b397bc96ee0caa6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:29:15 -0400 Subject: [PATCH 32/39] [deps] DevOps: Update gh minor (#11730) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/auto-branch-updater.yml | 2 +- .github/workflows/build-browser.yml | 14 +++--- .github/workflows/build-cli.yml | 12 ++--- .github/workflows/build-desktop.yml | 58 +++++++++++----------- .github/workflows/build-web.yml | 10 ++-- .github/workflows/chromatic.yml | 8 +-- .github/workflows/crowdin-pull.yml | 2 +- .github/workflows/lint.yml | 4 +- .github/workflows/locales-lint.yml | 4 +- .github/workflows/publish-cli.yml | 6 +-- .github/workflows/publish-desktop.yml | 4 +- .github/workflows/publish-web.yml | 4 +- .github/workflows/release-browser.yml | 4 +- .github/workflows/release-cli.yml | 2 +- .github/workflows/release-desktop-beta.yml | 36 +++++++------- .github/workflows/release-desktop.yml | 2 +- .github/workflows/release-web.yml | 2 +- .github/workflows/scan.yml | 6 +-- .github/workflows/test.yml | 6 +-- .github/workflows/version-bump.yml | 6 +-- 20 files changed, 96 insertions(+), 96 deletions(-) diff --git a/.github/workflows/auto-branch-updater.yml b/.github/workflows/auto-branch-updater.yml index 97f020fde7b..dc4a43fc34e 100644 --- a/.github/workflows/auto-branch-updater.yml +++ b/.github/workflows/auto-branch-updater.yml @@ -28,7 +28,7 @@ jobs: run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: 'eu-web-${{ steps.setup.outputs.branch }}' fetch-depth: 0 diff --git a/.github/workflows/build-browser.yml b/.github/workflows/build-browser.yml index 20a36dc5b23..d03efae7f4f 100644 --- a/.github/workflows/build-browser.yml +++ b/.github/workflows/build-browser.yml @@ -42,7 +42,7 @@ jobs: node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get Package Version id: gen_vars @@ -72,7 +72,7 @@ jobs: working-directory: apps/browser steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Testing locales - extName length run: | @@ -110,10 +110,10 @@ jobs: _NODE_VERSION: ${{ needs.setup.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -241,10 +241,10 @@ jobs: _NODE_VERSION: ${{ needs.setup.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -354,7 +354,7 @@ jobs: - build-safari steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index f88c4767407..7994e508b3c 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -42,7 +42,7 @@ jobs: node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get Package Version id: retrieve-package-version @@ -83,7 +83,7 @@ jobs: _WIN_PKG_VERSION: 3.5 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Unix Vars run: | @@ -92,7 +92,7 @@ jobs: awk '{print tolower($0)}')" >> $GITHUB_ENV - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -161,7 +161,7 @@ jobs: _WIN_PKG_VERSION: 3.5 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Windows builder run: | @@ -170,7 +170,7 @@ jobs: choco install nasm --no-progress - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -311,7 +311,7 @@ jobs: _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Print environment run: | diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 2c89e0d156f..4667a937113 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Verify run: | @@ -66,7 +66,7 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get Package Version id: retrieve-version @@ -139,10 +139,10 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -168,7 +168,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 id: cache with: path: | @@ -249,10 +249,10 @@ jobs: NODE_OPTIONS: --max_old_space_size=4096 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -298,7 +298,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 id: cache with: path: | @@ -457,10 +457,10 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -483,14 +483,14 @@ jobs: - name: Cache Build id: build-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Cache Safari id: safari-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -583,7 +583,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 id: cache with: path: | @@ -623,10 +623,10 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -649,14 +649,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -749,7 +749,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 id: cache with: path: | @@ -842,10 +842,10 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -868,14 +868,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -975,7 +975,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 id: cache with: path: | @@ -1089,10 +1089,10 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -1110,14 +1110,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -1210,7 +1210,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 id: cache with: path: | @@ -1280,7 +1280,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index ec09f25ac19..31f800d5b37 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -44,7 +44,7 @@ jobs: node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get GitHub sha as version id: version @@ -90,10 +90,10 @@ jobs: steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -156,7 +156,7 @@ jobs: _VERSION: ${{ needs.setup.outputs.version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Check Branch to Publish env: @@ -254,7 +254,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index d6f63d48032..0efd9d22f17 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 @@ -37,13 +37,13 @@ jobs: echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: node-version: ${{ steps.retrieve-node-version.outputs.node_version }} - name: Cache NPM id: npm-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: "~/.npm" key: ${{ runner.os }}-npm-chromatic-${{ hashFiles('**/package-lock.json') }} @@ -56,7 +56,7 @@ jobs: run: npm run build-storybook:ci - name: Publish to Chromatic - uses: chromaui/action@bbbf288765438d5fd2be13e1d80d542a39e74108 # v11.12.1 + uses: chromaui/action@dd2eecb9bef44f54774581f4163b0327fd8cf607 # v11.16.3 with: token: ${{ secrets.GITHUB_TOKEN }} projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml index dfcd3294b01..540da77b554 100644 --- a/.github/workflows/crowdin-pull.yml +++ b/.github/workflows/crowdin-pull.yml @@ -22,7 +22,7 @@ jobs: crowdin_project_id: "308189" steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index db7fef83fb8..561cd9af0c8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Lint filenames (no capital characters) run: | @@ -47,7 +47,7 @@ jobs: echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' diff --git a/.github/workflows/locales-lint.yml b/.github/workflows/locales-lint.yml index ef944526111..8c9447ea50f 100644 --- a/.github/workflows/locales-lint.yml +++ b/.github/workflows/locales-lint.yml @@ -14,9 +14,9 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Checkout base branch repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.base.sha }} path: base diff --git a/.github/workflows/publish-cli.yml b/.github/workflows/publish-cli.yml index c9a4e841ea8..0a561306797 100644 --- a/.github/workflows/publish-cli.yml +++ b/.github/workflows/publish-cli.yml @@ -91,7 +91,7 @@ jobs: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 @@ -128,7 +128,7 @@ jobs: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 @@ -168,7 +168,7 @@ jobs: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 diff --git a/.github/workflows/publish-desktop.yml b/.github/workflows/publish-desktop.yml index c46a7a27601..5ef378ad439 100644 --- a/.github/workflows/publish-desktop.yml +++ b/.github/workflows/publish-desktop.yml @@ -183,7 +183,7 @@ jobs: _RELEASE_TAG: ${{ needs.setup.outputs.tag-name }} steps: - name: Checkout Repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Login to Azure uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 @@ -227,7 +227,7 @@ jobs: _RELEASE_TAG: ${{ needs.setup.outputs.tag-name }} steps: - name: Checkout Repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Print Environment run: | diff --git a/.github/workflows/publish-web.yml b/.github/workflows/publish-web.yml index 7e0e8737344..09f5ddc6318 100644 --- a/.github/workflows/publish-web.yml +++ b/.github/workflows/publish-web.yml @@ -26,7 +26,7 @@ jobs: tag_version: ${{ steps.version.outputs.tag }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Branch check if: ${{ inputs.publish_type != 'Dry Run' }} @@ -66,7 +66,7 @@ jobs: echo "Github Release Option: $_RELEASE_OPTION" - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ########## ACR ########## - name: Login to Azure - PROD Subscription diff --git a/.github/workflows/release-browser.yml b/.github/workflows/release-browser.yml index aed9ab293e8..4c3321c015d 100644 --- a/.github/workflows/release-browser.yml +++ b/.github/workflows/release-browser.yml @@ -26,7 +26,7 @@ jobs: release-version: ${{ steps.version.outputs.version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} @@ -55,7 +55,7 @@ jobs: needs: setup steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Testing locales - extName length run: | diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 8660744f944..05c53f9752d 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -26,7 +26,7 @@ jobs: release-version: ${{ steps.version.outputs.version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Branch check if: ${{ inputs.release_type != 'Dry Run' }} diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml index 7518daf0b16..c1646997201 100644 --- a/.github/workflows/release-desktop-beta.yml +++ b/.github/workflows/release-desktop-beta.yml @@ -23,7 +23,7 @@ jobs: node_version: ${{ steps.retrieve-node-version.outputs.node_version }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Branch check run: | @@ -124,12 +124,12 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -214,12 +214,12 @@ jobs: NODE_OPTIONS: --max_old_space_size=4096 steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -403,12 +403,12 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -426,14 +426,14 @@ jobs: - name: Cache Build id: build-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Cache Safari id: safari-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -537,12 +537,12 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -560,14 +560,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -750,12 +750,12 @@ jobs: working-directory: apps/desktop steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ needs.setup.outputs.branch-name }} - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -773,14 +773,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@3624ceb22c1c5a301c8db4169662070a689d9ea8 # v4.1.1 + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -1010,7 +1010,7 @@ jobs: - release steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup git config run: | diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index b0ddc4b804d..d9394347f60 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -26,7 +26,7 @@ jobs: release-channel: ${{ steps.release-channel.outputs.channel }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index e3462a98fb6..faa398f6d67 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -23,7 +23,7 @@ jobs: tag_version: ${{ steps.version.outputs.tag }} steps: - name: Checkout repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Branch check if: ${{ github.event.inputs.release_type != 'Dry Run' }} diff --git a/.github/workflows/scan.yml b/.github/workflows/scan.yml index 143d049bd63..bf17459c21c 100644 --- a/.github/workflows/scan.yml +++ b/.github/workflows/scan.yml @@ -26,7 +26,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.head.sha }} @@ -46,7 +46,7 @@ jobs: --output-path . ${{ env.INCREMENTAL }} - name: Upload Checkmarx results to GitHub - uses: github/codeql-action/upload-sarif@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: sarif_file: cx_result.sarif @@ -60,7 +60,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4ea08a24373..0c324cb8748 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get Node Version id: retrieve-node-version @@ -50,7 +50,7 @@ jobs: echo "node_version=$NODE_VERSION" >> $GITHUB_OUTPUT - name: Set up Node - uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -120,7 +120,7 @@ jobs: sudo apt-get install -y gnome-keyring dbus-x11 - name: Check out repo - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Build working-directory: ./apps/desktop/desktop_native diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml index 7f6dfef79cf..d0be0373e6b 100644 --- a/.github/workflows/version-bump.yml +++ b/.github/workflows/version-bump.yml @@ -57,7 +57,7 @@ jobs: fi - name: Checkout Branch - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: main @@ -85,7 +85,7 @@ jobs: github-gpg-private-key-passphrase" - name: Import GPG key - uses: crazy-max/ghaction-import-gpg@01dd5d3ca463c7f10f7f4f7b4f177225ac661ee4 # v6.1.0 + uses: crazy-max/ghaction-import-gpg@cb9bde2e2525e640591a934b1fd28eef1dcaf5e5 # v6.2.0 with: gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }} passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }} @@ -532,7 +532,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout Branch - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: main From 912ff886bc73b1b95d76622cc965ef082ef23ba6 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Wed, 30 Oct 2024 17:35:15 +0100 Subject: [PATCH 33/39] [PM-12806] Fix minimum KDF validation (#11786) * Fix minimum KDF validation * Add better error messages * Fix tests * Fix tests --- .../login-strategy.service.spec.ts | 6 +- .../src/auth/models/domain/kdf-config.ts | 26 ++++----- .../auth/services/kdf-config.service.spec.ts | 57 ++----------------- 3 files changed, 22 insertions(+), 67 deletions(-) diff --git a/libs/auth/src/common/services/login-strategies/login-strategy.service.spec.ts b/libs/auth/src/common/services/login-strategies/login-strategy.service.spec.ts index 8647260ce5a..b0d9228f446 100644 --- a/libs/auth/src/common/services/login-strategies/login-strategy.service.spec.ts +++ b/libs/auth/src/common/services/login-strategies/login-strategy.service.spec.ts @@ -295,7 +295,7 @@ describe("LoginStrategyService", () => { new IdentityTokenResponse({ ForcePasswordReset: false, Kdf: KdfType.PBKDF2_SHA256, - KdfIterations: PBKDF2KdfConfig.PRELOGIN_ITERATIONS.min - 1, + KdfIterations: PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN - 1, Key: "KEY", PrivateKey: "PRIVATE_KEY", ResetMasterPassword: false, @@ -309,7 +309,7 @@ describe("LoginStrategyService", () => { apiService.postPrelogin.mockResolvedValue( new PreloginResponse({ Kdf: KdfType.PBKDF2_SHA256, - KdfIterations: PBKDF2KdfConfig.PRELOGIN_ITERATIONS.min - 1, + KdfIterations: PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN - 1, }), ); @@ -321,7 +321,7 @@ describe("LoginStrategyService", () => { }); await expect(sut.logIn(credentials)).rejects.toThrow( - `PBKDF2 iterations must be between ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.min} and ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.max}`, + `PBKDF2 iterations must be at least ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN}, but was ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN - 1}; possible pre-login downgrade attack detected.`, ); }); }); diff --git a/libs/common/src/auth/models/domain/kdf-config.ts b/libs/common/src/auth/models/domain/kdf-config.ts index 908b187e30c..1909aa875e5 100644 --- a/libs/common/src/auth/models/domain/kdf-config.ts +++ b/libs/common/src/auth/models/domain/kdf-config.ts @@ -13,7 +13,7 @@ export type KdfConfig = PBKDF2KdfConfig | Argon2KdfConfig; */ export class PBKDF2KdfConfig { static ITERATIONS = new RangeWithDefault(600_000, 2_000_000, 600_000); - static PRELOGIN_ITERATIONS = new RangeWithDefault(5000, 2_000_000, 600_000); + static PRELOGIN_ITERATIONS_MIN = 5000; kdfType: KdfType.PBKDF2_SHA256 = KdfType.PBKDF2_SHA256; iterations: number; @@ -38,9 +38,9 @@ export class PBKDF2KdfConfig { * A Valid PBKDF2 KDF configuration has KDF iterations between the 5000 and 2_000_000. */ validateKdfConfigForPrelogin(): void { - if (!PBKDF2KdfConfig.PRELOGIN_ITERATIONS.inRange(this.iterations)) { + if (PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN > this.iterations) { throw new Error( - `PBKDF2 iterations must be between ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.min} and ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.max}`, + `PBKDF2 iterations must be at least ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN}, but was ${this.iterations}; possible pre-login downgrade attack detected.`, ); } } @@ -58,9 +58,9 @@ export class Argon2KdfConfig { static PARALLELISM = new RangeWithDefault(1, 16, 4); static ITERATIONS = new RangeWithDefault(2, 10, 3); - static PRELOGIN_MEMORY = Argon2KdfConfig.MEMORY; - static PRELOGIN_PARALLELISM = Argon2KdfConfig.PARALLELISM; - static PRELOGIN_ITERATIONS = Argon2KdfConfig.ITERATIONS; + static PRELOGIN_MEMORY_MIN = 16; + static PRELOGIN_PARALLELISM_MIN = 1; + static PRELOGIN_ITERATIONS_MIN = 2; kdfType: KdfType.Argon2id = KdfType.Argon2id; iterations: number; @@ -86,7 +86,7 @@ export class Argon2KdfConfig { if (!Argon2KdfConfig.MEMORY.inRange(this.memory)) { throw new Error( - `Argon2 memory must be between ${Argon2KdfConfig.MEMORY.min}mb and ${Argon2KdfConfig.MEMORY.max}mb`, + `Argon2 memory must be between ${Argon2KdfConfig.MEMORY.min} MiB and ${Argon2KdfConfig.MEMORY.max} MiB`, ); } @@ -101,21 +101,21 @@ export class Argon2KdfConfig { * Validates the Argon2 KDF configuration for pre-login. */ validateKdfConfigForPrelogin(): void { - if (!Argon2KdfConfig.PRELOGIN_ITERATIONS.inRange(this.iterations)) { + if (Argon2KdfConfig.PRELOGIN_ITERATIONS_MIN > this.iterations) { throw new Error( - `Argon2 iterations must be between ${Argon2KdfConfig.PRELOGIN_ITERATIONS.min} and ${Argon2KdfConfig.PRELOGIN_ITERATIONS.max}`, + `Argon2 iterations must be at least ${Argon2KdfConfig.PRELOGIN_ITERATIONS_MIN}, but was ${this.iterations}; possible pre-login downgrade attack detected.`, ); } - if (!Argon2KdfConfig.PRELOGIN_MEMORY.inRange(this.memory)) { + if (Argon2KdfConfig.PRELOGIN_MEMORY_MIN > this.memory) { throw new Error( - `Argon2 memory must be between ${Argon2KdfConfig.PRELOGIN_MEMORY.min}mb and ${Argon2KdfConfig.PRELOGIN_MEMORY.max}mb`, + `Argon2 memory must be at least ${Argon2KdfConfig.PRELOGIN_MEMORY_MIN} MiB, but was ${this.memory} MiB; possible pre-login downgrade attack detected.`, ); } - if (!Argon2KdfConfig.PRELOGIN_PARALLELISM.inRange(this.parallelism)) { + if (Argon2KdfConfig.PRELOGIN_PARALLELISM_MIN > this.parallelism) { throw new Error( - `Argon2 parallelism must be between ${Argon2KdfConfig.PRELOGIN_PARALLELISM.min} and ${Argon2KdfConfig.PRELOGIN_PARALLELISM.max}.`, + `Argon2 parallelism must be at least ${Argon2KdfConfig.PRELOGIN_PARALLELISM_MIN}, but was ${this.parallelism}; possible pre-login downgrade attack detected.`, ); } } diff --git a/libs/common/src/auth/services/kdf-config.service.spec.ts b/libs/common/src/auth/services/kdf-config.service.spec.ts index 968b0cbd8ff..7f3613294e7 100644 --- a/libs/common/src/auth/services/kdf-config.service.spec.ts +++ b/libs/common/src/auth/services/kdf-config.service.spec.ts @@ -82,13 +82,6 @@ describe("KdfConfigService", () => { ); }); - it("validateKdfConfigForSetting(): should throw an error for invalid Argon2 memory", () => { - const kdfConfig: Argon2KdfConfig = new Argon2KdfConfig(3, 1025, 4); - expect(() => kdfConfig.validateKdfConfigForSetting()).toThrow( - `Argon2 memory must be between ${Argon2KdfConfig.MEMORY.min}mb and ${Argon2KdfConfig.MEMORY.max}mb`, - ); - }); - it("validateKdfConfigForSetting(): should throw an error for invalid Argon2 parallelism", () => { const kdfConfig: Argon2KdfConfig = new Argon2KdfConfig(3, 64, 17); expect(() => kdfConfig.validateKdfConfigForSetting()).toThrow( @@ -108,70 +101,32 @@ describe("KdfConfigService", () => { it("validateKdfConfigForPrelogin(): should throw an error for too low PBKDF2 iterations", () => { const kdfConfig: PBKDF2KdfConfig = new PBKDF2KdfConfig( - PBKDF2KdfConfig.PRELOGIN_ITERATIONS.min - 1, + PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN - 1, ); expect(() => kdfConfig.validateKdfConfigForPrelogin()).toThrow( - `PBKDF2 iterations must be between ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.min} and ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.max}`, - ); - }); - - it("validateKdfConfigForPrelogin(): should throw an error for too high PBKDF2 iterations", () => { - const kdfConfig: PBKDF2KdfConfig = new PBKDF2KdfConfig( - PBKDF2KdfConfig.PRELOGIN_ITERATIONS.max + 1, - ); - expect(() => kdfConfig.validateKdfConfigForPrelogin()).toThrow( - `PBKDF2 iterations must be between ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.min} and ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS.max}`, + `PBKDF2 iterations must be at least ${PBKDF2KdfConfig.PRELOGIN_ITERATIONS_MIN}, but was ${kdfConfig.iterations}; possible pre-login downgrade attack detected.`, ); }); it("validateKdfConfigForPrelogin(): should throw an error for too low Argon2 iterations", () => { const kdfConfig: Argon2KdfConfig = new Argon2KdfConfig( - Argon2KdfConfig.ITERATIONS.min - 1, + Argon2KdfConfig.PRELOGIN_ITERATIONS_MIN - 1, 64, 4, ); expect(() => kdfConfig.validateKdfConfigForPrelogin()).toThrow( - `Argon2 iterations must be between ${Argon2KdfConfig.ITERATIONS.min} and ${Argon2KdfConfig.ITERATIONS.max}`, - ); - }); - - it("validateKdfConfigForPrelogin(): should throw an error for too high Argon2 iterations", () => { - const kdfConfig: Argon2KdfConfig = new Argon2KdfConfig( - Argon2KdfConfig.PRELOGIN_ITERATIONS.max + 1, - 64, - 4, - ); - expect(() => kdfConfig.validateKdfConfigForPrelogin()).toThrow( - `Argon2 iterations must be between ${Argon2KdfConfig.ITERATIONS.min} and ${Argon2KdfConfig.ITERATIONS.max}`, + `Argon2 iterations must be at least ${Argon2KdfConfig.PRELOGIN_ITERATIONS_MIN}, but was ${kdfConfig.iterations}; possible pre-login downgrade attack detected.`, ); }); it("validateKdfConfigForPrelogin(): should throw an error for too low Argon2 memory", () => { const kdfConfig: Argon2KdfConfig = new Argon2KdfConfig( 3, - Argon2KdfConfig.PRELOGIN_MEMORY.min - 1, + Argon2KdfConfig.PRELOGIN_MEMORY_MIN - 1, 4, ); expect(() => kdfConfig.validateKdfConfigForPrelogin()).toThrow( - `Argon2 memory must be between ${Argon2KdfConfig.PRELOGIN_MEMORY.min}mb and ${Argon2KdfConfig.PRELOGIN_MEMORY.max}mb`, - ); - }); - - it("validateKdfConfigForPrelogin(): should throw an error for too high Argon2 memory", () => { - const kdfConfig: Argon2KdfConfig = new Argon2KdfConfig( - 3, - Argon2KdfConfig.PRELOGIN_MEMORY.max + 1, - 4, - ); - expect(() => kdfConfig.validateKdfConfigForPrelogin()).toThrow( - `Argon2 memory must be between ${Argon2KdfConfig.PRELOGIN_MEMORY.min}mb and ${Argon2KdfConfig.PRELOGIN_MEMORY.max}mb`, - ); - }); - - it("validateKdfConfigForPrelogin(): should throw an error for too high Argon2 parallelism", () => { - const kdfConfig: Argon2KdfConfig = new Argon2KdfConfig(3, 64, 17); - expect(() => kdfConfig.validateKdfConfigForPrelogin()).toThrow( - `Argon2 parallelism must be between ${Argon2KdfConfig.PRELOGIN_PARALLELISM.min} and ${Argon2KdfConfig.PRELOGIN_PARALLELISM.max}`, + `Argon2 memory must be at least ${Argon2KdfConfig.PRELOGIN_MEMORY_MIN} MiB, but was ${kdfConfig.memory} MiB; possible pre-login downgrade attack detected.`, ); }); }); From 82d4fe4d666a1190bf609047fdf24f44f1e13996 Mon Sep 17 00:00:00 2001 From: Brandon Treston Date: Wed, 30 Oct 2024 13:42:22 -0400 Subject: [PATCH 34/39] [PM-11407] add upated copy to managed accounts (#11768) * add upated copy to managed accounts * Add link URL * Update link * change copy in danger zone component * Refactor to look at content projection children --- .../account/danger-zone.component.html | 10 +++++++-- .../settings/account/danger-zone.component.ts | 19 +++++++++++++--- .../settings/account/profile.component.html | 6 +++++ .../settings/account/profile.component.ts | 22 ++++++++++++++++++- apps/web/src/locales/en/messages.json | 12 ++++++++++ 5 files changed, 63 insertions(+), 6 deletions(-) diff --git a/apps/web/src/app/auth/settings/account/danger-zone.component.html b/apps/web/src/app/auth/settings/account/danger-zone.component.html index 14c3b7e0b78..1e7c73a3cc6 100644 --- a/apps/web/src/app/auth/settings/account/danger-zone.component.html +++ b/apps/web/src/app/auth/settings/account/danger-zone.component.html @@ -1,9 +1,15 @@

{{ "dangerZone" | i18n }}

-

{{ "dangerZoneDesc" | i18n }}

+

+ {{ + (accountDeprovisioningEnabled$ | async) && content.children.length === 1 + ? ("dangerZoneDescSingular" | i18n) + : ("dangerZoneDesc" | i18n) + }} +

-
+
diff --git a/apps/web/src/app/auth/settings/account/danger-zone.component.ts b/apps/web/src/app/auth/settings/account/danger-zone.component.ts index 42f198f4f05..4d1adddd183 100644 --- a/apps/web/src/app/auth/settings/account/danger-zone.component.ts +++ b/apps/web/src/app/auth/settings/account/danger-zone.component.ts @@ -1,6 +1,10 @@ -import { Component } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { Component, OnInit } from "@angular/core"; +import { Observable } from "rxjs"; import { JslibModule } from "@bitwarden/angular/jslib.module"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { TypographyModule } from "@bitwarden/components"; /** @@ -10,6 +14,15 @@ import { TypographyModule } from "@bitwarden/components"; selector: "app-danger-zone", templateUrl: "danger-zone.component.html", standalone: true, - imports: [TypographyModule, JslibModule], + imports: [TypographyModule, JslibModule, CommonModule], }) -export class DangerZoneComponent {} +export class DangerZoneComponent implements OnInit { + constructor(private configService: ConfigService) {} + accountDeprovisioningEnabled$: Observable; + + ngOnInit(): void { + this.accountDeprovisioningEnabled$ = this.configService.getFeatureFlag$( + FeatureFlag.AccountDeprovisioning, + ); + } +} diff --git a/apps/web/src/app/auth/settings/account/profile.component.html b/apps/web/src/app/auth/settings/account/profile.component.html index 93025420b26..e6b69807339 100644 --- a/apps/web/src/app/auth/settings/account/profile.component.html +++ b/apps/web/src/app/auth/settings/account/profile.component.html @@ -36,6 +36,12 @@ Customize
+
+ {{ "accountIsManagedMessage" | i18n: managingOrganization?.name }} + + + +
; private destroy$ = new Subject(); protected formGroup = new FormGroup({ @@ -32,6 +37,8 @@ export class ProfileComponent implements OnInit, OnDestroy { private accountService: AccountService, private dialogService: DialogService, private toastService: ToastService, + private configService: ConfigService, + private organizationService: OrganizationService, ) {} async ngOnInit() { @@ -40,6 +47,19 @@ export class ProfileComponent implements OnInit, OnDestroy { this.fingerprintMaterial = await firstValueFrom( this.accountService.activeAccount$.pipe(map((a) => a?.id)), ); + this.managingOrganization$ = this.configService + .getFeatureFlag$(FeatureFlag.AccountDeprovisioning) + .pipe( + switchMap((isAccountDeprovisioningEnabled) => + isAccountDeprovisioningEnabled + ? this.organizationService.organizations$.pipe( + map((organizations) => + organizations.find((o) => o.userIsManagedByOrganization === true), + ), + ) + : of(null), + ), + ); this.formGroup.get("name").setValue(this.profile.name); this.formGroup.get("email").setValue(this.profile.email); diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index aa7bce04312..277f834c694 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -1713,6 +1713,9 @@ "dangerZoneDesc": { "message": "Careful, these actions are not reversible!" }, + "dangerZoneDescSingular": { + "message": "Careful, this action is not reversible!" + }, "deauthorizeSessions": { "message": "Deauthorize sessions" }, @@ -1725,6 +1728,15 @@ "sessionsDeauthorized": { "message": "All sessions deauthorized" }, + "accountIsManagedMessage": { + "message": "This account is managed by $ORGANIZATIONNAME$", + "placeholders": { + "organizationName": { + "content": "$1", + "example": "Organization" + } + } + }, "purgeVault": { "message": "Purge vault" }, From ab3d760dfdae8b51145e1b8d31d26e2bc457af46 Mon Sep 17 00:00:00 2001 From: Vijay Oommen Date: Wed, 30 Oct 2024 13:11:45 -0500 Subject: [PATCH 35/39] [PM-13454] Get hostname for login uri (#11646) * add uri to raw data * add uri * PM-13454 modify the hostnames to friendly names * PM-13454 removed commented code * add password health service * add spec. fix logic in password reuse * PM-13454 added member count and group by uris * PM-13454 removed moved files * PM-13454 fixed linting errors and failed unit tests * PM-13454 grouping member count * PM-13454 added unit test for totalGroupedMembersMap * PM-13454 removed the grouping - show a flatmap --------- Co-authored-by: jaasen-livefront --- .../access-intelligence.component.html | 3 + .../access-intelligence.component.ts | 2 + ...password-health-members-uri.component.html | 55 +++++++++ ...sword-health-members-uri.component.spec.ts | 61 ++++++++++ .../password-health-members-uri.component.ts | 108 ++++++++++++++++++ .../services/ciphers.mock.ts | 7 ++ .../member-cipher-details-response.mock.ts | 11 ++ .../services/password-health.service.spec.ts | 8 +- .../services/password-health.service.ts | 26 ++++- 9 files changed, 273 insertions(+), 8 deletions(-) create mode 100644 apps/web/src/app/tools/access-intelligence/password-health-members-uri.component.html create mode 100644 apps/web/src/app/tools/access-intelligence/password-health-members-uri.component.spec.ts create mode 100644 apps/web/src/app/tools/access-intelligence/password-health-members-uri.component.ts diff --git a/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html b/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html index 44ca90cfaa5..520dd039d1d 100644 --- a/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html +++ b/apps/web/src/app/tools/access-intelligence/access-intelligence.component.html @@ -22,6 +22,9 @@ + + +