* events: initial alerting implementation * policies: move error handling to process, ensure policy UUID is saved * policies: add tests for error handling in PolicyProcess * events: improve loop detection * events: add API for action and trigger * policies: ensure http_request is not used in context * events: adjust unittests for user handling * policies/event_matcher: add policy type * events: add API tests * events: add middleware tests * core: make application's provider not required * outposts: allow blank kubeconfig * outposts: validate kubeconfig before saving * api: fix formatting * stages/invitation: remove invitation_created signal as model_created functions the same * stages/invitation: ensure created_by is set when creating from API * events: rebase migrations on master * events: fix missing Alerts from API * policies: fix unittests * events: add tests for alerts * events: rename from alerting to notifications * events: add ability to specify severity of notification created * policies/event_matcher: Add app field to match on event app * policies/event_matcher: fix EventMatcher not being included in API * core: use objects.none() when get_queryset is used * events: use m2m for multiple transports, create notification object in task * events: add default triggers * events: fix migrations return value * events: fix notification_transport not being in the correct queue * stages/email: allow sending of email without backend * events: implement sending via webhook + slack/discord + email
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
"""User API Views"""
|
|
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
|
|
from rest_framework.serializers import (
|
|
BooleanField,
|
|
ModelSerializer,
|
|
SerializerMethodField,
|
|
)
|
|
from rest_framework.viewsets import ModelViewSet
|
|
|
|
from authentik.core.models import User
|
|
from authentik.lib.templatetags.authentik_utils import avatar
|
|
|
|
|
|
class UserSerializer(ModelSerializer):
|
|
"""User Serializer"""
|
|
|
|
is_superuser = BooleanField(read_only=True)
|
|
avatar = SerializerMethodField()
|
|
|
|
def get_avatar(self, user: User) -> str:
|
|
"""Add user's avatar as URL"""
|
|
return avatar(user)
|
|
|
|
class Meta:
|
|
|
|
model = User
|
|
fields = ["pk", "username", "name", "is_superuser", "email", "avatar"]
|
|
|
|
|
|
class UserViewSet(ModelViewSet):
|
|
"""User Viewset"""
|
|
|
|
queryset = User.objects.none()
|
|
serializer_class = UserSerializer
|
|
|
|
def get_queryset(self):
|
|
return User.objects.all().exclude(pk=get_anonymous_user().pk)
|
|
|
|
@swagger_auto_schema(responses={200: UserSerializer(many=False)})
|
|
@action(detail=False)
|
|
# pylint: disable=invalid-name
|
|
def me(self, request: Request) -> Response:
|
|
"""Get information about current user"""
|
|
return Response(UserSerializer(request.user).data)
|