This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
authentik/authentik/core/api/users.py

49 lines
1.4 KiB
Python
Raw Normal View History

2019-10-28 13:44:46 +00:00
"""User API Views"""
2020-11-23 10:49:09 +00:00
from drf_yasg2.utils import swagger_auto_schema
from guardian.utils import get_anonymous_user
from rest_framework.decorators import action
from rest_framework.request import Request
from rest_framework.response import Response
2020-11-22 18:36:40 +00:00
from rest_framework.serializers import (
BooleanField,
ModelSerializer,
SerializerMethodField,
)
from rest_framework.viewsets import ModelViewSet
2020-12-05 21:08:42 +00:00
from authentik.core.models import User
from authentik.lib.templatetags.authentik_utils import avatar
class UserSerializer(ModelSerializer):
2019-10-28 13:44:46 +00:00
"""User Serializer"""
is_superuser = BooleanField(read_only=True)
2020-11-22 18:36:40 +00:00
avatar = SerializerMethodField()
def get_avatar(self, user: User) -> str:
"""Add user's avatar as URL"""
return avatar(user)
class Meta:
model = User
2020-11-22 18:36:40 +00:00
fields = ["pk", "username", "name", "is_superuser", "email", "avatar"]
class UserViewSet(ModelViewSet):
2019-10-28 13:44:46 +00:00
"""User Viewset"""
2020-12-25 22:45:28 +00:00
queryset = User.objects.all()
serializer_class = UserSerializer
2020-12-25 22:45:28 +00:00
def get_queryset(self):
return User.objects.all().exclude(pk=get_anonymous_user().pk)
2020-11-23 10:49:09 +00:00
@swagger_auto_schema(responses={200: UserSerializer(many=False)})
@action(detail=False)
2020-11-22 18:36:40 +00:00
# pylint: disable=invalid-name
def me(self, request: Request) -> Response:
"""Get information about current user"""
return Response(UserSerializer(request.user).data)