Hack in sha256 support - needs to be refactored

This commit is contained in:
Oliver Falk
2018-06-26 16:55:14 +02:00
parent 32eb5afc26
commit a641c08961
3 changed files with 35 additions and 6 deletions

View File

@@ -0,0 +1,23 @@
# Generated by Django 2.0.6 on 2018-06-26 14:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ivataraccount', '0005_auto_20180522_1155'),
]
operations = [
migrations.AddField(
model_name='confirmedemail',
name='digest_sha256',
field=models.CharField(max_length=64, null=True),
),
migrations.AlterField(
model_name='confirmedemail',
name='digest',
field=models.CharField(max_length=32),
),
]

View File

@@ -259,7 +259,8 @@ class ConfirmedEmail(BaseAccountModel):
null=True, null=True,
on_delete=models.deletion.CASCADE, on_delete=models.deletion.CASCADE,
) )
digest = models.CharField(max_length=64) digest = models.CharField(max_length=32)
digest_sha256 = models.CharField(max_length=64, null=True)
objects = ConfirmedEmailManager() objects = ConfirmedEmailManager()
class Meta: # pylint: disable=too-few-public-methods class Meta: # pylint: disable=too-few-public-methods
@@ -284,6 +285,7 @@ class ConfirmedEmail(BaseAccountModel):
self.digest = hashlib.md5( self.digest = hashlib.md5(
self.email.strip().lower().encode('utf-8') self.email.strip().lower().encode('utf-8')
).hexdigest() ).hexdigest()
self.digest_sha256 = hashlib.sha256(self.email.strip().lower().encode('utf-8')).hexdigest()
return super().save(force_insert, force_update, using, update_fields) return super().save(force_insert, force_update, using, update_fields)

View File

@@ -22,6 +22,7 @@ class AvatarImageView(TemplateView):
# Fetch by digest from mail # Fetch by digest from mail
pass pass
elif len(kwargs['digest']) == 64: elif len(kwargs['digest']) == 64:
if model.objects.filter(digest=kwargs['digest']).count():
# Fetch by digest from OpenID # Fetch by digest from OpenID
model = ConfirmedOpenId model = ConfirmedOpenId
else: # pragma: no cover else: # pragma: no cover
@@ -30,6 +31,9 @@ class AvatarImageView(TemplateView):
try: try:
obj = model.objects.get(digest=kwargs['digest']) obj = model.objects.get(digest=kwargs['digest'])
except ObjectDoesNotExist:
try:
obj = model.objects.get(digest_sha256=kwargs['digest'])
except ObjectDoesNotExist: except ObjectDoesNotExist:
# TODO: Use default!? # TODO: Use default!?
raise Exception('Mail/openid ("%s") does not exist"' % raise Exception('Mail/openid ("%s") does not exist"' %