Blinkenbunt Account Manager
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import hashlib
|
|
|
|
from django.contrib.auth.forms import PasswordResetForm
|
|
|
|
from django.contrib.auth.hashers import check_password
|
|
|
|
from django import forms
|
|
|
|
from django.utils.translation import gettext, gettext_lazy as _
|
|
|
|
from .models import Account
|
|
|
|
|
|
|
|
|
|
|
|
class HashedEmailPasswordResetForm(PasswordResetForm):
|
|
|
|
username = forms.CharField(label=_('Username'), max_length=254)
|
|
|
|
|
|
|
|
def get_users(self, email):
|
|
|
|
accounts = Account.objects.filter(
|
|
|
|
user__username=self.cleaned_data['username']
|
|
|
|
)
|
|
|
|
return (a.user for a in accounts if a.user.has_usable_password() and
|
|
|
|
(check_password(email, a.hashed_email)
|
|
|
|
or a.user.email == email))
|