Skip to content
Snippets Groups Projects
Verified Commit 29cceb86 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Allow configuring username regex

parent c66ada71
No related branches found
No related tags found
1 merge request!980Resolve "Add configurable username validator for signup"
Pipeline #56497 passed
......@@ -18,6 +18,7 @@ Added
* Create a reusable snippet for avatar content.
* Allow to configure if additional field is required
* Allow to configure description of additional fields
* Allow configuring regex for allowed usernames
Changed
~~~~~~~
......
......@@ -279,6 +279,14 @@ class SignupEnabled(BooleanPreference):
verbose_name = _("Enable signup")
@site_preferences_registry.register
class AllowedUsernameRegex(StringPreference):
section = auth
name = "allowed_username_regex"
default = ".+"
verbose_name = _("Regular expression for allowed usernames")
@site_preferences_registry.register
class InviteEnabled(BooleanPreference):
section = auth
......
......@@ -362,6 +362,9 @@ ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE = True
# Enforce uniqueness of email addresses
ACCOUNT_UNIQUE_EMAIL = _settings.get("auth.login.registration.unique_email", True)
# Configurable username validators
ACCOUNT_USERNAME_VALIDATORS = "aleksis.core.util.auth_helpers.custom_username_validators"
# Configuration for django-invitations
# Use custom account adapter
......
......@@ -3,6 +3,8 @@
from typing import Any, Optional
from django.conf import settings
from django.contrib.auth.validators import ASCIIUsernameValidator
from django.core.validators import RegexValidator
from django.http import HttpRequest
from allauth.account.adapter import DefaultAccountAdapter
......@@ -134,3 +136,11 @@ class ClientProtectedResourceMixin(_ClientProtectedResourceMixin):
required_scopes = set(self.get_scopes() or [])
allowed_scopes = set(AppScopes().get_available_scopes(oauth_request.client) or [])
return required_scopes.issubset(allowed_scopes)
def validate_username_preference_regex(value: str):
regex = get_site_preferences()["auth__allowed_username_regex"]
return RegexValidator(regex)(value)
custom_username_validators = [validate_username_preference_regex, ASCIIUsernameValidator()]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment