authentik.enterprise.providers.ssf.views.base
1from django.http import Http404, HttpRequest 2from rest_framework.permissions import IsAuthenticated 3from rest_framework.views import APIView 4from structlog.stdlib import BoundLogger, get_logger 5 6from authentik.core.models import Application 7from authentik.enterprise.providers.ssf.models import SSFProvider, Stream, StreamStatus 8from authentik.enterprise.providers.ssf.views.auth import SSFTokenAuth 9 10 11class SSFView(APIView): 12 application: Application 13 provider: SSFProvider 14 logger: BoundLogger 15 16 permission_classes = [IsAuthenticated] 17 18 def setup(self, request: HttpRequest, *args, **kwargs) -> None: 19 self.logger = get_logger().bind() 20 super().setup(request, *args, **kwargs) 21 22 def get_authenticators(self): 23 return [SSFTokenAuth(self)] 24 25 26class SSFStreamView(SSFView): 27 def get_object(self, any_status=False) -> Stream: 28 streams = Stream.objects.filter(provider=self.provider) 29 if not any_status: 30 streams = streams.filter(status__in=[StreamStatus.ENABLED, StreamStatus.PAUSED]) 31 if "stream_id" in self.request.query_params: 32 streams = streams.filter(pk=self.request.query_params["stream_id"]) 33 if "stream_id" in self.request.data: 34 streams = streams.filter(pk=self.request.data["stream_id"]) 35 stream = streams.first() 36 if not stream: 37 raise Http404() 38 return stream
class
SSFView(rest_framework.views.APIView):
12class SSFView(APIView): 13 application: Application 14 provider: SSFProvider 15 logger: BoundLogger 16 17 permission_classes = [IsAuthenticated] 18 19 def setup(self, request: HttpRequest, *args, **kwargs) -> None: 20 self.logger = get_logger().bind() 21 super().setup(request, *args, **kwargs) 22 23 def get_authenticators(self): 24 return [SSFTokenAuth(self)]
Intentionally simple parent class for all views. Only implements dispatch-by-method and simple sanity checking.
application: authentik.core.models.Application
27class SSFStreamView(SSFView): 28 def get_object(self, any_status=False) -> Stream: 29 streams = Stream.objects.filter(provider=self.provider) 30 if not any_status: 31 streams = streams.filter(status__in=[StreamStatus.ENABLED, StreamStatus.PAUSED]) 32 if "stream_id" in self.request.query_params: 33 streams = streams.filter(pk=self.request.query_params["stream_id"]) 34 if "stream_id" in self.request.data: 35 streams = streams.filter(pk=self.request.data["stream_id"]) 36 stream = streams.first() 37 if not stream: 38 raise Http404() 39 return stream
Intentionally simple parent class for all views. Only implements dispatch-by-method and simple sanity checking.
28 def get_object(self, any_status=False) -> Stream: 29 streams = Stream.objects.filter(provider=self.provider) 30 if not any_status: 31 streams = streams.filter(status__in=[StreamStatus.ENABLED, StreamStatus.PAUSED]) 32 if "stream_id" in self.request.query_params: 33 streams = streams.filter(pk=self.request.query_params["stream_id"]) 34 if "stream_id" in self.request.data: 35 streams = streams.filter(pk=self.request.data["stream_id"]) 36 stream = streams.first() 37 if not stream: 38 raise Http404() 39 return stream