Files
speckle-server/packages/server/modules/workspaces/graph/resolvers/permissions.ts
T
Chuck Driesler cb7243cfbe feat(authz): Project.canCreateModel and Project.canMoveToWorkspace policies (#4342)
* feat(authz): Project.canCreateModel policy

* feat(authz): Project.canMoveToWorkspace policy

* fix(authz): expose policies as permissions objects

* chore(authz): actually use the policies lol

* chore(authz): add tests for new policies

* fix(authz): skip affected test

* fix(authz): pr comments

* fix(authz): better errors, better tests

* chore(authz): remove references to deleted error
2025-04-08 15:29:12 +01:00

29 lines
887 B
TypeScript

import { Resolvers } from '@/modules/core/graph/generated/graphql'
import { Authz } from '@speckle/shared'
export default {
Workspace: {
permissions: (parent) => ({
workspaceId: parent.id
})
},
WorkspacePermissionChecks: {
canCreateProject: async (parent, _args, ctx) => {
const canCreateProject = await ctx.authPolicies.workspace.canCreateProject({
workspaceId: parent.workspaceId,
userId: ctx.userId
})
return Authz.toGraphqlResult(canCreateProject)
},
canMoveProjectToWorkspace: async (parent, args, ctx) => {
const canMoveProjectToWorkspace =
await ctx.authPolicies.project.canMoveToWorkspace({
userId: ctx.userId,
projectId: args.projectId,
workspaceId: parent.workspaceId
})
return Authz.toGraphqlResult(canMoveProjectToWorkspace)
}
}
} as Resolvers