Fr3deric
6 years ago
6 changed files with 69 additions and 3 deletions
@ -1,3 +1,17 @@
@@ -1,3 +1,17 @@
|
||||
from django.contrib import admin |
||||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin |
||||
from django.contrib.auth.models import User |
||||
from .models import Account |
||||
|
||||
# Register your models here. |
||||
|
||||
class AccountInline(admin.StackedInline): |
||||
model = Account |
||||
can_delete = False |
||||
|
||||
|
||||
class UserAdmin(BaseUserAdmin): |
||||
inlines = (AccountInline,) |
||||
|
||||
|
||||
admin.site.unregister(User) |
||||
admin.site.register(User, UserAdmin) |
||||
|
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
import hashlib |
||||
from django.contrib.auth.forms import PasswordResetForm |
||||
from bam.models import Account |
||||
|
||||
|
||||
class HashedEmailPasswordResetForm(PasswordResetForm): |
||||
def get_users(self, email): |
||||
hashed_email = hashlib.sha256(bytes(email, 'utf-8')).hexdigest() |
||||
accounts = Account.objects.filter(hashed_email=hashed_email) |
||||
if accounts.count() > 0: |
||||
return (a.user for a in accounts if a.user.has_usable_password()) |
||||
else: |
||||
return super().get_users(email) |
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
# Generated by Django 2.2 on 2019-04-28 10:12 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Account', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('hashed_email', models.CharField(max_length=128)), |
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), |
||||
], |
||||
), |
||||
] |
@ -1,3 +1,10 @@
@@ -1,3 +1,10 @@
|
||||
from django.db import models |
||||
from django.contrib.auth.models import User |
||||
|
||||
# Create your models here. |
||||
|
||||
class Account(models.Model): |
||||
user = models.OneToOneField(User, on_delete=models.CASCADE) |
||||
hashed_email = models.CharField(max_length=128) |
||||
|
||||
def __str__(self): |
||||
return '%s' % (self.user.username) |
||||
|
Loading…
Reference in new issue