authentik.endpoints.api.stages

 1from django.utils.translation import gettext_lazy as _
 2from rest_framework.exceptions import ValidationError
 3from rest_framework.viewsets import ModelViewSet
 4
 5from authentik.core.api.used_by import UsedByMixin
 6from authentik.endpoints.api.connectors import ConnectorSerializer
 7from authentik.endpoints.controller import Capabilities
 8from authentik.endpoints.models import Connector, EndpointStage
 9from authentik.flows.api.stages import StageSerializer
10
11
12class EndpointStageSerializer(StageSerializer):
13    """EndpointStage Serializer"""
14
15    connector_obj = ConnectorSerializer(source="connector", read_only=True)
16
17    def validate_connector(self, connector: Connector) -> Connector:
18        conn: Connector = Connector.objects.get_subclass(pk=connector.pk)
19        controller = conn.controller(conn)
20        if Capabilities.STAGE_ENDPOINTS not in controller.capabilities():
21            raise ValidationError(_("Selected connector is not compatible with this stage."))
22        return connector
23
24    class Meta:
25        model = EndpointStage
26        fields = StageSerializer.Meta.fields + [
27            "connector",
28            "connector_obj",
29            "mode",
30        ]
31
32
33class EndpointStageViewSet(UsedByMixin, ModelViewSet):
34    """EndpointStage Viewset"""
35
36    queryset = EndpointStage.objects.all()
37    serializer_class = EndpointStageSerializer
38    filterset_fields = [
39        "name",
40    ]
41    search_fields = ["name"]
42    ordering = ["name"]
class EndpointStageSerializer(authentik.flows.api.stages.StageSerializer):
13class EndpointStageSerializer(StageSerializer):
14    """EndpointStage Serializer"""
15
16    connector_obj = ConnectorSerializer(source="connector", read_only=True)
17
18    def validate_connector(self, connector: Connector) -> Connector:
19        conn: Connector = Connector.objects.get_subclass(pk=connector.pk)
20        controller = conn.controller(conn)
21        if Capabilities.STAGE_ENDPOINTS not in controller.capabilities():
22            raise ValidationError(_("Selected connector is not compatible with this stage."))
23        return connector
24
25    class Meta:
26        model = EndpointStage
27        fields = StageSerializer.Meta.fields + [
28            "connector",
29            "connector_obj",
30            "mode",
31        ]

EndpointStage Serializer

connector_obj
def validate_connector( self, connector: authentik.endpoints.models.Connector) -> authentik.endpoints.models.Connector:
18    def validate_connector(self, connector: Connector) -> Connector:
19        conn: Connector = Connector.objects.get_subclass(pk=connector.pk)
20        controller = conn.controller(conn)
21        if Capabilities.STAGE_ENDPOINTS not in controller.capabilities():
22            raise ValidationError(_("Selected connector is not compatible with this stage."))
23        return connector
class EndpointStageSerializer.Meta:
25    class Meta:
26        model = EndpointStage
27        fields = StageSerializer.Meta.fields + [
28            "connector",
29            "connector_obj",
30            "mode",
31        ]
fields = ['pk', 'name', 'component', 'verbose_name', 'verbose_name_plural', 'meta_model_name', 'flow_set', 'connector', 'connector_obj', 'mode']
class EndpointStageViewSet(authentik.core.api.used_by.UsedByMixin, rest_framework.viewsets.ModelViewSet):
34class EndpointStageViewSet(UsedByMixin, ModelViewSet):
35    """EndpointStage Viewset"""
36
37    queryset = EndpointStage.objects.all()
38    serializer_class = EndpointStageSerializer
39    filterset_fields = [
40        "name",
41    ]
42    search_fields = ["name"]
43    ordering = ["name"]

EndpointStage Viewset

queryset = <InheritanceQuerySet []>
serializer_class = <class 'EndpointStageSerializer'>
filterset_fields = ['name']
search_fields = ['name']
ordering = ['name']
name = None
description = None
suffix = None
detail = None
basename = None