|
@@ -17,6 +17,7 @@ from sentry.api.decorators import sudo_required
|
|
|
from sentry.api.serializers import serialize
|
|
|
from sentry.api.serializers.models.user import DetailedUserSerializer
|
|
|
from sentry.api.serializers.rest_framework import ListField
|
|
|
+from sentry.auth.superuser import is_active_superuser
|
|
|
from sentry.constants import LANGUAGES
|
|
|
from sentry.models import Organization, OrganizationMember, OrganizationStatus, User, UserOption
|
|
|
|
|
@@ -96,8 +97,15 @@ class UserSerializer(BaseUserSerializer):
|
|
|
return super().validate(attrs)
|
|
|
|
|
|
|
|
|
-class PrivilegedUserSerializer(BaseUserSerializer):
|
|
|
+class SuperuserUserSerializer(BaseUserSerializer):
|
|
|
isActive = serializers.BooleanField(source="is_active")
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ model = User
|
|
|
+ fields = ("name", "username", "isActive")
|
|
|
+
|
|
|
+
|
|
|
+class PrivilegedUserSerializer(SuperuserUserSerializer):
|
|
|
isStaff = serializers.BooleanField(source="is_staff")
|
|
|
isSuperuser = serializers.BooleanField(source="is_superuser")
|
|
|
|
|
@@ -144,6 +152,8 @@ class UserDetailsEndpoint(UserEndpoint):
|
|
|
|
|
|
if request.access.has_permission("users.admin"):
|
|
|
serializer_cls = PrivilegedUserSerializer
|
|
|
+ elif is_active_superuser(request):
|
|
|
+ serializer_cls = SuperuserUserSerializer
|
|
|
else:
|
|
|
serializer_cls = UserSerializer
|
|
|
serializer = serializer_cls(user, data=request.data, partial=True)
|