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"]
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)
Inherited Members
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 ]
model =
<class 'authentik.stages.identification.models.IdentificationStage'>
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
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']