chore: roles demotion (#5612)
This commit is contained in:
parent
5ba1eeaf4c
commit
3ce84f78f1
2 changed files with 8 additions and 28 deletions
|
|
@ -164,7 +164,7 @@ class UserProjectInvitationsViewset(BaseViewSet):
|
||||||
ProjectMember(
|
ProjectMember(
|
||||||
project_id=project_id,
|
project_id=project_id,
|
||||||
member=request.user,
|
member=request.user,
|
||||||
role=15 if workspace_role >= 15 else 5,
|
role=workspace_role,
|
||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
created_by=request.user,
|
created_by=request.user,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ from plane.app.permissions import (
|
||||||
WorkSpaceAdminPermission,
|
WorkSpaceAdminPermission,
|
||||||
WorkspaceEntityPermission,
|
WorkspaceEntityPermission,
|
||||||
allow_permission,
|
allow_permission,
|
||||||
ROLE
|
ROLE,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
|
|
@ -44,7 +44,6 @@ class WorkSpaceMemberViewSet(BaseViewSet):
|
||||||
serializer_class = WorkspaceMemberAdminSerializer
|
serializer_class = WorkspaceMemberAdminSerializer
|
||||||
model = WorkspaceMember
|
model = WorkspaceMember
|
||||||
|
|
||||||
|
|
||||||
search_fields = [
|
search_fields = [
|
||||||
"member__display_name",
|
"member__display_name",
|
||||||
"member__first_name",
|
"member__first_name",
|
||||||
|
|
@ -96,9 +95,7 @@ class WorkSpaceMemberViewSet(BaseViewSet):
|
||||||
user=False,
|
user=False,
|
||||||
multiple=True,
|
multiple=True,
|
||||||
)
|
)
|
||||||
@allow_permission(
|
@allow_permission(allowed_roles=[ROLE.ADMIN], level="WORKSPACE")
|
||||||
allowed_roles=[ROLE.ADMIN], level="WORKSPACE"
|
|
||||||
)
|
|
||||||
def partial_update(self, request, slug, pk):
|
def partial_update(self, request, slug, pk):
|
||||||
workspace_member = WorkspaceMember.objects.get(
|
workspace_member = WorkspaceMember.objects.get(
|
||||||
pk=pk,
|
pk=pk,
|
||||||
|
|
@ -112,25 +109,10 @@ class WorkSpaceMemberViewSet(BaseViewSet):
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get the requested user role
|
if workspace_member.role > int(request.data.get("role")):
|
||||||
requested_workspace_member = WorkspaceMember.objects.get(
|
_ = ProjectMember.objects.filter(
|
||||||
workspace__slug=slug,
|
workspace__slug=slug, member_id=workspace_member.member_id
|
||||||
member=request.user,
|
).update(role=int(request.data.get("role")))
|
||||||
is_active=True,
|
|
||||||
)
|
|
||||||
# Check if role is being updated
|
|
||||||
# One cannot update role higher than his own role
|
|
||||||
if (
|
|
||||||
"role" in request.data
|
|
||||||
and int(request.data.get("role", workspace_member.role))
|
|
||||||
> requested_workspace_member.role
|
|
||||||
):
|
|
||||||
return Response(
|
|
||||||
{
|
|
||||||
"error": "You cannot update a role that is higher than your own role"
|
|
||||||
},
|
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
|
||||||
|
|
||||||
serializer = WorkSpaceMemberSerializer(
|
serializer = WorkSpaceMemberSerializer(
|
||||||
workspace_member, data=request.data, partial=True
|
workspace_member, data=request.data, partial=True
|
||||||
|
|
@ -151,9 +133,7 @@ class WorkSpaceMemberViewSet(BaseViewSet):
|
||||||
@invalidate_cache(
|
@invalidate_cache(
|
||||||
path="/api/users/me/workspaces/", user=False, multiple=True
|
path="/api/users/me/workspaces/", user=False, multiple=True
|
||||||
)
|
)
|
||||||
@allow_permission(
|
@allow_permission(allowed_roles=[ROLE.ADMIN], level="WORKSPACE")
|
||||||
allowed_roles=[ROLE.ADMIN], level="WORKSPACE"
|
|
||||||
)
|
|
||||||
def destroy(self, request, slug, pk):
|
def destroy(self, request, slug, pk):
|
||||||
# Check the user role who is deleting the user
|
# Check the user role who is deleting the user
|
||||||
workspace_member = WorkspaceMember.objects.get(
|
workspace_member = WorkspaceMember.objects.get(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue