feat: Adds username validation in registration form

Introduces logic to clean and validate usernames by ensuring they remove the matrix domain prefix/suffix, are not empty, and contain only allowed characters. Enhances input validation for improved user error messaging.
This commit is contained in:
Kumi 2024-11-16 20:40:51 +01:00
parent 5bb74d5389
commit 61555f9e34
Signed by: kumi
GPG key ID: ECBCC9082395383F

View file

@ -1,4 +1,5 @@
from django import forms from django import forms
from django.conf import settings
class UsernameForm(forms.Form): class UsernameForm(forms.Form):
@ -9,6 +10,27 @@ class UsernameForm(forms.Form):
), ),
) )
def clean(self):
cleaned_data = super().clean()
username = cleaned_data.get("username")
if username.startswith("@") and username.endswith(f":{settings.MATRIX_DOMAIN}"):
username = username[1:-len(f":{settings.MATRIX_DOMAIN}")]
if not username:
self.add_error("username", "Username cannot be empty.")
if not all(
c in "abcdefghijklmnopqrstuvwxyz0123456789._=-" for c in username.lower()
):
self.add_error(
"username",
"Username can only contain the characters a-z, 0-9, ., _, =, -, and /.",
)
cleaned_data["username"] = username
return cleaned_data
class EmailForm(forms.Form): class EmailForm(forms.Form):
email = forms.EmailField( email = forms.EmailField(