diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json
index d4bf901dbfe..70ac05fca65 100644
--- a/apps/web/src/locales/en/messages.json
+++ b/apps/web/src/locales/en/messages.json
@@ -5519,5 +5519,8 @@
},
"noDomainsSubText": {
"message": "Connecting a domain allows members to skip the SSO identifier field during Login with SSO."
+ },
+ "verifyDomain": {
+ "message": "Verify domain"
}
}
diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-add-edit-dialog/domain-add-edit-dialog.component.html b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-add-edit-dialog/domain-add-edit-dialog.component.html
new file mode 100644
index 00000000000..34973505b03
--- /dev/null
+++ b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-add-edit-dialog/domain-add-edit-dialog.component.html
@@ -0,0 +1,35 @@
+
+ {{ "newDomain" | i18n }}
+
+
+
+
+
+
+
+
+
diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-add-edit-dialog/domain-add-edit-dialog.component.ts b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-add-edit-dialog/domain-add-edit-dialog.component.ts
new file mode 100644
index 00000000000..e27b72763fc
--- /dev/null
+++ b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-add-edit-dialog/domain-add-edit-dialog.component.ts
@@ -0,0 +1,34 @@
+import { DialogRef, DIALOG_DATA } from "@angular/cdk/dialog";
+import { Component, Inject, OnInit } from "@angular/core";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+
+import { OrganizationDomainResponse } from "@bitwarden/common/abstractions/organization-domain/responses/organization-domain.response";
+
+export interface DomainAddEditDialogData {
+ organizationId: string;
+ orgDomain: OrganizationDomainResponse;
+}
+
+@Component({
+ selector: "app-domain-add-edit-dialog",
+ templateUrl: "domain-add-edit-dialog.component.html",
+})
+export class DomainAddEditDialogComponent implements OnInit {
+ dialogSize: "small" | "default" | "large" = "default";
+ disablePadding = false;
+
+ domainForm: FormGroup = this.formBuilder.group({
+ domainName: ["", [Validators.required]],
+ txt: [""],
+ });
+
+ constructor(
+ public dialogRef: DialogRef,
+ @Inject(DIALOG_DATA) public data: DomainAddEditDialogData,
+ private formBuilder: FormBuilder
+ ) {}
+
+ ngOnInit(): void {
+ // If we have data.orgDomain, then editing, otherwise creating new domain
+ }
+}
diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.html b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.html
index 3da3eacb9c1..415d220d9bd 100644
--- a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.html
+++ b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.html
@@ -1,7 +1,7 @@
{{ "domainVerification" | i18n }}
-
@@ -58,7 +58,7 @@
-
+
{{ "newDomain" | i18n }}
diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.ts b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.ts
index 20144ddf673..d0de2f4db89 100644
--- a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.ts
+++ b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification/domain-verification.component.ts
@@ -9,6 +9,12 @@ import { OrgDomainServiceAbstraction } from "@bitwarden/common/abstractions/orga
import { OrganizationDomainResponse } from "@bitwarden/common/abstractions/organization-domain/responses/organization-domain.response";
import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
+import { DialogService } from "@bitwarden/components";
+
+import {
+ DomainAddEditDialogComponent,
+ DomainAddEditDialogData,
+} from "./domain-add-edit-dialog/domain-add-edit-dialog.component";
@Component({
selector: "app-org-manage-domain-verification",
@@ -30,7 +36,8 @@ export class DomainVerificationComponent implements OnInit, OnDestroy {
private i18nService: I18nService,
private organizationService: OrganizationService,
private orgDomainApiService: OrgDomainApiServiceAbstraction,
- private orgDomainService: OrgDomainServiceAbstraction
+ private orgDomainService: OrgDomainServiceAbstraction,
+ private dialogService: DialogService
) {}
// eslint-disable-next-line @typescript-eslint/no-empty-function
@@ -57,6 +64,17 @@ export class DomainVerificationComponent implements OnInit, OnDestroy {
this.loading = false;
}
+ addDomain() {
+ const domainAddEditDialogData: DomainAddEditDialogData = {
+ organizationId: this.organizationId,
+ orgDomain: null,
+ };
+
+ this.dialogService.open(DomainAddEditDialogComponent, {
+ data: domainAddEditDialogData,
+ });
+ }
+
ngOnDestroy(): void {
this.componentDestroyed$.next();
this.componentDestroyed$.complete();
diff --git a/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts b/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts
index 9047949aee1..63c34f5b902 100644
--- a/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts
+++ b/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts
@@ -3,6 +3,7 @@ import { NgModule } from "@angular/core";
import { SharedModule } from "@bitwarden/web-vault/app/shared/shared.module";
import { InputCheckboxComponent } from "./components/input-checkbox.component";
+import { DomainAddEditDialogComponent } from "./manage/domain-verification/domain-add-edit-dialog/domain-add-edit-dialog.component";
import { DomainVerificationComponent } from "./manage/domain-verification/domain-verification.component";
import { ScimComponent } from "./manage/scim.component";
import { SsoComponent } from "./manage/sso.component";
@@ -10,6 +11,12 @@ import { OrganizationsRoutingModule } from "./organizations-routing.module";
@NgModule({
imports: [SharedModule, OrganizationsRoutingModule],
- declarations: [InputCheckboxComponent, SsoComponent, ScimComponent, DomainVerificationComponent],
+ declarations: [
+ InputCheckboxComponent,
+ SsoComponent,
+ ScimComponent,
+ DomainVerificationComponent,
+ DomainAddEditDialogComponent,
+ ],
})
export class OrganizationsModule {}