Don't change email until user confirms it
This commit is contained in:
parent
bb41f00451
commit
c920628574
18
apps/account/migrations/0009_user_unconfirmed_email.py
Normal file
18
apps/account/migrations/0009_user_unconfirmed_email.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-10-10 14:40
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('account', '0008_auto_20190912_1325'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='user',
|
||||||
|
name='unconfirmed_email',
|
||||||
|
field=models.EmailField(blank=True, default=None, max_length=254, null=True, verbose_name='unconfirmed email'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -60,6 +60,7 @@ class User(AbstractUser):
|
||||||
blank=True, null=True, default=None)
|
blank=True, null=True, default=None)
|
||||||
email = models.EmailField(_('email address'), blank=True,
|
email = models.EmailField(_('email address'), blank=True,
|
||||||
null=True, default=None)
|
null=True, default=None)
|
||||||
|
unconfirmed_email = models.EmailField(_('unconfirmed email'), blank=True, null=True, default=None)
|
||||||
email_confirmed = models.BooleanField(_('email status'), default=False)
|
email_confirmed = models.BooleanField(_('email status'), default=False)
|
||||||
newsletter = models.NullBooleanField(default=True)
|
newsletter = models.NullBooleanField(default=True)
|
||||||
|
|
||||||
|
|
@ -112,6 +113,8 @@ class User(AbstractUser):
|
||||||
|
|
||||||
def confirm_email(self):
|
def confirm_email(self):
|
||||||
"""Method to confirm user email address"""
|
"""Method to confirm user email address"""
|
||||||
|
self.email = self.unconfirmed_email
|
||||||
|
self.unconfirmed_email = None
|
||||||
self.email_confirmed = True
|
self.email_confirmed = True
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,9 +61,12 @@ class UserSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
"""Override update method"""
|
"""Override update method"""
|
||||||
|
old_email = instance.email
|
||||||
instance = super().update(instance, validated_data)
|
instance = super().update(instance, validated_data)
|
||||||
if 'email' in validated_data:
|
if 'email' in validated_data:
|
||||||
instance.email_confirmed = False
|
instance.email_confirmed = False
|
||||||
|
instance.email = old_email
|
||||||
|
instance.unconfirmed_email = validated_data['email']
|
||||||
instance.save()
|
instance.save()
|
||||||
# Send verification link on user email for change email address
|
# Send verification link on user email for change email address
|
||||||
if settings.USE_CELERY:
|
if settings.USE_CELERY:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user