Skip to content

Commit 1bbf7c6

Browse files
committed
fix(credentials): apply permission mapping in createWorkspaceEnvCredentials
Address Bugbot review: the parallel credential creation path (createWorkspaceEnvCredentials) still used owner-only admin logic. Now queries workspace permissions table for consistent role mapping.
1 parent 8d78ecb commit 1bbf7c6

1 file changed

Lines changed: 24 additions & 11 deletions

File tree

apps/sim/lib/credentials/environment.ts

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -269,19 +269,32 @@ export async function createWorkspaceEnvCredentials(params: {
269269

270270
if (createdIds.length === 0 || memberUserIds.length === 0) return
271271

272+
const wsPermissionRows = await db
273+
.select({ userId: permissions.userId, permissionType: permissions.permissionType })
274+
.from(permissions)
275+
.where(and(eq(permissions.entityType, 'workspace'), eq(permissions.entityId, workspaceId)))
276+
277+
const wsPermissionByUser = new Map(
278+
wsPermissionRows.map((row) => [row.userId, row.permissionType])
279+
)
280+
272281
// Bulk-insert memberships for all new credentials × all workspace members in one query
273282
const membershipValues = createdIds.flatMap((credentialId) =>
274-
memberUserIds.map((memberUserId) => ({
275-
id: generateId(),
276-
credentialId,
277-
userId: memberUserId,
278-
role: (memberUserId === ownerUserId ? 'admin' : 'member') as 'admin' | 'member',
279-
status: 'active' as const,
280-
joinedAt: now,
281-
invitedBy: ownerUserId,
282-
createdAt: now,
283-
updatedAt: now,
284-
}))
283+
memberUserIds.map((memberUserId) => {
284+
const wsPermission = wsPermissionByUser.get(memberUserId)
285+
const isAdmin = memberUserId === ownerUserId || wsPermission === 'admin'
286+
return {
287+
id: generateId(),
288+
credentialId,
289+
userId: memberUserId,
290+
role: (isAdmin ? 'admin' : 'member') as 'admin' | 'member',
291+
status: 'active' as const,
292+
joinedAt: now,
293+
invitedBy: ownerUserId,
294+
createdAt: now,
295+
updatedAt: now,
296+
}
297+
})
285298
)
286299

287300
await db.insert(credentialMember).values(membershipValues).onConflictDoNothing()

0 commit comments

Comments
 (0)