From 7c6a7d2b93a78a3ce35af29ef45568333bf981da Mon Sep 17 00:00:00 2001 From: ruthus18 Date: Thu, 31 Aug 2017 22:12:14 +0700 Subject: [PATCH] Update regex for 'unblock_username_view'. (#100) The reason why we need to handle almost all special symbols is in cases when username is like 'some!username' Issue: #76 --- CHANGES | 4 ++++ defender/tests.py | 8 ++++++++ defender/urls.py | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 8e78f1f..11e11d0 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +0.5.2 +==== +* Fix regex in 'unblock_username_view' to handle special symbols [@ruthus18] + 0.5.1 ===== - Middleware fix for django >= 1.10 #93 [@Temeez] diff --git a/defender/tests.py b/defender/tests.py index bb62c26..18a7475 100644 --- a/defender/tests.py +++ b/defender/tests.py @@ -570,6 +570,14 @@ class AccessAttemptTest(DefenderTestCase): reverse('defender_unblock_username_view', kwargs={'username': 'user+test@test.tld'}) + def test_unblock_view_user_with_special_symbols(self): + """ + There is an available admin view for unblocking a user + with a exclamation mark sign in the username. + """ + reverse('defender_unblock_username_view', + kwargs={'username': 'user!test@test.tld'}) + def test_decorator_middleware(self): # because watch_login is called twice in this test (once by the # middleware and once by the decorator) we have half as many attempts diff --git a/defender/urls.py b/defender/urls.py index c808029..bfce50a 100644 --- a/defender/urls.py +++ b/defender/urls.py @@ -6,7 +6,7 @@ urlpatterns = [ name="defender_blocks_view"), url(r'^blocks/ip/(?P[A-Za-z0-9-._]+)/unblock$', unblock_ip_view, name="defender_unblock_ip_view"), - url(r'^blocks/username/(?P[A-Za-z0-9-._@\+]+)/unblock$', + url(r'^blocks/username/(?P[\w]+[^\/]*)/unblock$', unblock_username_view, name="defender_unblock_username_view"), ]