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,
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()
class Meta: # pylint: disable=too-few-public-methods
@@ -284,6 +285,7 @@ class ConfirmedEmail(BaseAccountModel):
self.digest = hashlib.md5(
self.email.strip().lower().encode('utf-8')
).hexdigest()
self.digest_sha256 = hashlib.sha256(self.email.strip().lower().encode('utf-8')).hexdigest()
return super().save(force_insert, force_update, using, update_fields)

View File

@@ -22,8 +22,9 @@ class AvatarImageView(TemplateView):
# Fetch by digest from mail
pass
elif len(kwargs['digest']) == 64:
# Fetch by digest from OpenID
model = ConfirmedOpenId
if model.objects.filter(digest=kwargs['digest']).count():
# Fetch by digest from OpenID
model = ConfirmedOpenId
else: # pragma: no cover
# We should actually never ever reach this code...
raise Exception('Digest provided is wrong: %s' % kwargs['digest'])
@@ -31,9 +32,12 @@ class AvatarImageView(TemplateView):
try:
obj = model.objects.get(digest=kwargs['digest'])
except ObjectDoesNotExist:
# TODO: Use default!?
raise Exception('Mail/openid ("%s") does not exist"' %
kwargs['digest'])
try:
obj = model.objects.get(digest_sha256=kwargs['digest'])
except ObjectDoesNotExist:
# TODO: Use default!?
raise Exception('Mail/openid ("%s") does not exist"' %
kwargs['digest'])
if not obj.photo:
# That is hacky, but achieves what we want :-)
attr = getattr(obj, 'email', obj.openid)