From 166648867214715ea0ed9437e4cc400104ba18d6 Mon Sep 17 00:00:00 2001 From: SmithThe4th Date: Mon, 13 Mar 2023 10:00:48 -0400 Subject: [PATCH] [PM-129] Refactor email forwarding providers to remove filtering for self-hosted (#4963) * Added model for email forwarder options * Refactored code base to use model and filter based on the new model --- apps/web/src/app/tools/generator.component.ts | 12 ++---------- .../generator/components/generator.component.ts | 15 ++++++++------- .../src/models/domain/email-forwarder-options.ts | 5 +++++ 3 files changed, 15 insertions(+), 17 deletions(-) create mode 100644 libs/common/src/models/domain/email-forwarder-options.ts diff --git a/apps/web/src/app/tools/generator.component.ts b/apps/web/src/app/tools/generator.component.ts index 78c3ad875d..22a99e03fa 100644 --- a/apps/web/src/app/tools/generator.component.ts +++ b/apps/web/src/app/tools/generator.component.ts @@ -41,16 +41,8 @@ export class GeneratorComponent extends BaseGeneratorComponent { window ); if (platformUtilsService.isSelfHost()) { - // Cannot use Firefox Relay on self hosted web vaults due to CORS issues with Firefox Relay API - this.forwardOptions.splice( - this.forwardOptions.findIndex((o) => o.value === "firefoxrelay"), - 1 - ); - // Also cannot use Duck Duck Go on self hosted web vaults due to CORS issues - this.forwardOptions.splice( - this.forwardOptions.findIndex((o) => o.value === "duckduckgo"), - 1 - ); + // Allow only valid email forwarders for self host + this.forwardOptions = this.forwardOptions.filter((forwarder) => forwarder.validForSelfHosted); } } diff --git a/libs/angular/src/tools/generator/components/generator.component.ts b/libs/angular/src/tools/generator/components/generator.component.ts index 2f75446cf8..ec3ee0bff7 100644 --- a/libs/angular/src/tools/generator/components/generator.component.ts +++ b/libs/angular/src/tools/generator/components/generator.component.ts @@ -6,6 +6,7 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; +import { EmailForwarderOptions } from "@bitwarden/common/models/domain/email-forwarder-options"; import { PasswordGeneratorPolicyOptions } from "@bitwarden/common/models/domain/password-generator-policy-options"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; import { UsernameGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/username"; @@ -22,7 +23,7 @@ export class GeneratorComponent implements OnInit { usernameTypeOptions: any[]; subaddressOptions: any[]; catchallOptions: any[]; - forwardOptions: any[]; + forwardOptions: EmailForwarderOptions[]; usernameOptions: any = {}; passwordOptions: any = {}; username = "-"; @@ -236,11 +237,11 @@ export class GeneratorComponent implements OnInit { private async initForwardOptions() { this.forwardOptions = [ - { name: "AnonAddy", value: "anonaddy" }, - { name: "DuckDuckGo", value: "duckduckgo" }, - { name: "Fastmail", value: "fastmail" }, - { name: "Firefox Relay", value: "firefoxrelay" }, - { name: "SimpleLogin", value: "simplelogin" }, + { name: "AnonAddy", value: "anonaddy", validForSelfHosted: true }, + { name: "DuckDuckGo", value: "duckduckgo", validForSelfHosted: false }, + { name: "Fastmail", value: "fastmail", validForSelfHosted: true }, + { name: "Firefox Relay", value: "firefoxrelay", validForSelfHosted: false }, + { name: "SimpleLogin", value: "simplelogin", validForSelfHosted: true }, ]; this.usernameOptions = await this.usernameGenerationService.getOptions(); @@ -248,7 +249,7 @@ export class GeneratorComponent implements OnInit { this.usernameOptions.forwardedService == null || this.usernameOptions.forwardedService === "" ) { - this.forwardOptions.push({ name: "", value: null }); + this.forwardOptions.push({ name: "", value: null, validForSelfHosted: false }); } this.forwardOptions = this.forwardOptions.sort((a, b) => a.name.localeCompare(b.name)); diff --git a/libs/common/src/models/domain/email-forwarder-options.ts b/libs/common/src/models/domain/email-forwarder-options.ts new file mode 100644 index 0000000000..61449a8c70 --- /dev/null +++ b/libs/common/src/models/domain/email-forwarder-options.ts @@ -0,0 +1,5 @@ +export class EmailForwarderOptions { + name: string; + value: string; + validForSelfHosted: boolean; +}