From 51cfc0d82c0681394f5bcddbd9ccdc0bec749045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20M?= Date: Wed, 26 Jul 2023 01:37:22 +0200 Subject: [PATCH] feat: refactoring casl permission checks for recursive nested operations (#778) * feat: nested casl abilities * fix: remove unused packages * Fixes * Fix createMany broken * Fix lint * Fix lint * Fix lint * Fix lint * Fixes * Fix CommentThread * Fix bugs * Fix lint * Fix bugs * Fixed auto routing * Fixed app path --------- Co-authored-by: Charles Bochet Co-authored-by: Lucas Bordeau --- .../components/CommentThreadCreateButton.tsx | 4 +- .../components/CommentThreadEditor.tsx | 190 ++++++++++++++++ .../right-drawer/components/CommentThread.tsx | 189 +--------------- .../components/CommentThreadActionBar.tsx | 4 +- .../components/EditableCompanyAddressCell.tsx | 14 +- .../EditableCompanyEmployeesCell.tsx | 15 +- .../EditableCompanyLinkedinUrlCell.tsx | 13 +- .../components/EditablePeopleEmailCell.tsx | 15 +- front/src/modules/types/AppPath.ts | 14 +- .../ui/button/components/ButtonGroup.tsx | 6 +- .../components/InplaceInputTextEditMode.tsx | 1 + .../ui/input/components/ImageInput.tsx | 6 +- .../types/EditableCellDoubleTextEditMode.tsx | 14 +- .../editable-cell/types/EditableCellPhone.tsx | 1 - .../editable-cell/types/EditableCellText.tsx | 1 - .../editable-cell/types/EditableCellURL.tsx | 1 - .../editable-cell/types/EditableChip.tsx | 1 - .../components/WorkspaceInviteLink.tsx | 4 +- front/src/pages/auth/Verify.tsx | 14 +- .../settings/SettingsWorkspaceMembers.tsx | 10 +- server/package.json | 8 +- server/src/ability/ability.factory.ts | 8 +- server/src/ability/ability.util.ts | 207 ++++++++++++++++++ .../handlers/attachment.ability-handler.ts | 2 +- .../comment-thread-target.ability-handler.ts | 35 ++- .../comment-thread.ability-handler.ts | 45 +++- .../handlers/comment.ability-handler.ts | 35 ++- .../handlers/company.ability-handler.ts | 36 ++- .../handlers/person.ability-handler.ts | 35 ++- .../pipeline-progress.ability-handler.ts | 37 +++- .../pipeline-stage.ability-handler.ts | 45 +++- .../handlers/pipeline.ability-handler.ts | 35 ++- .../handlers/refresh-token.ability-handler.ts | 47 +++- .../ability/handlers/user.ability-handler.ts | 37 +++- .../workspace-member.ability-handler.ts | 51 ++++- .../handlers/workspace.ability-handler.ts | 54 +++-- .../attachment/services/attachment.service.ts | 30 +-- .../src/core/auth/services/token.service.ts | 12 +- .../core/auth/strategies/jwt.auth.strategy.ts | 9 +- .../resolvers/comment-thread.resolver.spec.ts | 12 +- .../resolvers/comment-thread.resolver.ts | 25 ++- .../resolvers/comment.resolver.spec.ts | 9 +- .../comment/resolvers/comment.resolver.ts | 2 - .../services/comment-thread-target.service.ts | 32 +-- .../services/comment-thread.service.ts | 30 +-- .../core/comment/services/comment.service.ts | 30 +-- .../src/core/company/company.resolver.spec.ts | 15 +- server/src/core/company/company.resolver.ts | 6 - server/src/core/company/company.service.ts | 30 +-- .../src/core/person/person.resolver.spec.ts | 15 +- server/src/core/person/person.resolver.ts | 6 - server/src/core/person/person.service.ts | 30 +-- .../services/pipeline-progress.service.ts | 32 +-- .../services/pipeline-stage.service.ts | 30 +-- .../pipeline/services/pipeline.service.ts | 30 +-- server/src/core/user/user.service.ts | 32 +-- .../services/workspace-member.service.ts | 31 +-- .../workspace/services/workspace.service.ts | 30 +-- .../migration.sql | 14 ++ server/src/database/prisma.service.ts | 33 ++- server/src/database/schema.prisma | 15 +- server/src/database/seeds/comments.ts | 3 + .../guards/create-one-comment-thread.guard.ts | 106 --------- server/src/guards/create-one-comment.guard.ts | 72 ------ server/src/guards/create-one.guard.ts | 13 -- server/src/guards/delete-many.guard.ts | 13 -- server/src/guards/update-one.guard.ts | 50 ----- .../indicators/prisma-health-indicator.ts | 2 +- server/yarn.lock | 42 ++-- 69 files changed, 1192 insertions(+), 883 deletions(-) create mode 100644 front/src/modules/activities/components/CommentThreadEditor.tsx create mode 100644 server/src/ability/ability.util.ts create mode 100644 server/src/database/migrations/20230721141406_alter_table_comment_thread_target_add_workspace_id/migration.sql delete mode 100644 server/src/guards/create-one-comment-thread.guard.ts delete mode 100644 server/src/guards/create-one-comment.guard.ts delete mode 100644 server/src/guards/create-one.guard.ts delete mode 100644 server/src/guards/delete-many.guard.ts delete mode 100644 server/src/guards/update-one.guard.ts diff --git a/front/src/modules/activities/components/CommentThreadCreateButton.tsx b/front/src/modules/activities/components/CommentThreadCreateButton.tsx index 75e8d5788..fb6315936 100644 --- a/front/src/modules/activities/components/CommentThreadCreateButton.tsx +++ b/front/src/modules/activities/components/CommentThreadCreateButton.tsx @@ -1,6 +1,6 @@ import { useTheme } from '@emotion/react'; -import { Button } from '@/ui/button/components/Button'; +import { Button, ButtonVariant } from '@/ui/button/components/Button'; import { ButtonGroup } from '@/ui/button/components/ButtonGroup'; import { IconCheckbox, IconNotes, IconTimelineEvent } from '@/ui/icon/index'; @@ -17,7 +17,7 @@ export function CommentThreadCreateButton({ }: CommentThreadCreateButtonProps) { const theme = useTheme(); return ( - +