feat: wip casl policies (#334)

* feat: wip casl policies

* feat: add ability guard on pipeline resolvers

* fix: test
This commit is contained in:
Jérémy M
2023-06-21 04:31:11 +02:00
committed by GitHub
parent 294b290939
commit b179d1f1f0
44 changed files with 1190 additions and 55 deletions

View File

@ -0,0 +1,243 @@
import { Global, Module } from '@nestjs/common';
import { AbilityFactory } from 'src/ability/ability.factory';
import { PrismaService } from 'src/database/prisma.service';
import {
CreateUserAbilityHandler,
DeleteUserAbilityHandler,
ManageUserAbilityHandler,
ReadUserAbilityHandler,
UpdateUserAbilityHandler,
} from './handlers/user.ability-handler';
import {
CreateWorkspaceAbilityHandler,
DeleteWorkspaceAbilityHandler,
ManageWorkspaceAbilityHandler,
ReadWorkspaceAbilityHandler,
UpdateWorkspaceAbilityHandler,
} from './handlers/workspace.ability-handler';
import {
CreateWorkspaceMemberAbilityHandler,
DeleteWorkspaceMemberAbilityHandler,
ManageWorkspaceMemberAbilityHandler,
ReadWorkspaceMemberAbilityHandler,
UpdateWorkspaceMemberAbilityHandler,
} from './handlers/workspace-member.ability-handler';
import {
ManageCompanyAbilityHandler,
ReadCompanyAbilityHandler,
CreateCompanyAbilityHandler,
UpdateCompanyAbilityHandler,
DeleteCompanyAbilityHandler,
} from './handlers/company.ability-handler';
import {
CreatePersonAbilityHandler,
DeletePersonAbilityHandler,
ManagePersonAbilityHandler,
ReadPersonAbilityHandler,
UpdatePersonAbilityHandler,
} from './handlers/person.ability-handler';
import {
ManageRefreshTokenAbilityHandler,
ReadRefreshTokenAbilityHandler,
CreateRefreshTokenAbilityHandler,
UpdateRefreshTokenAbilityHandler,
DeleteRefreshTokenAbilityHandler,
} from './handlers/refresh-token.ability-handler';
import {
ManageCommentThreadAbilityHandler,
ReadCommentThreadAbilityHandler,
CreateCommentThreadAbilityHandler,
UpdateCommentThreadAbilityHandler,
DeleteCommentThreadAbilityHandler,
} from './handlers/comment-thread.ability-handler';
import {
ManageCommentAbilityHandler,
ReadCommentAbilityHandler,
CreateCommentAbilityHandler,
UpdateCommentAbilityHandler,
DeleteCommentAbilityHandler,
} from './handlers/comment.ability-handler';
import {
ManageCommentThreadTargetAbilityHandler,
ReadCommentThreadTargetAbilityHandler,
CreateCommentThreadTargetAbilityHandler,
UpdateCommentThreadTargetAbilityHandler,
DeleteCommentThreadTargetAbilityHandler,
} from './handlers/comment-thread-target.ability-handler';
import {
ManagePipelineAbilityHandler,
ReadPipelineAbilityHandler,
CreatePipelineAbilityHandler,
UpdatePipelineAbilityHandler,
DeletePipelineAbilityHandler,
} from './handlers/pipeline.ability-handler';
import {
ManagePipelineStageAbilityHandler,
ReadPipelineStageAbilityHandler,
CreatePipelineStageAbilityHandler,
UpdatePipelineStageAbilityHandler,
DeletePipelineStageAbilityHandler,
} from './handlers/pipeline-stage.ability-handler';
import {
ManagePipelineProgressAbilityHandler,
ReadPipelineProgressAbilityHandler,
CreatePipelineProgressAbilityHandler,
UpdatePipelineProgressAbilityHandler,
DeletePipelineProgressAbilityHandler,
} from './handlers/pipeline-progress.ability-handler';
@Global()
@Module({
providers: [
AbilityFactory,
PrismaService,
// User
ManageUserAbilityHandler,
ReadUserAbilityHandler,
CreateUserAbilityHandler,
UpdateUserAbilityHandler,
DeleteUserAbilityHandler,
// Workspace
ManageWorkspaceAbilityHandler,
ReadWorkspaceAbilityHandler,
CreateWorkspaceAbilityHandler,
UpdateWorkspaceAbilityHandler,
DeleteWorkspaceAbilityHandler,
// Workspace Member
ManageWorkspaceMemberAbilityHandler,
ReadWorkspaceMemberAbilityHandler,
CreateWorkspaceMemberAbilityHandler,
UpdateWorkspaceMemberAbilityHandler,
DeleteWorkspaceMemberAbilityHandler,
// Company
ManageCompanyAbilityHandler,
ReadCompanyAbilityHandler,
CreateCompanyAbilityHandler,
UpdateCompanyAbilityHandler,
DeleteCompanyAbilityHandler,
// Person
ManagePersonAbilityHandler,
ReadPersonAbilityHandler,
CreatePersonAbilityHandler,
UpdatePersonAbilityHandler,
DeletePersonAbilityHandler,
// RefreshToken
ManageRefreshTokenAbilityHandler,
ReadRefreshTokenAbilityHandler,
CreateRefreshTokenAbilityHandler,
UpdateRefreshTokenAbilityHandler,
DeleteRefreshTokenAbilityHandler,
// CommentThread
ManageCommentThreadAbilityHandler,
ReadCommentThreadAbilityHandler,
CreateCommentThreadAbilityHandler,
UpdateCommentThreadAbilityHandler,
DeleteCommentThreadAbilityHandler,
// Comment
ManageCommentAbilityHandler,
ReadCommentAbilityHandler,
CreateCommentAbilityHandler,
UpdateCommentAbilityHandler,
DeleteCommentAbilityHandler,
// CommentThreadTarget
ManageCommentThreadTargetAbilityHandler,
ReadCommentThreadTargetAbilityHandler,
CreateCommentThreadTargetAbilityHandler,
UpdateCommentThreadTargetAbilityHandler,
DeleteCommentThreadTargetAbilityHandler,
// Pipeline
ManagePipelineAbilityHandler,
ReadPipelineAbilityHandler,
CreatePipelineAbilityHandler,
UpdatePipelineAbilityHandler,
DeletePipelineAbilityHandler,
// PipelineStage
ManagePipelineStageAbilityHandler,
ReadPipelineStageAbilityHandler,
CreatePipelineStageAbilityHandler,
UpdatePipelineStageAbilityHandler,
DeletePipelineStageAbilityHandler,
// PipelineProgress
ManagePipelineProgressAbilityHandler,
ReadPipelineProgressAbilityHandler,
CreatePipelineProgressAbilityHandler,
UpdatePipelineProgressAbilityHandler,
DeletePipelineProgressAbilityHandler,
],
exports: [
AbilityFactory,
// User
ManageUserAbilityHandler,
ReadUserAbilityHandler,
CreateUserAbilityHandler,
UpdateUserAbilityHandler,
DeleteUserAbilityHandler,
// Workspace
ManageWorkspaceAbilityHandler,
ReadWorkspaceAbilityHandler,
CreateWorkspaceAbilityHandler,
UpdateWorkspaceAbilityHandler,
DeleteWorkspaceAbilityHandler,
// Workspace Member
ManageWorkspaceMemberAbilityHandler,
ReadWorkspaceMemberAbilityHandler,
CreateWorkspaceMemberAbilityHandler,
UpdateWorkspaceMemberAbilityHandler,
DeleteWorkspaceMemberAbilityHandler,
// Company
ManageCompanyAbilityHandler,
ReadCompanyAbilityHandler,
CreateCompanyAbilityHandler,
UpdateCompanyAbilityHandler,
DeleteCompanyAbilityHandler,
// Person
ManagePersonAbilityHandler,
ReadPersonAbilityHandler,
CreatePersonAbilityHandler,
UpdatePersonAbilityHandler,
DeletePersonAbilityHandler,
// RefreshToken
ManageRefreshTokenAbilityHandler,
ReadRefreshTokenAbilityHandler,
CreateRefreshTokenAbilityHandler,
UpdateRefreshTokenAbilityHandler,
DeleteRefreshTokenAbilityHandler,
// CommentThread
ManageCommentThreadAbilityHandler,
ReadCommentThreadAbilityHandler,
CreateCommentThreadAbilityHandler,
UpdateCommentThreadAbilityHandler,
DeleteCommentThreadAbilityHandler,
// Comment
ManageCommentAbilityHandler,
ReadCommentAbilityHandler,
CreateCommentAbilityHandler,
UpdateCommentAbilityHandler,
DeleteCommentAbilityHandler,
// CommentThreadTarget
ManageCommentThreadTargetAbilityHandler,
ReadCommentThreadTargetAbilityHandler,
CreateCommentThreadTargetAbilityHandler,
UpdateCommentThreadTargetAbilityHandler,
DeleteCommentThreadTargetAbilityHandler,
// Pipeline
ManagePipelineAbilityHandler,
ReadPipelineAbilityHandler,
CreatePipelineAbilityHandler,
UpdatePipelineAbilityHandler,
DeletePipelineAbilityHandler,
// PipelineStage
ManagePipelineStageAbilityHandler,
ReadPipelineStageAbilityHandler,
CreatePipelineStageAbilityHandler,
UpdatePipelineStageAbilityHandler,
DeletePipelineStageAbilityHandler,
// PipelineProgress
ManagePipelineProgressAbilityHandler,
ReadPipelineProgressAbilityHandler,
CreatePipelineProgressAbilityHandler,
UpdatePipelineProgressAbilityHandler,
DeletePipelineProgressAbilityHandler,
],
})
export class AbilityModule {}