11import { enrichFormWithMigrationData } from "@calcom/app-store/routing-forms/enrichFormWithMigrationData" ;
22import { getSerializableForm } from "@calcom/app-store/routing-forms/lib/getSerializableForm" ;
3- import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository" ;
4- import { Resource } from "@calcom/features/pbac/domain/types/permission-registry" ;
5- import { getResourcePermissions } from "@calcom/features/pbac/lib/resource-permissions" ;
6- import { MembershipRole } from "@calcom/prisma/enums" ;
3+ import { getRoutingFormPermissions } from "@calcom/features/pbac/lib/resource-permissions" ;
74import type { AppGetServerSidePropsContext , AppPrisma , AppUser } from "@calcom/types/AppGetServerSideProps" ;
85
96export const getServerSidePropsForSingleFormView = async function getServerSidePropsForSingleFormView (
@@ -78,7 +75,7 @@ export const getServerSidePropsForSingleFormView = async function getServerSideP
7875 } ;
7976 }
8077
81- const { user : u , ...formWithoutUser } = form ;
78+ const { user : _u , ...formWithoutUser } = form ;
8279
8380 const formWithoutProfileInfo = {
8481 ...formWithoutUser ,
@@ -98,55 +95,17 @@ export const getServerSidePropsForSingleFormView = async function getServerSideP
9895 user : await userRepo . enrichUserWithItsProfile ( { user : form . user } ) ,
9996 } ;
10097
101- // Get PBAC permissions for team-scoped routing forms
102- let permissions = {
103- canCreate : false ,
104- canRead : false ,
105- canEdit : false ,
106- canDelete : false ,
107- } ;
108-
109- if ( ! form . teamId ) {
110- // For personal forms (teamId = null),
111- // check if the form belongs to the current user
112- if ( form . userId !== user . id ) {
113- return {
114- notFound : true ,
115- } ;
116- }
98+ const permissions = await getRoutingFormPermissions ( {
99+ userId : user . id ,
100+ formUserId : form . userId ,
101+ formTeamId : form . teamId ,
102+ formTeamParentId : form . team ?. parentId ?? null ,
103+ } ) ;
117104
118- permissions = {
119- canCreate : true ,
120- canRead : true ,
121- canEdit : true ,
122- canDelete : true ,
105+ if ( ! permissions ) {
106+ return {
107+ notFound : true ,
123108 } ;
124- } else {
125- // team-scoped routing form
126- // Get user's role in the team
127- const membership = await MembershipRepository . findUniqueByUserIdAndTeamId ( {
128- userId : user . id ,
129- teamId : form . teamId ,
130- } ) ;
131-
132- if ( ! membership ) {
133- return {
134- notFound : true ,
135- } ;
136- }
137-
138- permissions = await getResourcePermissions ( {
139- userId : user . id ,
140- teamId : form . teamId ,
141- resource : Resource . RoutingForm ,
142- userRole : membership . role ,
143- fallbackRoles : {
144- read : { roles : [ MembershipRole . MEMBER , MembershipRole . ADMIN , MembershipRole . OWNER ] } ,
145- create : { roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] } ,
146- update : { roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] } ,
147- delete : { roles : [ MembershipRole . ADMIN , MembershipRole . OWNER ] } ,
148- } ,
149- } ) ;
150109 }
151110
152111 return {
0 commit comments