diff --git a/apps/web/src/app/organizations/settings/settings.component.html b/apps/web/src/app/organizations/settings/settings.component.html index c2bd1ec19a5..07b6d1ecf07 100644 --- a/apps/web/src/app/organizations/settings/settings.component.html +++ b/apps/web/src/app/organizations/settings/settings.component.html @@ -52,6 +52,14 @@ > {{ "singleSignOn" | i18n }} + + {{ "domainVerification" | i18n }} + \ No newline at end of file diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index d126bb611d9..d4bf901dbfe 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -5507,5 +5507,17 @@ }, "memberAccessAll": { "message": "This member can access and modify all items." + }, + "domainVerification": { + "message": "Domain Verification" + }, + "newDomain": { + "message": "New Domain" + }, + "noDomains": { + "message": "No domains" + }, + "noDomainsSubText": { + "message": "Connecting a domain allows members to skip the SSO identifier field during Login with SSO." } } diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification.component.html b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification.component.html new file mode 100644 index 00000000000..9a956bf41fe --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification.component.html @@ -0,0 +1,55 @@ +
+

{{ "domainVerification" | i18n }}

+ + +
+ +
+ + + + Name + Status + Last Checked + Options + + + + + + +
+ +
+ domain + +
+ {{ "noDomains" | i18n }} +
+ +
+ + {{ "noDomainsSubText" | i18n }} + +
+ + +
diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification.component.ts b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification.component.ts new file mode 100644 index 00000000000..e4c628f1f4f --- /dev/null +++ b/bitwarden_license/bit-web/src/app/organizations/manage/domain-verification.component.ts @@ -0,0 +1,37 @@ +import { Component, OnDestroy, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { Subject } from "rxjs"; + +import { ApiService } from "@bitwarden/common/abstractions/api.service"; +import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; +import { OrganizationApiServiceAbstraction } from "@bitwarden/common/abstractions/organization/organization-api.service.abstraction"; +import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; +import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; +import { Organization } from "@bitwarden/common/models/domain/organization"; + +@Component({ + selector: "app-org-manage-domain-verification", + templateUrl: "domain-verification.component.html", +}) +export class DomainVerificationComponent implements OnInit, OnDestroy { + private componentDestroyed$ = new Subject(); + + organization: Organization; + + constructor( + private route: ActivatedRoute, + private apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private i18nService: I18nService, + private organizationService: OrganizationService, + private organizationApiService: OrganizationApiServiceAbstraction + ) {} + + // eslint-disable-next-line @typescript-eslint/no-empty-function + async ngOnInit() {} + + ngOnDestroy(): void { + this.componentDestroyed$.next(); + this.componentDestroyed$.complete(); + } +} diff --git a/bitwarden_license/bit-web/src/app/organizations/organizations-routing.module.ts b/bitwarden_license/bit-web/src/app/organizations/organizations-routing.module.ts index c97a5926d7c..2e511296379 100644 --- a/bitwarden_license/bit-web/src/app/organizations/organizations-routing.module.ts +++ b/bitwarden_license/bit-web/src/app/organizations/organizations-routing.module.ts @@ -8,6 +8,7 @@ import { OrganizationPermissionsGuard } from "@bitwarden/web-vault/app/organizat import { OrganizationLayoutComponent } from "@bitwarden/web-vault/app/organizations/layouts/organization-layout.component"; import { SettingsComponent } from "@bitwarden/web-vault/app/organizations/settings/settings.component"; +import { DomainVerificationComponent } from "./manage/domain-verification.component"; import { ScimComponent } from "./manage/scim.component"; import { SsoComponent } from "./manage/sso.component"; @@ -33,6 +34,14 @@ const routes: Routes = [ organizationPermissions: (org: Organization) => org.canManageSso, }, }, + { + path: "domain-verification", + component: DomainVerificationComponent, + canActivate: [OrganizationPermissionsGuard], + data: { + organizationPermissions: (org: Organization) => org.canManageDomainVerification, + }, + }, { path: "scim", component: ScimComponent, 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 628c1ca767e..58d5376d4dd 100644 --- a/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts +++ b/bitwarden_license/bit-web/src/app/organizations/organizations.module.ts @@ -3,12 +3,13 @@ import { NgModule } from "@angular/core"; import { SharedModule } from "@bitwarden/web-vault/app/shared/shared.module"; import { InputCheckboxComponent } from "./components/input-checkbox.component"; +import { DomainVerificationComponent } from "./manage/domain-verification.component"; import { ScimComponent } from "./manage/scim.component"; import { SsoComponent } from "./manage/sso.component"; import { OrganizationsRoutingModule } from "./organizations-routing.module"; @NgModule({ imports: [SharedModule, OrganizationsRoutingModule], - declarations: [InputCheckboxComponent, SsoComponent, ScimComponent], + declarations: [InputCheckboxComponent, SsoComponent, ScimComponent, DomainVerificationComponent], }) export class OrganizationsModule {}