Files
digest_app/module_auth/api/serializers.py

110 lines
4.0 KiB
Python
Raw Normal View History

from django.contrib.auth import authenticate
2024-02-26 13:28:32 +05:30
from django.contrib.auth.hashers import make_password
from rest_framework import serializers
from rest_framework.validators import UniqueValidator
2024-02-26 13:28:32 +05:30
from module_iam.models import IAmPrincipal
from module_project import constants
# class BasePasswordSerializer(serializers.Serializer):
# confirm_password = serializers.CharField(write_only=True, required=True)
# def validate(self, attrs):
# password = attrs.get("password")
# confirm_password = attrs.pop("confirm_password")
# if password != confirm_password:
# raise serializers.ValidationError({'password': constants.PASSWORD_NOT_MATCH})
# return super().validate(attrs)
# def update(self, instance, validate_data):
# new_password = validate_data.get("password")
# if new_password:
# instance.password = make_password(new_password)
# instance.save()
# return instance
class RegistrationSerializer(serializers.ModelSerializer):
email = serializers.EmailField(
required=True,
validators=[UniqueValidator(queryset=IAmPrincipal.objects.all(), message="This email address is already in use.")]
)
2024-02-26 13:28:32 +05:30
password = serializers.CharField(write_only=True, required=True)
confirm_password = serializers.CharField(write_only=True, required=True)
class Meta:
model = IAmPrincipal
fields = [
"first_name",
"email",
"phone_no",
"password",
"confirm_password",
"player_id",
]
def validate(self, attrs):
email = attrs.get("email")
phone_no = attrs.get("phone_no")
password = attrs.get("password")
confirm_password = attrs.get("confirm_password")
if password != confirm_password:
raise serializers.ValidationError({'password': constants.PASSWORD_NOT_MATCH})
obj = self.Meta.model.objects.filter(email=email).first()
if obj:
raise serializers.ValidationError({"email": constants.EMAIL_EXISTS})
return attrs
def create(self, validated_data):
del validated_data['confirm_password']
validated_data["username"] = validated_data["email"]
validated_data["password"] = make_password(validated_data["password"])
principal = self.Meta.model.objects.create(**validated_data)
return principal
def update(self, instance, validated_data):
# update prinicpal instance fiedls based on the validation data
instance.first_name = validated_data.get("first_name", instance.first_name)
instance.email = validated_data.get("email", instance.email)
instance.username = validated_data.get("email", instance.email)
instance.save()
return instance
class LoginSerializer(serializers.Serializer):
email = serializers.EmailField(write_only=True, required=True)
password = serializers.CharField(write_only=True, required=True)
player_id = serializers.CharField(write_only=True, required=True)
class OtpVerificationSerializer(serializers.Serializer):
email = serializers.EmailField(write_only=True, required=True)
otp = serializers.IntegerField(write_only=True, required=True)
class PasswordResetSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True, required=True)
confirm_password = serializers.CharField(write_only=True, required=True)
class Meta:
model = IAmPrincipal
fields = [
"password",
"confirm_password"
]
def validate(self, attrs):
password = attrs.get("password")
confirm_password = attrs.get("confirm_password")
if password != confirm_password:
raise serializers.ValidationError({'password': constants.PASSWORD_NOT_MATCH})
return super().validate(attrs)
def update(self, instance, validate_data):
new_password = validate_data.get("password")
if new_password:
instance.password = make_password(new_password)
instance.save()
return instance