mirror of
https://git.linux-kernel.at/oliver/ivatar.git
synced 2025-11-18 14:08:04 +00:00
Hack in sha256 support - needs to be refactored
This commit is contained in:
23
ivatar/ivataraccount/migrations/0006_auto_20180626_1445.py
Normal file
23
ivatar/ivataraccount/migrations/0006_auto_20180626_1445.py
Normal 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),
|
||||
),
|
||||
]
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user