forked from github/plane
dev: admin api to check if the current user is admin
This commit is contained in:
parent
44a3097ed1
commit
46e733a2c5
@ -4,6 +4,7 @@ from rest_framework import serializers
|
|||||||
# Module import
|
# Module import
|
||||||
from .base import BaseSerializer
|
from .base import BaseSerializer
|
||||||
from plane.db.models import User, Workspace, WorkspaceMemberInvite
|
from plane.db.models import User, Workspace, WorkspaceMemberInvite
|
||||||
|
from plane.license.models import InstanceAdmin, Instance
|
||||||
|
|
||||||
|
|
||||||
class UserSerializer(BaseSerializer):
|
class UserSerializer(BaseSerializer):
|
||||||
@ -86,7 +87,9 @@ class UserMeSettingsSerializer(BaseSerializer):
|
|||||||
"last_workspace_id": obj.last_workspace_id,
|
"last_workspace_id": obj.last_workspace_id,
|
||||||
"last_workspace_slug": workspace.slug if workspace is not None else "",
|
"last_workspace_slug": workspace.slug if workspace is not None else "",
|
||||||
"fallback_workspace_id": obj.last_workspace_id,
|
"fallback_workspace_id": obj.last_workspace_id,
|
||||||
"fallback_workspace_slug": workspace.slug if workspace is not None else "",
|
"fallback_workspace_slug": workspace.slug
|
||||||
|
if workspace is not None
|
||||||
|
else "",
|
||||||
"invites": workspace_invites,
|
"invites": workspace_invites,
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
|
@ -38,6 +38,15 @@ urlpatterns = [
|
|||||||
),
|
),
|
||||||
name="users",
|
name="users",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"users/me/instance-admin/",
|
||||||
|
UserEndpoint.as_view(
|
||||||
|
{
|
||||||
|
"get": "retrieve_instance_admin",
|
||||||
|
}
|
||||||
|
),
|
||||||
|
name="users",
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
"users/me/change-password/",
|
"users/me/change-password/",
|
||||||
ChangePasswordEndpoint.as_view(),
|
ChangePasswordEndpoint.as_view(),
|
||||||
|
@ -14,6 +14,7 @@ from plane.api.serializers import (
|
|||||||
|
|
||||||
from plane.api.views.base import BaseViewSet, BaseAPIView
|
from plane.api.views.base import BaseViewSet, BaseAPIView
|
||||||
from plane.db.models import User, IssueActivity, WorkspaceMember
|
from plane.db.models import User, IssueActivity, WorkspaceMember
|
||||||
|
from plane.license.models import Instance, InstanceAdmin
|
||||||
from plane.utils.paginator import BasePaginator
|
from plane.utils.paginator import BasePaginator
|
||||||
|
|
||||||
|
|
||||||
@ -35,12 +36,17 @@ class UserEndpoint(BaseViewSet):
|
|||||||
serialized_data = UserMeSettingsSerializer(request.user).data
|
serialized_data = UserMeSettingsSerializer(request.user).data
|
||||||
return Response(serialized_data, status=status.HTTP_200_OK)
|
return Response(serialized_data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
def retrieve_instance_admin(self, request):
|
||||||
|
instance = Instance.objects.first()
|
||||||
|
is_admin = InstanceAdmin.objects.filter(
|
||||||
|
instance=instance, user=request.user
|
||||||
|
).exists()
|
||||||
|
return Response({"is_instance_admin": is_admin}, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
def deactivate(self, request):
|
def deactivate(self, request):
|
||||||
# Check all workspace user is active
|
# Check all workspace user is active
|
||||||
user = self.get_object()
|
user = self.get_object()
|
||||||
if WorkspaceMember.objects.filter(
|
if WorkspaceMember.objects.filter(member=request.user, is_active=True).exists():
|
||||||
member=request.user, is_active=True
|
|
||||||
).exists():
|
|
||||||
return Response(
|
return Response(
|
||||||
{
|
{
|
||||||
"error": "User cannot deactivate account as user is active in some workspaces"
|
"error": "User cannot deactivate account as user is active in some workspaces"
|
||||||
|
Loading…
Reference in New Issue
Block a user