diff --git a/apps/web/.eslintrc.json b/apps/web/.eslintrc.json index 0cc672cc6e6..dd037910028 100644 --- a/apps/web/.eslintrc.json +++ b/apps/web/.eslintrc.json @@ -6,7 +6,13 @@ "no-restricted-imports": [ "error", { - "patterns": ["**/app/core/*", "**/reports/*", "**/app/shared/*"] + "patterns": [ + "**/app/core/*", + "**/reports/*", + "**/app/shared/*", + "**/organizations/settings/*", + "**/organizations/policies/*" + ] } ] } diff --git a/apps/web/src/app/app.component.ts b/apps/web/src/app/app.component.ts index b1700a85513..9bd0fda6fcb 100644 --- a/apps/web/src/app/app.component.ts +++ b/apps/web/src/app/app.component.ts @@ -27,15 +27,17 @@ import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.ab import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { PolicyListService, RouterService } from "./core"; -import { DisableSendPolicy } from "./organizations/policies/disable-send.component"; -import { MasterPasswordPolicy } from "./organizations/policies/master-password.component"; -import { PasswordGeneratorPolicy } from "./organizations/policies/password-generator.component"; -import { PersonalOwnershipPolicy } from "./organizations/policies/personal-ownership.component"; -import { RequireSsoPolicy } from "./organizations/policies/require-sso.component"; -import { ResetPasswordPolicy } from "./organizations/policies/reset-password.component"; -import { SendOptionsPolicy } from "./organizations/policies/send-options.component"; -import { SingleOrgPolicy } from "./organizations/policies/single-org.component"; -import { TwoFactorAuthenticationPolicy } from "./organizations/policies/two-factor-authentication.component"; +import { + DisableSendPolicy, + MasterPasswordPolicy, + PasswordGeneratorPolicy, + PersonalOwnershipPolicy, + RequireSsoPolicy, + ResetPasswordPolicy, + SendOptionsPolicy, + SingleOrgPolicy, + TwoFactorAuthenticationPolicy, +} from "./organizations/policies"; const BroadcasterSubscriptionId = "AppComponent"; const IdleTimeout = 60000 * 10; // 10 minutes diff --git a/apps/web/src/app/core/policy-list.service.ts b/apps/web/src/app/core/policy-list.service.ts index 70857ef8196..bb207006906 100644 --- a/apps/web/src/app/core/policy-list.service.ts +++ b/apps/web/src/app/core/policy-list.service.ts @@ -1,4 +1,4 @@ -import { BasePolicy } from "../organizations/policies/base-policy.component"; +import { BasePolicy } from "../organizations/policies"; export class PolicyListService { private policies: BasePolicy[] = []; diff --git a/apps/web/src/app/organizations/settings/image-subscription-hidden.component.svg b/apps/web/src/app/organizations/billing/image-subscription-hidden.component.svg similarity index 100% rename from apps/web/src/app/organizations/settings/image-subscription-hidden.component.svg rename to apps/web/src/app/organizations/billing/image-subscription-hidden.component.svg diff --git a/apps/web/src/app/organizations/settings/image-subscription-hidden.component.ts b/apps/web/src/app/organizations/billing/image-subscription-hidden.component.ts similarity index 100% rename from apps/web/src/app/organizations/settings/image-subscription-hidden.component.ts rename to apps/web/src/app/organizations/billing/image-subscription-hidden.component.ts diff --git a/apps/web/src/app/organizations/billing/organization-billing.module.ts b/apps/web/src/app/organizations/billing/organization-billing.module.ts index 7e2dcf534e9..7e58c3b65cc 100644 --- a/apps/web/src/app/organizations/billing/organization-billing.module.ts +++ b/apps/web/src/app/organizations/billing/organization-billing.module.ts @@ -4,6 +4,7 @@ import { LooseComponentsModule } from "../../shared/loose-components.module"; import { SharedModule } from "../../shared/shared.module"; import { BillingSyncApiKeyComponent } from "./billing-sync-api-key.component"; +import { ImageSubscriptionHiddenComponent } from "./image-subscription-hidden.component"; import { OrgBillingHistoryViewComponent } from "./organization-billing-history-view.component"; import { OrganizationBillingRoutingModule } from "./organization-billing-routing.module"; import { OrganizationBillingTabComponent } from "./organization-billing-tab.component"; @@ -14,6 +15,7 @@ import { OrganizationSubscriptionComponent } from "./organization-subscription.c declarations: [ BillingSyncApiKeyComponent, OrganizationBillingTabComponent, + ImageSubscriptionHiddenComponent, OrganizationSubscriptionComponent, OrgBillingHistoryViewComponent, ], diff --git a/apps/web/src/app/organizations/organization-routing.module.ts b/apps/web/src/app/organizations/organization-routing.module.ts index 3466ae28a7b..33ff52e9826 100644 --- a/apps/web/src/app/organizations/organization-routing.module.ts +++ b/apps/web/src/app/organizations/organization-routing.module.ts @@ -11,11 +11,7 @@ import { canAccessGroupsTab, canAccessMembersTab, canAccessOrgAdmin, - canAccessSettingsTab, } from "./navigation-permissions"; -import { AccountComponent } from "./settings/account.component"; -import { SettingsComponent } from "./settings/settings.component"; -import { TwoFactorSetupComponent } from "./settings/two-factor-setup.component"; import { VaultModule } from "./vault/vault.module"; const routes: Routes = [ @@ -34,18 +30,7 @@ const routes: Routes = [ }, { path: "settings", - component: SettingsComponent, - canActivate: [OrganizationPermissionsGuard], - data: { organizationPermissions: canAccessSettingsTab }, - children: [ - { path: "", pathMatch: "full", redirectTo: "account" }, - { path: "account", component: AccountComponent, data: { titleId: "organizationInfo" } }, - { - path: "two-factor", - component: TwoFactorSetupComponent, - data: { titleId: "twoStepLogin" }, - }, - ], + loadChildren: () => import("./settings").then((m) => m.OrganizationSettingsModule), }, { path: "members", diff --git a/apps/web/src/app/organizations/policies/index.ts b/apps/web/src/app/organizations/policies/index.ts new file mode 100644 index 00000000000..1fb554d55a1 --- /dev/null +++ b/apps/web/src/app/organizations/policies/index.ts @@ -0,0 +1,12 @@ +export * from "./policies.module"; +export { BasePolicy, BasePolicyComponent } from "./base-policy.component"; +export { DisableSendPolicy } from "./disable-send.component"; +export { MasterPasswordPolicy } from "./master-password.component"; +export { PasswordGeneratorPolicy } from "./password-generator.component"; +export { PersonalOwnershipPolicy } from "./personal-ownership.component"; +export { RequireSsoPolicy } from "./require-sso.component"; +export { ResetPasswordPolicy } from "./reset-password.component"; +export { SendOptionsPolicy } from "./send-options.component"; +export { SingleOrgPolicy } from "./single-org.component"; +export { TwoFactorAuthenticationPolicy } from "./two-factor-authentication.component"; +export { PoliciesComponent } from "./policies.component"; diff --git a/apps/web/src/app/organizations/manage/policies.component.html b/apps/web/src/app/organizations/policies/policies.component.html similarity index 100% rename from apps/web/src/app/organizations/manage/policies.component.html rename to apps/web/src/app/organizations/policies/policies.component.html diff --git a/apps/web/src/app/organizations/manage/policies.component.ts b/apps/web/src/app/organizations/policies/policies.component.ts similarity index 98% rename from apps/web/src/app/organizations/manage/policies.component.ts rename to apps/web/src/app/organizations/policies/policies.component.ts index b9f11322de5..b4e11a46ba0 100644 --- a/apps/web/src/app/organizations/manage/policies.component.ts +++ b/apps/web/src/app/organizations/policies/policies.component.ts @@ -10,7 +10,7 @@ import { Organization } from "@bitwarden/common/models/domain/organization"; import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse"; import { PolicyListService } from "../../core"; -import { BasePolicy } from "../policies/base-policy.component"; +import { BasePolicy } from "../policies"; import { PolicyEditComponent } from "./policy-edit.component"; diff --git a/apps/web/src/app/organizations/policies/policies.module.ts b/apps/web/src/app/organizations/policies/policies.module.ts new file mode 100644 index 00000000000..37b4d63c333 --- /dev/null +++ b/apps/web/src/app/organizations/policies/policies.module.ts @@ -0,0 +1,46 @@ +import { NgModule } from "@angular/core"; + +import { LooseComponentsModule, SharedModule } from "../../shared"; + +import { DisableSendPolicyComponent } from "./disable-send.component"; +import { MasterPasswordPolicyComponent } from "./master-password.component"; +import { PasswordGeneratorPolicyComponent } from "./password-generator.component"; +import { PersonalOwnershipPolicyComponent } from "./personal-ownership.component"; +import { PoliciesComponent } from "./policies.component"; +import { PolicyEditComponent } from "./policy-edit.component"; +import { RequireSsoPolicyComponent } from "./require-sso.component"; +import { ResetPasswordPolicyComponent } from "./reset-password.component"; +import { SendOptionsPolicyComponent } from "./send-options.component"; +import { SingleOrgPolicyComponent } from "./single-org.component"; +import { TwoFactorAuthenticationPolicyComponent } from "./two-factor-authentication.component"; + +@NgModule({ + imports: [SharedModule, LooseComponentsModule], + declarations: [ + DisableSendPolicyComponent, + MasterPasswordPolicyComponent, + PasswordGeneratorPolicyComponent, + PersonalOwnershipPolicyComponent, + RequireSsoPolicyComponent, + ResetPasswordPolicyComponent, + SendOptionsPolicyComponent, + SingleOrgPolicyComponent, + TwoFactorAuthenticationPolicyComponent, + PoliciesComponent, + PolicyEditComponent, + ], + exports: [ + DisableSendPolicyComponent, + MasterPasswordPolicyComponent, + PasswordGeneratorPolicyComponent, + PersonalOwnershipPolicyComponent, + RequireSsoPolicyComponent, + ResetPasswordPolicyComponent, + SendOptionsPolicyComponent, + SingleOrgPolicyComponent, + TwoFactorAuthenticationPolicyComponent, + PoliciesComponent, + PolicyEditComponent, + ], +}) +export class PoliciesModule {} diff --git a/apps/web/src/app/organizations/manage/policy-edit.component.html b/apps/web/src/app/organizations/policies/policy-edit.component.html similarity index 100% rename from apps/web/src/app/organizations/manage/policy-edit.component.html rename to apps/web/src/app/organizations/policies/policy-edit.component.html diff --git a/apps/web/src/app/organizations/manage/policy-edit.component.ts b/apps/web/src/app/organizations/policies/policy-edit.component.ts similarity index 97% rename from apps/web/src/app/organizations/manage/policy-edit.component.ts rename to apps/web/src/app/organizations/policies/policy-edit.component.ts index 4efb35cba37..6528cdda348 100644 --- a/apps/web/src/app/organizations/manage/policy-edit.component.ts +++ b/apps/web/src/app/organizations/policies/policy-edit.component.ts @@ -17,7 +17,7 @@ import { PolicyType } from "@bitwarden/common/enums/policyType"; import { PolicyRequest } from "@bitwarden/common/models/request/policyRequest"; import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse"; -import { BasePolicy, BasePolicyComponent } from "../policies/base-policy.component"; +import { BasePolicy, BasePolicyComponent } from "../policies"; @Component({ selector: "app-policy-edit", diff --git a/apps/web/src/app/organizations/settings/account.component.html b/apps/web/src/app/organizations/settings/account.component.html index d4c8e71bc51..680cb2badd8 100644 --- a/apps/web/src/app/organizations/settings/account.component.html +++ b/apps/web/src/app/organizations/settings/account.component.html @@ -51,16 +51,6 @@ [disabled]="selfHosted || !canManageBilling" /> -
{{ "twoStepLoginDesc" | i18n }}
-{{ "twoStepLoginOrganizationDesc" | i18n }}
+
+ {{ "twoStepLoginOrganizationDescStart" | i18n }}
+ {{ "twoStepLoginPolicy" | i18n }}.
+
+ {{ "twoStepLoginOrganizationDuoDesc" | i18n }}
+
{{ "twoStepLoginOrganizationSsoDesc" | i18n }}
+{{ "twoStepLoginRecoveryWarning" | i18n }}