Skip to content

Commit 7fe80dd

Browse files
authored
Revert "feat: implement generalized navigation permission system with PBAC (calcom#23706)" (calcom#23867)
This reverts commit 34b62f7.
1 parent 5feca13 commit 7fe80dd

8 files changed

Lines changed: 4 additions & 170 deletions

File tree

apps/web/app/(use-page-wrapper)/layout.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { headers } from "next/headers";
22
import Script from "next/script";
33

4-
import { NavigationPermissionsProvider } from "@calcom/features/shell/permissions/NavigationPermissionsProvider";
5-
64
import PageWrapper from "@components/PageWrapperAppDir";
75

86
export default async function PageWrapperLayout({ children }: { children: React.ReactNode }) {
@@ -23,7 +21,7 @@ export default async function PageWrapperLayout({ children }: { children: React.
2321
].filter((script): script is { id: string; script: string } => !!script.script);
2422

2523
return (
26-
<NavigationPermissionsProvider>
24+
<>
2725
<PageWrapper requiresLicense={false} nonce={nonce}>
2826
{children}
2927
{scripts.map((script) => (
@@ -38,6 +36,6 @@ export default async function PageWrapperLayout({ children }: { children: React.
3836
/>
3937
))}
4038
</PageWrapper>
41-
</NavigationPermissionsProvider>
39+
</>
4240
);
4341
}

packages/features/shell/navigation/NavigationItem.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import React, { Fragment, useState, useEffect } from "react";
44

55
import { useLocale } from "@calcom/lib/hooks/useLocale";
66
import useMediaQuery from "@calcom/lib/hooks/useMediaQuery";
7-
import { sessionStorage } from "@calcom/lib/webstorage";
87
import classNames from "@calcom/ui/classNames";
98
import { Badge } from "@calcom/ui/components/badge";
109
import { Icon } from "@calcom/ui/components/icon";
Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,10 @@
11
import { useFlagMap } from "@calcom/features/flags/context/provider";
22
import { isKeyInObject } from "@calcom/lib/isKeyInObject";
33

4-
import {
5-
useNavigationPermissions,
6-
type NavigationItemName,
7-
} from "../permissions/NavigationPermissionsProvider";
84
import type { NavigationItemType } from "./NavigationItem";
95

106
export function useShouldDisplayNavigationItem(item: NavigationItemType) {
117
const flags = useFlagMap();
12-
const { permissions: navigationPermissions, isLoading } = useNavigationPermissions();
13-
14-
if (isKeyInObject(item.name, flags) && flags[item.name] === false) {
15-
return false;
16-
}
17-
18-
if (isLoading) {
19-
return true;
20-
}
21-
22-
if (item.name in navigationPermissions) {
23-
return navigationPermissions[item.name as NavigationItemName];
24-
}
25-
8+
if (isKeyInObject(item.name, flags)) return flags[item.name];
269
return true;
2710
}

packages/features/shell/permissions/NavigationPermissionsProvider.tsx

Lines changed: 0 additions & 65 deletions
This file was deleted.

packages/features/shell/permissions/types.ts

Lines changed: 0 additions & 19 deletions
This file was deleted.

packages/lib/server/repository/membership.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
import { availabilityUserSelect, prisma, type PrismaTransaction } from "@calcom/prisma";
3-
import type { Prisma, Membership, PrismaClient } from "@calcom/prisma/client";
43
import { MembershipRole } from "@calcom/prisma/enums";
4+
import type { Prisma, Membership, PrismaClient } from "@calcom/prisma/client";
55
import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential";
66

77
import logger from "../../logger";

packages/lib/webstorage.ts

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -34,35 +34,3 @@ export const localStorage = {
3434
}
3535
},
3636
};
37-
38-
export const sessionStorage = {
39-
getItem(key: string) {
40-
try {
41-
// eslint-disable-next-line @calcom/eslint/avoid-web-storage
42-
return window.sessionStorage.getItem(key);
43-
} catch (e) {
44-
// In case storage is restricted. Possible reasons
45-
// 1. Third Party Context in Chrome Incognito mode.
46-
return null;
47-
}
48-
},
49-
setItem(key: string, value: string) {
50-
try {
51-
// eslint-disable-next-line @calcom/eslint/avoid-web-storage
52-
window.sessionStorage.setItem(key, value);
53-
} catch (e) {
54-
// In case storage is restricted. Possible reasons
55-
// 1. Third Party Context in Chrome Incognito mode.
56-
// 2. Storage limit reached
57-
return;
58-
}
59-
},
60-
removeItem: (key: string) => {
61-
try {
62-
// eslint-disable-next-line @calcom/eslint/avoid-web-storage
63-
window.sessionStorage.removeItem(key);
64-
} catch (e) {
65-
return;
66-
}
67-
},
68-
};

packages/trpc/server/routers/viewer/pbac/_router.tsx

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ import { isValidPermissionString } from "@calcom/features/pbac/domain/types/perm
55
import type { PermissionString } from "@calcom/features/pbac/domain/types/permission-registry";
66
import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service";
77
import { RoleService } from "@calcom/features/pbac/services/role.service";
8-
import {
9-
NAVIGATION_PERMISSION_MAP,
10-
DEFAULT_PERMISSIONS,
11-
type NavigationItemName,
12-
} from "@calcom/features/shell/permissions/types";
13-
import { MembershipRepository } from "@calcom/lib/server/repository/membership";
148
import prisma from "@calcom/prisma";
159
import { RoleType, MembershipRole } from "@calcom/prisma/enums";
1610

@@ -39,30 +33,6 @@ export const permissionsRouter = router({
3933
return await permissionCheckService.getUserPermissions(ctx.user.id);
4034
}),
4135

42-
getNavigationPermissions: authedProcedure.query(async ({ ctx }) => {
43-
if (!ctx.user?.id) {
44-
return DEFAULT_PERMISSIONS;
45-
}
46-
47-
const teamIds = await MembershipRepository.findUserTeamIds({ userId: ctx.user.id });
48-
if (teamIds.length === 0) {
49-
return DEFAULT_PERMISSIONS;
50-
}
51-
52-
const permissionService = new PermissionCheckService();
53-
const navigationItems = Object.keys(NAVIGATION_PERMISSION_MAP) as Array<NavigationItemName>;
54-
55-
const permissionChecks = await Promise.all(
56-
navigationItems.map((itemName) =>
57-
permissionService.getTeamIdsWithPermission(ctx.user.id, NAVIGATION_PERMISSION_MAP[itemName])
58-
)
59-
);
60-
61-
return Object.fromEntries(
62-
navigationItems.map((itemName, index) => [itemName, permissionChecks[index].length > 0])
63-
) as Record<NavigationItemName, boolean>;
64-
}),
65-
6636
checkPermission: authedProcedure
6737
.input(
6838
z.object({

0 commit comments

Comments
 (0)