Commit 2a094047 authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Reset password hashers cache on settings_changed.

parent ddfc7c25
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
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)