summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2012-04-30 21:35:04 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2012-04-30 22:10:27 +0300
commit2a09404792f9d369718143fdfbe9530fe2e60912 (patch)
tree6f37bd02c64dff33cfb07a2979dd374f8529f67e
parentddfc7c2530197112fb105b6dd237574bc2fd6b49 (diff)
Reset password hashers cache on settings_changed.
-rw-r--r--django/contrib/auth/hashers.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/django/contrib/auth/hashers.py b/django/contrib/auth/hashers.py
index 58246852a8..52d204cce6 100644
--- a/django/contrib/auth/hashers.py
+++ b/django/contrib/auth/hashers.py
@@ -1,6 +1,8 @@
import hashlib
+from django.dispatch import receiver
from django.conf import settings
+from django.test.signals import setting_changed
from django.utils import importlib
from django.utils.datastructures import SortedDict
from django.utils.encoding import smart_str
@@ -14,6 +16,13 @@ UNUSABLE_PASSWORD = '!' # This will never be a valid encoded hash
HASHERS = None # lazily loaded from PASSWORD_HASHERS
PREFERRED_HASHER = None # defaults to first item in PASSWORD_HASHERS
+@receiver(setting_changed)
+def reset_hashers(**kwargs):
+ if kwargs['setting'] == 'PASSWORD_HASHERS':
+ global HASHERS, PREFERRED_HASHER
+ HASHERS = None
+ PREFERRED_HASHER = None
+
def is_password_usable(encoded):
return (encoded is not None and encoded != UNUSABLE_PASSWORD)