@speckle/shared
Version:
Shared code between various Speckle JS packages
83 lines (80 loc) • 4.5 kB
text/typescript
import { AllAuthCheckContextLoaders } from '../domain/loaders.js'
import { canCreateWorkspaceProjectPolicy } from './workspace/canCreateWorkspaceProject.js'
import { canReadProjectPolicy } from './project/canRead.js'
import { canCreateModelPolicy } from './project/model/canCreate.js'
import { canMoveToWorkspacePolicy } from './project/canMoveToWorkspace.js'
import { canCreatePersonalProjectPolicy } from './project/canCreatePersonal.js'
import { canUpdateProjectPolicy } from './project/canUpdate.js'
import { canReadProjectSettingsPolicy } from './project/canReadSettings.js'
import { canReadProjectWebhooksPolicy } from './project/canReadWebhooks.js'
import { canUpdateProjectAllowPublicCommentsPolicy } from './project/canUpdateAllowPublicComments.js'
import { canLeaveProjectPolicy } from './project/canLeave.js'
import { canInviteToWorkspacePolicy } from './workspace/canInvite.js'
import { canInviteToProjectPolicy } from './project/canInvite.js'
import { canBroadcastProjectActivityPolicy } from './project/canBroadcastActivity.js'
import { canCreateProjectCommentPolicy } from './project/comment/canCreate.js'
import { canArchiveProjectCommentPolicy } from './project/comment/canArchive.js'
import { canEditProjectCommentPolicy } from './project/comment/canEdit.js'
import { canUpdateModelPolicy } from './project/model/canUpdate.js'
import { canDeleteModelPolicy } from './project/model/canDelete.js'
import { canCreateProjectVersionPolicy } from './project/version/canCreate.js'
import { canUpdateProjectVersionPolicy } from './project/version/canUpdate.js'
import { canRequestProjectVersionRenderPolicy } from './project/version/canRequestRender.js'
import { canCreateAutomationPolicy } from './project/automation/canCreate.js'
import { canUpdateAutomationPolicy } from './project/automation/canUpdate.js'
import { canReadAutomationPolicy } from './project/automation/canRead.js'
import { canReceiveWorkspaceProjectsUpdatedMessagePolicy } from './workspace/canReceiveProjectsUpdatedMessage.js'
import { canDeleteProjectPolicy } from './project/canDelete.js'
import { canDeleteAutomationPolicy } from './project/automation/canDelete.js'
import { canPublishPolicy } from './project/canPublish.js'
import { canLoadPolicy } from './project/canLoad.js'
import { canUpdateEmbedOptionsPolicy } from './workspace/canUpdateEmbedOptions.js'
import { canReadMemberEmailPolicy } from './workspace/canReadMemberEmail.js'
export const authPoliciesFactory = (loaders: AllAuthCheckContextLoaders) => ({
project: {
automation: {
canCreate: canCreateAutomationPolicy(loaders),
canRead: canReadAutomationPolicy(loaders),
canUpdate: canUpdateAutomationPolicy(loaders),
canDelete: canDeleteAutomationPolicy(loaders)
},
model: {
canCreate: canCreateModelPolicy(loaders),
canUpdate: canUpdateModelPolicy(loaders),
canDelete: canDeleteModelPolicy(loaders)
},
comment: {
canCreate: canCreateProjectCommentPolicy(loaders),
canArchive: canArchiveProjectCommentPolicy(loaders),
canEdit: canEditProjectCommentPolicy(loaders)
},
version: {
canCreate: canCreateProjectVersionPolicy(loaders),
canUpdate: canUpdateProjectVersionPolicy(loaders),
canReceive: canLoadPolicy(loaders),
canRequestRender: canRequestProjectVersionRenderPolicy(loaders)
},
canBroadcastActivity: canBroadcastProjectActivityPolicy(loaders),
canRead: canReadProjectPolicy(loaders),
canMoveToWorkspace: canMoveToWorkspacePolicy(loaders),
canCreatePersonal: canCreatePersonalProjectPolicy(loaders),
canUpdate: canUpdateProjectPolicy(loaders),
canDelete: canDeleteProjectPolicy(loaders),
canUpdateAllowPublicComments: canUpdateProjectAllowPublicCommentsPolicy(loaders),
canReadSettings: canReadProjectSettingsPolicy(loaders),
canReadWebhooks: canReadProjectWebhooksPolicy(loaders),
canLeave: canLeaveProjectPolicy(loaders),
canInvite: canInviteToProjectPolicy(loaders),
canPublish: canPublishPolicy(loaders),
canLoad: canLoadPolicy(loaders)
},
workspace: {
canCreateProject: canCreateWorkspaceProjectPolicy(loaders),
canInvite: canInviteToWorkspacePolicy(loaders),
canReceiveProjectsUpdatedMessage:
canReceiveWorkspaceProjectsUpdatedMessagePolicy(loaders),
canUpdateEmbedOptions: canUpdateEmbedOptionsPolicy(loaders),
canReadMemberEmail: canReadMemberEmailPolicy(loaders)
}
})
export type AuthPolicies = ReturnType<typeof authPoliciesFactory>