From 5bddd53bd6e9db92ad503ee0860e21122d0a27da Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Tue, 26 Aug 2014 19:19:44 +0200 Subject: [PATCH] [Registration] check usernames when registering --- mygpo/users/views/registration.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mygpo/users/views/registration.py b/mygpo/users/views/registration.py index f5e4a643..8f222eab 100644 --- a/mygpo/users/views/registration.py +++ b/mygpo/users/views/registration.py @@ -1,6 +1,8 @@ import uuid +import re from django import forms +from django.core.validators import RegexValidator from django.db import IntegrityError, transaction from django.http import HttpResponseRedirect from django.views.generic.edit import FormView @@ -19,10 +21,21 @@ from mygpo.users.models import UserProxy USERNAME_MAXLEN = get_user_model()._meta.get_field('username').max_length +USERNAME_REGEX = re.compile(r'\w[\w.-]{2,}') + + +class UsernameValidator(RegexValidator): + """ Validates that a username uses only allowed characters """ + regex = USERNAME_REGEX + message = 'Invalid Username' + code='invalid-username' + class RegistrationForm(forms.Form): """ Form that is used to register a new user """ - username = forms.CharField(max_length=USERNAME_MAXLEN) + username = forms.CharField(max_length=USERNAME_MAXLEN, + validators=[UsernameValidator()], + ) email = forms.EmailField() password1 = forms.CharField(widget=forms.PasswordInput()) password2 = forms.CharField(widget=forms.PasswordInput()) -- 2.11.4.GIT