Skip to content

Commit e4e436b

Browse files
authored
[PM-15182] Remove remove-provider-export-permission feature flag (#12878)
* Remove remove-provider-export feature flag * Remove ts-strict comment * Revert changes to tests
1 parent ffa5afb commit e4e436b

File tree

9 files changed

+9
-50
lines changed

9 files changed

+9
-50
lines changed

apps/web/src/app/admin-console/organizations/layouts/organization-layout.component.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,7 @@ export class OrganizationLayoutComponent implements OnInit {
7777
filter((org) => org != null),
7878
);
7979

80-
this.canAccessExport$ = combineLatest([
81-
this.organization$,
82-
this.configService.getFeatureFlag$(FeatureFlag.PM11360RemoveProviderExportPermission),
83-
]).pipe(map(([org, removeProviderExport]) => org.canAccessExport(removeProviderExport)));
80+
this.canAccessExport$ = this.organization$.pipe(map((org) => org.canAccessExport));
8481

8582
this.showPaymentAndHistory$ = this.organization$.pipe(
8683
map(

apps/web/src/app/admin-console/organizations/settings/organization-settings-routing.module.ts

+5-28
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
1-
// FIXME: Update this file to be type safe and remove this and next line
2-
// @ts-strict-ignore
3-
import { inject, NgModule } from "@angular/core";
4-
import { CanMatchFn, RouterModule, Routes } from "@angular/router";
5-
import { map } from "rxjs";
1+
import { NgModule } from "@angular/core";
2+
import { RouterModule, Routes } from "@angular/router";
63

74
import { canAccessSettingsTab } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
85
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
9-
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
10-
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
116

127
import { organizationPermissionsGuard } from "../../organizations/guards/org-permissions.guard";
138
import { organizationRedirectGuard } from "../../organizations/guards/org-redirect.guard";
@@ -16,11 +11,6 @@ import { PoliciesComponent } from "../../organizations/policies";
1611
import { AccountComponent } from "./account.component";
1712
import { TwoFactorSetupComponent } from "./two-factor-setup.component";
1813

19-
const removeProviderExportPermission$: CanMatchFn = () =>
20-
inject(ConfigService)
21-
.getFeatureFlag$(FeatureFlag.PM11360RemoveProviderExportPermission)
22-
.pipe(map((removeProviderExport) => removeProviderExport === true));
23-
2414
const routes: Routes = [
2515
{
2616
path: "",
@@ -68,27 +58,13 @@ const routes: Routes = [
6858
titleId: "importData",
6959
},
7060
},
71-
72-
// Export routing is temporarily duplicated to set the flag value passed into org.canAccessExport
7361
{
7462
path: "export",
7563
loadComponent: () =>
7664
import("../tools/vault-export/org-vault-export.component").then(
7765
(mod) => mod.OrganizationVaultExportComponent,
7866
),
79-
canMatch: [removeProviderExportPermission$], // if this matches, the flag is ON
80-
canActivate: [organizationPermissionsGuard((org) => org.canAccessExport(true))],
81-
data: {
82-
titleId: "exportVault",
83-
},
84-
},
85-
{
86-
path: "export",
87-
loadComponent: () =>
88-
import("../tools/vault-export/org-vault-export.component").then(
89-
(mod) => mod.OrganizationVaultExportComponent,
90-
),
91-
canActivate: [organizationPermissionsGuard((org) => org.canAccessExport(false))],
67+
canActivate: [organizationPermissionsGuard((org) => org.canAccessExport)],
9268
data: {
9369
titleId: "exportVault",
9470
},
@@ -118,7 +94,8 @@ function getSettingsRoute(organization: Organization) {
11894
if (organization.canManageDeviceApprovals) {
11995
return "device-approvals";
12096
}
121-
return undefined;
97+
98+
return "/";
12299
}
123100

124101
@NgModule({

apps/web/src/app/layouts/product-switcher/navigation-switcher/navigation-switcher.stories.ts

-3
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ export const SMAvailable: Story = {
157157
canManageUsers: false,
158158
canAccessSecretsManager: true,
159159
enabled: true,
160-
canAccessExport: (_) => false,
161160
},
162161
] as Organization[],
163162
mockProviders: [],
@@ -173,7 +172,6 @@ export const SMAndACAvailable: Story = {
173172
canManageUsers: true,
174173
canAccessSecretsManager: true,
175174
enabled: true,
176-
canAccessExport: (_) => false,
177175
},
178176
] as Organization[],
179177
mockProviders: [],
@@ -189,7 +187,6 @@ export const WithAllOptions: Story = {
189187
canManageUsers: true,
190188
canAccessSecretsManager: true,
191189
enabled: true,
192-
canAccessExport: (_) => false,
193190
},
194191
] as Organization[],
195192
mockProviders: [{ id: "provider-a" }] as Provider[],

apps/web/src/app/layouts/product-switcher/product-switcher.stories.ts

-3
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@ export const WithSM: Story = {
176176
canManageUsers: false,
177177
canAccessSecretsManager: true,
178178
enabled: true,
179-
canAccessExport: (_) => false,
180179
},
181180
] as Organization[],
182181
mockProviders: [],
@@ -192,7 +191,6 @@ export const WithSMAndAC: Story = {
192191
canManageUsers: true,
193192
canAccessSecretsManager: true,
194193
enabled: true,
195-
canAccessExport: (_) => false,
196194
},
197195
] as Organization[],
198196
mockProviders: [],
@@ -208,7 +206,6 @@ export const WithAllOptions: Story = {
208206
canManageUsers: true,
209207
canAccessSecretsManager: true,
210208
enabled: true,
211-
canAccessExport: (_) => false,
212209
},
213210
] as Organization[],
214211
mockProviders: [{ id: "provider-a" }] as Provider[],

apps/web/src/app/layouts/product-switcher/shared/product-switcher.service.spec.ts

-3
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ describe("ProductSwitcherService", () => {
116116
id: "1234",
117117
canAccessSecretsManager: true,
118118
enabled: true,
119-
canAccessExport: (_) => true,
120119
},
121120
] as Organization[]);
122121

@@ -232,14 +231,12 @@ describe("ProductSwitcherService", () => {
232231
canAccessSecretsManager: true,
233232
enabled: true,
234233
name: "Org 2",
235-
canAccessExport: (_) => true,
236234
},
237235
{
238236
id: "4243",
239237
canAccessSecretsManager: true,
240238
enabled: true,
241239
name: "Org 32",
242-
canAccessExport: (_) => true,
243240
},
244241
] as Organization[]);
245242

libs/common/src/admin-console/abstractions/organization/organization.service.abstraction.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export function canAccessSettingsTab(org: Organization): boolean {
1717
org.canManageSso ||
1818
org.canManageScim ||
1919
org.canAccessImport ||
20-
org.canAccessExport(false) || // Feature flag value doesn't matter here, providers will have access to this group anyway
20+
org.canAccessExport ||
2121
org.canManageDeviceApprovals
2222
);
2323
}

libs/common/src/admin-console/abstractions/organization/vnext.organization.service.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export function canAccessSettingsTab(org: Organization): boolean {
1717
org.canManageSso ||
1818
org.canManageScim ||
1919
org.canAccessImport ||
20-
org.canAccessExport(false) || // Feature flag value doesn't matter here, providers will have access to this group anyway
20+
org.canAccessExport ||
2121
org.canManageDeviceApprovals
2222
);
2323
}

libs/common/src/admin-console/models/domain/organization.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -182,11 +182,7 @@ export class Organization {
182182
);
183183
}
184184

185-
canAccessExport(removeProviderExport: boolean) {
186-
if (!removeProviderExport && this.isProviderUser) {
187-
return true;
188-
}
189-
185+
get canAccessExport() {
190186
return (
191187
this.isMember &&
192188
(this.type === OrganizationUserType.Owner ||

libs/common/src/enums/feature-flag.enum.ts

-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ export enum FeatureFlag {
4444
NewDeviceVerificationPermanentDismiss = "new-device-permanent-dismiss",
4545
DisableFreeFamiliesSponsorship = "PM-12274-disable-free-families-sponsorship",
4646
MacOsNativeCredentialSync = "macos-native-credential-sync",
47-
PM11360RemoveProviderExportPermission = "pm-11360-remove-provider-export-permission",
4847
PM12443RemovePagingLogic = "pm-12443-remove-paging-logic",
4948
PrivateKeyRegeneration = "pm-12241-private-key-regeneration",
5049
ResellerManagedOrgAlert = "PM-15814-alert-owners-of-reseller-managed-orgs",
@@ -102,7 +101,6 @@ export const DefaultFeatureFlagValue = {
102101
[FeatureFlag.NewDeviceVerificationPermanentDismiss]: FALSE,
103102
[FeatureFlag.DisableFreeFamiliesSponsorship]: FALSE,
104103
[FeatureFlag.MacOsNativeCredentialSync]: FALSE,
105-
[FeatureFlag.PM11360RemoveProviderExportPermission]: FALSE,
106104
[FeatureFlag.PM12443RemovePagingLogic]: FALSE,
107105
[FeatureFlag.PrivateKeyRegeneration]: FALSE,
108106
[FeatureFlag.ResellerManagedOrgAlert]: FALSE,

0 commit comments

Comments
 (0)