stages/prompt: fix username field throwing error with existing user (#9342)
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
@ -150,22 +150,26 @@ class PromptChallengeResponse(ChallengeResponse):
|
||||
return attrs
|
||||
|
||||
|
||||
def username_field_validator_factory() -> Callable[[PromptChallenge, str], Any]:
|
||||
def username_field_validator_factory() -> Callable[[PromptChallengeResponse, str], Any]:
|
||||
"""Return a `clean_` method for `field`. Clean method checks if username is taken already."""
|
||||
|
||||
def username_field_validator(_: PromptChallenge, value: str) -> Any:
|
||||
def username_field_validator(self: PromptChallengeResponse, value: str) -> Any:
|
||||
"""Check for duplicate usernames"""
|
||||
if User.objects.filter(username=value).exists():
|
||||
pending_user = self.stage.get_pending_user()
|
||||
query = User.objects.all()
|
||||
if pending_user.pk:
|
||||
query = query.exclude(username=pending_user.username)
|
||||
if query.filter(username=value).exists():
|
||||
raise ValidationError("Username is already taken.")
|
||||
return value
|
||||
|
||||
return username_field_validator
|
||||
|
||||
|
||||
def password_single_validator_factory() -> Callable[[PromptChallenge, str], Any]:
|
||||
def password_single_validator_factory() -> Callable[[PromptChallengeResponse, str], Any]:
|
||||
"""Return a `clean_` method for `field`. Clean method checks if username is taken already."""
|
||||
|
||||
def password_single_clean(self: PromptChallenge, value: str) -> Any:
|
||||
def password_single_clean(self: PromptChallengeResponse, value: str) -> Any:
|
||||
"""Send password validation signals for e.g. LDAP Source"""
|
||||
password_validate.send(sender=self, password=value, plan_context=self.plan.context)
|
||||
return value
|
||||
|
@ -16,7 +16,7 @@ entries:
|
||||
placeholder: Username
|
||||
placeholder_expression: false
|
||||
required: true
|
||||
type: text
|
||||
type: username
|
||||
field_key: username
|
||||
label: Username
|
||||
identifiers:
|
||||
|
Reference in New Issue
Block a user