diff --git a/apiserver/plane/app/views/page/base.py b/apiserver/plane/app/views/page/base.py index 24ceb2d3f1a..46ce81ce179 100644 --- a/apiserver/plane/app/views/page/base.py +++ b/apiserver/plane/app/views/page/base.py @@ -114,7 +114,7 @@ def get_queryset(self): .distinct() ) - @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) + @allow_permission([ROLE.ADMIN, ROLE.MEMBER]) def create(self, request, slug, project_id): serializer = PageSerializer( data=request.data, @@ -134,7 +134,7 @@ def create(self, request, slug, project_id): return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) + @allow_permission([ROLE.ADMIN, ROLE.MEMBER]) def partial_update(self, request, slug, project_id, pk): try: page = Page.objects.get( @@ -234,7 +234,7 @@ def retrieve(self, request, slug, project_id, pk=None): ) return Response(data, status=status.HTTP_200_OK) - @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) + @allow_permission([ROLE.ADMIN], model=Page, creator=True) def lock(self, request, slug, project_id, pk): page = Page.objects.filter( pk=pk, workspace__slug=slug, projects__id=project_id @@ -244,7 +244,7 @@ def lock(self, request, slug, project_id, pk): page.save() return Response(status=status.HTTP_204_NO_CONTENT) - @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) + @allow_permission([ROLE.ADMIN], model=Page, creator=True) def unlock(self, request, slug, project_id, pk): page = Page.objects.filter( pk=pk, workspace__slug=slug, projects__id=project_id @@ -255,7 +255,7 @@ def unlock(self, request, slug, project_id, pk): return Response(status=status.HTTP_204_NO_CONTENT) - @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) + @allow_permission([ROLE.ADMIN], model=Page, creator=True) def access(self, request, slug, project_id, pk): access = request.data.get("access", 0) page = Page.objects.filter( @@ -296,7 +296,7 @@ def list(self, request, slug, project_id): pages = PageSerializer(queryset, many=True).data return Response(pages, status=status.HTTP_200_OK) - @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) + @allow_permission([ROLE.ADMIN], model=Page, creator=True) def archive(self, request, slug, project_id, pk): page = Page.objects.get(pk=pk, workspace__slug=slug, projects__id=project_id) @@ -323,7 +323,7 @@ def archive(self, request, slug, project_id, pk): return Response({"archived_at": str(datetime.now())}, status=status.HTTP_200_OK) - @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) + @allow_permission([ROLE.ADMIN], model=Page, creator=True) def unarchive(self, request, slug, project_id, pk): page = Page.objects.get(pk=pk, workspace__slug=slug, projects__id=project_id) @@ -348,7 +348,7 @@ def unarchive(self, request, slug, project_id, pk): return Response(status=status.HTTP_204_NO_CONTENT) - @allow_permission([ROLE.ADMIN], creator=True, model=Page) + @allow_permission([ROLE.ADMIN], model=Page, creator=True) def destroy(self, request, slug, project_id, pk): page = Page.objects.get(pk=pk, workspace__slug=slug, projects__id=project_id) diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx index e696a08f4c2..d3646b31b8b 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/header.tsx @@ -13,9 +13,7 @@ import { BreadcrumbLink, Logo } from "@/components/common"; // constants import { EPageAccess } from "@/constants/page"; // hooks -import { useEventTracker, useProject, useProjectPages, useUserPermissions } from "@/hooks/store"; -// plane web hooks -import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions"; +import { useEventTracker, useProject, useProjectPages } from "@/hooks/store"; export const PagesListHeader = observer(() => { // states @@ -26,16 +24,9 @@ export const PagesListHeader = observer(() => { const searchParams = useSearchParams(); const pageType = searchParams.get("type"); // store hooks - const { allowPermissions } = useUserPermissions(); - const { currentProjectDetails, loader } = useProject(); - const { createPage } = useProjectPages(); + const { canCurrentUserCreatePage, createPage } = useProjectPages(); const { setTrackElement } = useEventTracker(); - // auth - const canUserCreatePage = allowPermissions( - [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST], - EUserPermissionsLevel.PROJECT - ); // handle page create const handleCreatePage = async () => { setIsCreatingPage(true); @@ -87,7 +78,7 @@ export const PagesListHeader = observer(() => { - {canUserCreatePage ? ( + {canCurrentUserCreatePage ? (