authentik.stages.identification.api

Identification Stage API Views

 1"""Identification Stage API Views"""
 2
 3from django.utils.translation import gettext_lazy as _
 4from rest_framework.exceptions import ValidationError
 5from rest_framework.viewsets import ModelViewSet
 6
 7from authentik.core.api.used_by import UsedByMixin
 8from authentik.flows.api.stages import StageSerializer
 9from authentik.stages.identification.models import IdentificationStage
10
11
12class IdentificationStageSerializer(StageSerializer):
13    """IdentificationStage Serializer"""
14
15    def validate(self, attrs: dict) -> dict:
16        # Check that at least 1 source is selected when no user fields are selected.
17        sources = attrs.get("sources", [])
18        user_fields = attrs.get("user_fields", [])
19        if len(user_fields) < 1 and len(sources) < 1:
20            raise ValidationError(
21                _("When no user fields are selected, at least one source must be selected")
22            )
23        return super().validate(attrs)
24
25    class Meta:
26        model = IdentificationStage
27        fields = StageSerializer.Meta.fields + [
28            "user_fields",
29            "password_stage",
30            "captcha_stage",
31            "case_insensitive_matching",
32            "show_matched_user",
33            "enrollment_flow",
34            "recovery_flow",
35            "passwordless_flow",
36            "sources",
37            "show_source_labels",
38            "pretend_user_exists",
39            "enable_remember_me",
40            "webauthn_stage",
41        ]
42
43
44class IdentificationStageViewSet(UsedByMixin, ModelViewSet):
45    """IdentificationStage Viewset"""
46
47    queryset = IdentificationStage.objects.all()
48    serializer_class = IdentificationStageSerializer
49    filterset_fields = [
50        "name",
51        "password_stage",
52        "captcha_stage",
53        "webauthn_stage",
54        "case_insensitive_matching",
55        "show_matched_user",
56        "enrollment_flow",
57        "recovery_flow",
58        "passwordless_flow",
59        "show_source_labels",
60    ]
61    search_fields = ["name"]
62    ordering = ["name"]
class IdentificationStageSerializer(authentik.flows.api.stages.StageSerializer):
13class IdentificationStageSerializer(StageSerializer):
14    """IdentificationStage Serializer"""
15
16    def validate(self, attrs: dict) -> dict:
17        # Check that at least 1 source is selected when no user fields are selected.
18        sources = attrs.get("sources", [])
19        user_fields = attrs.get("user_fields", [])
20        if len(user_fields) < 1 and len(sources) < 1:
21            raise ValidationError(
22                _("When no user fields are selected, at least one source must be selected")
23            )
24        return super().validate(attrs)
25
26    class Meta:
27        model = IdentificationStage
28        fields = StageSerializer.Meta.fields + [
29            "user_fields",
30            "password_stage",
31            "captcha_stage",
32            "case_insensitive_matching",
33            "show_matched_user",
34            "enrollment_flow",
35            "recovery_flow",
36            "passwordless_flow",
37            "sources",
38            "show_source_labels",
39            "pretend_user_exists",
40            "enable_remember_me",
41            "webauthn_stage",
42        ]

IdentificationStage Serializer

def validate(self, attrs: dict) -> dict:
16    def validate(self, attrs: dict) -> dict:
17        # Check that at least 1 source is selected when no user fields are selected.
18        sources = attrs.get("sources", [])
19        user_fields = attrs.get("user_fields", [])
20        if len(user_fields) < 1 and len(sources) < 1:
21            raise ValidationError(
22                _("When no user fields are selected, at least one source must be selected")
23            )
24        return super().validate(attrs)
class IdentificationStageSerializer.Meta:
26    class Meta:
27        model = IdentificationStage
28        fields = StageSerializer.Meta.fields + [
29            "user_fields",
30            "password_stage",
31            "captcha_stage",
32            "case_insensitive_matching",
33            "show_matched_user",
34            "enrollment_flow",
35            "recovery_flow",
36            "passwordless_flow",
37            "sources",
38            "show_source_labels",
39            "pretend_user_exists",
40            "enable_remember_me",
41            "webauthn_stage",
42        ]
fields = ['pk', 'name', 'component', 'verbose_name', 'verbose_name_plural', 'meta_model_name', 'flow_set', 'user_fields', 'password_stage', 'captcha_stage', 'case_insensitive_matching', 'show_matched_user', 'enrollment_flow', 'recovery_flow', 'passwordless_flow', 'sources', 'show_source_labels', 'pretend_user_exists', 'enable_remember_me', 'webauthn_stage']
class IdentificationStageViewSet(authentik.core.api.used_by.UsedByMixin, rest_framework.viewsets.ModelViewSet):
45class IdentificationStageViewSet(UsedByMixin, ModelViewSet):
46    """IdentificationStage Viewset"""
47
48    queryset = IdentificationStage.objects.all()
49    serializer_class = IdentificationStageSerializer
50    filterset_fields = [
51        "name",
52        "password_stage",
53        "captcha_stage",
54        "webauthn_stage",
55        "case_insensitive_matching",
56        "show_matched_user",
57        "enrollment_flow",
58        "recovery_flow",
59        "passwordless_flow",
60        "show_source_labels",
61    ]
62    search_fields = ["name"]
63    ordering = ["name"]

IdentificationStage Viewset

queryset = <InheritanceQuerySet []>
serializer_class = <class 'IdentificationStageSerializer'>
filterset_fields = ['name', 'password_stage', 'captcha_stage', 'webauthn_stage', 'case_insensitive_matching', 'show_matched_user', 'enrollment_flow', 'recovery_flow', 'passwordless_flow', 'show_source_labels']
search_fields = ['name']
ordering = ['name']
name = None
description = None
suffix = None
detail = None
basename = None