@@ -8,10 +8,7 @@ import { z } from "zod";
88
99import { EventTypeWebWrapper } from "@calcom/atoms/event-types/wrappers/EventTypeWebWrapper" ;
1010import { getServerSession } from "@calcom/features/auth/lib/getServerSession" ;
11- import { Resource } from "@calcom/features/pbac/domain/types/permission-registry" ;
12- import { getResourcePermissions } from "@calcom/features/pbac/lib/resource-permissions" ;
13- import { prisma } from "@calcom/prisma" ;
14- import { MembershipRole } from "@calcom/prisma/enums" ;
11+ import { getEventTypePermissions } from "@calcom/features/pbac/lib/event-type-permissions" ;
1512import { eventTypesRouter } from "@calcom/trpc/server/routers/viewer/eventTypes/_router" ;
1613
1714import { buildLegacyRequest } from "@lib/buildLegacyCtx" ;
@@ -44,95 +41,6 @@ const getCachedEventType = unstable_cache(
4441 { revalidate : 3600 } // Cache for 1 hour
4542) ;
4643
47- const getEventPermissions = async ( userId : number , teamId : number | null ) => {
48- // Personal event - has all perms
49- if ( ! teamId )
50- return {
51- eventTypes : {
52- canRead : true ,
53- canCreate : true ,
54- canUpdate : true ,
55- canDelete : true ,
56- } ,
57- workflows : {
58- canRead : true ,
59- canCreate : true ,
60- canUpdate : true ,
61- canDelete : true ,
62- } ,
63- } ;
64-
65- const membership = await prisma . membership . findFirst ( {
66- where : {
67- userId,
68- teamId,
69- } ,
70- select : {
71- role : true ,
72- } ,
73- } ) ;
74-
75- if ( ! membership ) throw new Error ( "Membership not found" ) ;
76-
77- const [ eventTypePermissions , workflowPermissions ] = await Promise . all ( [
78- getResourcePermissions ( {
79- userId,
80- teamId,
81- resource : Resource . EventType ,
82- userRole : membership . role ,
83- fallbackRoles : {
84- read : {
85- roles : [ MembershipRole . MEMBER , MembershipRole . ADMIN , MembershipRole . OWNER ] ,
86- } ,
87- update : {
88- roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] ,
89- } ,
90- delete : {
91- roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] ,
92- } ,
93- create : {
94- roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] ,
95- } ,
96- } ,
97- } ) ,
98- getResourcePermissions ( {
99- userId,
100- teamId,
101- resource : Resource . Workflow ,
102- userRole : membership . role ,
103- fallbackRoles : {
104- read : {
105- roles : [ MembershipRole . MEMBER , MembershipRole . ADMIN , MembershipRole . OWNER ] ,
106- } ,
107- update : {
108- roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] ,
109- } ,
110- delete : {
111- roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] ,
112- } ,
113- create : {
114- roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] ,
115- } ,
116- } ,
117- } ) ,
118- ] ) ;
119-
120- return {
121- eventTypes : {
122- canRead : eventTypePermissions . canRead ,
123- canCreate : eventTypePermissions . canCreate ,
124- canUpdate : eventTypePermissions . canEdit ,
125- canDelete : eventTypePermissions . canDelete ,
126- } ,
127- workflows : {
128- canRead : workflowPermissions . canRead ,
129- canCreate : workflowPermissions . canCreate ,
130- canUpdate : workflowPermissions . canEdit ,
131- canDelete : workflowPermissions . canDelete ,
132- } ,
133- } ;
134- } ;
135-
13644const ServerPage = async ( { params } : PageProps ) => {
13745 const session = await getServerSession ( { req : buildLegacyRequest ( await headers ( ) , await cookies ( ) ) } ) ;
13846 if ( ! session ?. user ?. id ) {
@@ -153,7 +61,7 @@ const ServerPage = async ({ params }: PageProps) => {
15361 }
15462
15563 // Fetch permissions for the event type's team
156- const permissions = await getEventPermissions ( session . user . id , data . eventType . teamId ) ;
64+ const permissions = await getEventTypePermissions ( session . user . id , data . eventType . teamId ) ;
15765
15866 return < EventTypeWebWrapper data = { data } id = { eventTypeId } permissions = { permissions } /> ;
15967} ;
0 commit comments