change: change loginserializer

This commit is contained in:
behruz-dev
2025-08-30 16:41:44 +05:00
parent 08e6bf695d
commit 0e52537b89
4 changed files with 33 additions and 6 deletions

View File

@@ -22,6 +22,11 @@ class User(AbstractUser, BaseModel):
def __str__(self):
return self.email
def save(self, *args, **kwargs):
if self.email:
self.email = self.email.lower()
return super().save(*args, **kwargs)
class Meta:
verbose_name = 'foydalanuvchi'
verbose_name_plural = 'foydalanuvchilar'

View File

@@ -1,4 +1,7 @@
from django.db import transaction
from django.contrib.auth import authenticate
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework import serializers
@@ -35,7 +38,6 @@ class ConfirmUserSerializer(serializers.Serializer):
if User.objects.filter(email=data['email']).exists():
raise serializers.ValidationError('User with this email already exists')
user_data = get_user_credentials(email=data.get('email'))
print(user_data)
if not user_data:
raise serializers.ValidationError("User with this email not found")
confirm_data = get_user_confirmation_code(data['email'], data['code'])
@@ -56,3 +58,20 @@ class ConfirmUserSerializer(serializers.Serializer):
user.save()
return user
class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
username_field = "email"
def validate(self, attrs):
email = attrs.get("email", "").lower()
password = attrs.get("password")
user = authenticate(
request=self.context.get("request"),
email=email,
password=password
)
if not user:
raise serializers.ValidationError("Invalid email or password")
attrs["email"] = email
return super().validate(attrs)

View File

@@ -1,11 +1,9 @@
from django.urls import path, include
from rest_framework_simplejwt.views import TokenObtainPairView
from core.apps.accounts import views
urlpatterns = [
path('login/', TokenObtainPairView.as_view()),
path('login/', views.CustomTokenObtainPairView.as_view()),
path('register/', views.RegisterApiView.as_view()),
path('confirm_user/', views.ConfirmUserApiView.as_view()),
]

View File

@@ -4,6 +4,7 @@ from rest_framework import generics, views
from rest_framework.response import Response
from rest_framework_simplejwt.tokens import RefreshToken
from rest_framework_simplejwt.views import TokenObtainPairView
from core.apps.accounts import serializers
from core.apps.accounts import models
@@ -52,3 +53,7 @@ class ConfirmUserApiView(generics.GenericAPIView):
{'success': False, 'error_message': serializer.errors},
status=400
)
class CustomTokenObtainPairView(TokenObtainPairView):
serializer_class = serializers.CustomTokenObtainPairSerializer