ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: блокировка и удаление участников воркспейса в God Mode
This commit is contained in:
@@ -7,6 +7,7 @@ from rest_framework.permissions import BasePermission, SAFE_METHODS
|
||||
|
||||
# Module imports
|
||||
from plane.db.models import WorkspaceMember
|
||||
from plane.utils.workspace_bans import release_expired_workspace_bans
|
||||
|
||||
|
||||
# Permission Mappings
|
||||
@@ -15,6 +16,11 @@ Member = 15
|
||||
Guest = 5
|
||||
|
||||
|
||||
def release_request_workspace_ban(request, view):
|
||||
if hasattr(view, "workspace_slug") and view.workspace_slug:
|
||||
release_expired_workspace_bans(member=request.user, workspace_slug=view.workspace_slug)
|
||||
|
||||
|
||||
# TODO: Move the below logic to python match - python v3.10
|
||||
class WorkSpaceBasePermission(BasePermission):
|
||||
def has_permission(self, request, view):
|
||||
@@ -25,6 +31,8 @@ class WorkSpaceBasePermission(BasePermission):
|
||||
if request.method == "POST":
|
||||
return True
|
||||
|
||||
release_request_workspace_ban(request, view)
|
||||
|
||||
## Safe Methods
|
||||
if request.method in SAFE_METHODS:
|
||||
return True
|
||||
@@ -53,6 +61,8 @@ class WorkspaceOwnerPermission(BasePermission):
|
||||
if request.user.is_anonymous:
|
||||
return False
|
||||
|
||||
release_request_workspace_ban(request, view)
|
||||
|
||||
return WorkspaceMember.objects.filter(
|
||||
workspace__slug=view.workspace_slug, member=request.user, role=Admin
|
||||
).exists()
|
||||
@@ -63,6 +73,8 @@ class WorkSpaceAdminPermission(BasePermission):
|
||||
if request.user.is_anonymous:
|
||||
return False
|
||||
|
||||
release_request_workspace_ban(request, view)
|
||||
|
||||
return WorkspaceMember.objects.filter(
|
||||
member=request.user,
|
||||
workspace__slug=view.workspace_slug,
|
||||
@@ -76,6 +88,8 @@ class WorkspaceEntityPermission(BasePermission):
|
||||
if request.user.is_anonymous:
|
||||
return False
|
||||
|
||||
release_request_workspace_ban(request, view)
|
||||
|
||||
## Safe Methods -> Handle the filtering logic in queryset
|
||||
if request.method in SAFE_METHODS:
|
||||
return WorkspaceMember.objects.filter(
|
||||
@@ -95,6 +109,8 @@ class WorkspaceViewerPermission(BasePermission):
|
||||
if request.user.is_anonymous:
|
||||
return False
|
||||
|
||||
release_request_workspace_ban(request, view)
|
||||
|
||||
return WorkspaceMember.objects.filter(
|
||||
member=request.user, workspace__slug=view.workspace_slug, is_active=True
|
||||
).exists()
|
||||
@@ -105,6 +121,8 @@ class WorkspaceUserPermission(BasePermission):
|
||||
if request.user.is_anonymous:
|
||||
return False
|
||||
|
||||
release_request_workspace_ban(request, view)
|
||||
|
||||
return WorkspaceMember.objects.filter(
|
||||
member=request.user, workspace__slug=view.workspace_slug, is_active=True
|
||||
).exists()
|
||||
|
||||
Reference in New Issue
Block a user