feat(users): normalize email identity storage
This commit is contained in:
@@ -4,6 +4,7 @@ from drf_spectacular.utils import extend_schema_serializer
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.serializers.base import BaseModelSerializer
|
||||
from apps.users.email_identity import normalize_email_identity
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
@@ -186,6 +187,20 @@ class UserProfileSerializer(BaseModelSerializer):
|
||||
full_name = serializers.ReadOnlyField()
|
||||
age = serializers.ReadOnlyField()
|
||||
|
||||
def validate_email(self, value):
|
||||
normalized = normalize_email_identity(value)
|
||||
user = self.instance
|
||||
|
||||
if normalized is None:
|
||||
return None
|
||||
|
||||
existing = User.objects.filter(email=normalized)
|
||||
if user is not None:
|
||||
existing = existing.exclude(pk=user.pk)
|
||||
if existing.exists():
|
||||
raise serializers.ValidationError("A user with this email already exists.")
|
||||
return normalized
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = BaseModelSerializer.Meta.fields + (
|
||||
|
||||
Reference in New Issue
Block a user