authentik.enterprise.stages.source.api
Source Stage API Views
1"""Source Stage API Views""" 2 3from rest_framework.exceptions import ValidationError 4from rest_framework.viewsets import ModelViewSet 5 6from authentik.core.api.used_by import UsedByMixin 7from authentik.core.models import Source 8from authentik.enterprise.api import EnterpriseRequiredMixin 9from authentik.enterprise.stages.source.models import SourceStage 10from authentik.flows.api.stages import StageSerializer 11 12 13class SourceStageSerializer(EnterpriseRequiredMixin, StageSerializer): 14 """SourceStage Serializer""" 15 16 def validate_source(self, _source: Source) -> Source: 17 """Ensure configured source supports web-based login""" 18 source = Source.objects.filter(pk=_source.pk).select_subclasses().first() 19 if not source: 20 raise ValidationError("Invalid source") 21 if "request" in self.context: 22 login_button = source.ui_login_button(self.context["request"]) 23 if not login_button: 24 raise ValidationError( 25 "Invalid source selected, only web-based sources are supported." 26 ) 27 return source 28 29 class Meta: 30 model = SourceStage 31 fields = StageSerializer.Meta.fields + ["source", "resume_timeout"] 32 33 34class SourceStageViewSet(UsedByMixin, ModelViewSet): 35 """SourceStage Viewset""" 36 37 queryset = SourceStage.objects.all() 38 serializer_class = SourceStageSerializer 39 filterset_fields = "__all__" 40 ordering = ["name"] 41 search_fields = ["name"]
class
SourceStageSerializer(authentik.enterprise.api.EnterpriseRequiredMixin, authentik.flows.api.stages.StageSerializer):
14class SourceStageSerializer(EnterpriseRequiredMixin, StageSerializer): 15 """SourceStage Serializer""" 16 17 def validate_source(self, _source: Source) -> Source: 18 """Ensure configured source supports web-based login""" 19 source = Source.objects.filter(pk=_source.pk).select_subclasses().first() 20 if not source: 21 raise ValidationError("Invalid source") 22 if "request" in self.context: 23 login_button = source.ui_login_button(self.context["request"]) 24 if not login_button: 25 raise ValidationError( 26 "Invalid source selected, only web-based sources are supported." 27 ) 28 return source 29 30 class Meta: 31 model = SourceStage 32 fields = StageSerializer.Meta.fields + ["source", "resume_timeout"]
SourceStage Serializer
17 def validate_source(self, _source: Source) -> Source: 18 """Ensure configured source supports web-based login""" 19 source = Source.objects.filter(pk=_source.pk).select_subclasses().first() 20 if not source: 21 raise ValidationError("Invalid source") 22 if "request" in self.context: 23 login_button = source.ui_login_button(self.context["request"]) 24 if not login_button: 25 raise ValidationError( 26 "Invalid source selected, only web-based sources are supported." 27 ) 28 return source
Ensure configured source supports web-based login
Inherited Members
class
SourceStageSerializer.Meta:
30 class Meta: 31 model = SourceStage 32 fields = StageSerializer.Meta.fields + ["source", "resume_timeout"]
model =
<class 'authentik.enterprise.stages.source.models.SourceStage'>
class
SourceStageViewSet(authentik.core.api.used_by.UsedByMixin, rest_framework.viewsets.ModelViewSet):
35class SourceStageViewSet(UsedByMixin, ModelViewSet): 36 """SourceStage Viewset""" 37 38 queryset = SourceStage.objects.all() 39 serializer_class = SourceStageSerializer 40 filterset_fields = "__all__" 41 ordering = ["name"] 42 search_fields = ["name"]
SourceStage Viewset
serializer_class =
<class 'SourceStageSerializer'>