Skip to content
This repository was archived by the owner on May 5, 2020. It is now read-only.

Commit d02a40e

Browse files
committed
fix: Increase default length of login codes
1 parent 8e8cfc7 commit d02a40e

File tree

5 files changed

+12
-6
lines changed

5 files changed

+12
-6
lines changed

docs/changelog.rst

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
Changelog
22
=========
33

4+
4.0.1
5+
-----
6+
7+
Set the default length of codes to 64. The setting ``NOPASSWORD_CODE_LENGTH`` is considered
8+
deprecated.
9+
410
4.0.0
511
-----
612

docs/settings.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ django-nopassword settings
2626

2727
.. attribute:: NOPASSWORD_CODE_LENGTH
2828

29-
Default: ``20``
29+
Default: ``64``
3030

3131
The length of the code used to log people in.
3232

nopassword/models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ def create_code_for_user(cls, user, next=None):
3131
if not user.is_active:
3232
return None
3333

34-
code = cls.generate_code(length=getattr(settings, 'NOPASSWORD_CODE_LENGTH', 20))
34+
code = cls.generate_code(length=getattr(settings, 'NOPASSWORD_CODE_LENGTH', 64))
3535
login_code = LoginCode(user=user, code=code)
3636
if next is not None:
3737
login_code.next = next
3838
login_code.save()
3939
return login_code
4040

4141
@classmethod
42-
def generate_code(cls, length=20):
42+
def generate_code(cls, length=64):
4343
hash_algorithm = getattr(settings, 'NOPASSWORD_HASH_ALGORITHM', 'sha256')
4444
m = getattr(hashlib, hash_algorithm)()
4545
m.update(getattr(settings, 'SECRET_KEY', None).encode('utf-8'))

tests/test_backends.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class TwilioBackendTests(TestCase):
2828
def setUp(self):
2929
self.user = get_user_model().objects.create(username='twilio_user')
3030
self.code = LoginCode.create_code_for_user(self.user, next='/secrets/')
31-
self.assertEqual(len(self.code.code), 20)
31+
self.assertEqual(len(self.code.code), 64)
3232
self.assertIsNotNone(authenticate(username=self.user.username, code=self.code.code))
3333

3434
@patch('nopassword.backends.sms.TwilioRestClient')

tests/test_models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def setUp(self):
1717
self.code = LoginCode.create_code_for_user(self.user)
1818

1919
def test_login_backend(self):
20-
self.assertEqual(len(self.code.code), 20)
20+
self.assertEqual(len(self.code.code), 64)
2121
self.assertIsNotNone(authenticate(username=self.user.username, code=self.code.code))
2222
self.assertIsNone(LoginCode.create_code_for_user(self.inactive_user))
2323

@@ -29,7 +29,7 @@ def test_shorter_code(self):
2929
@override_settings(NOPASSWORD_NUMERIC_CODES=True)
3030
def test_numeric_code(self):
3131
code = LoginCode.create_code_for_user(self.user)
32-
self.assertEqual(len(code.code), 20)
32+
self.assertEqual(len(code.code), 64)
3333
self.assertTrue(code.code.isdigit())
3434

3535
def test_next_value(self):

0 commit comments

Comments
 (0)