From 1343d04fa7a21ddaaf122c4c7ff9f9acbd2c6d18 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Wed, 10 Sep 2025 17:59:46 +0500 Subject: [PATCH] fix --- core/apps/accounts/serializers/user.py | 18 ++++++++++++++++++ core/apps/accounts/views/user.py | 20 ++++++++++++++++++++ core/apps/admin_panel/serializers/user.py | 3 --- 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 core/apps/accounts/serializers/user.py create mode 100644 core/apps/accounts/views/user.py diff --git a/core/apps/accounts/serializers/user.py b/core/apps/accounts/serializers/user.py new file mode 100644 index 0000000..279e2a7 --- /dev/null +++ b/core/apps/accounts/serializers/user.py @@ -0,0 +1,18 @@ +from rest_framework import serializers + +from core.apps.accounts.models import User + + +class CustomUserLoginSerializer(serializers.Serializer): + username = serializers.CharField() + password = serializers.CharField() + tg_id = serializers.CharField() + + def validate(self, data): + user = User.objects.filter(username=data['username']).first() + if not user: + raise serializers.ValidationError("User not found") + user.tg_id = data['tg_id'] + user.save() + data['user'] = user + return data \ No newline at end of file diff --git a/core/apps/accounts/views/user.py b/core/apps/accounts/views/user.py new file mode 100644 index 0000000..b4e9345 --- /dev/null +++ b/core/apps/accounts/views/user.py @@ -0,0 +1,20 @@ +from rest_framework import generics +from rest_framework.response import Response + +from rest_framework_simplejwt.tokens import RefreshToken + +from ..serializers.user import CustomUserLoginSerializer +from core.apps.accounts.models import User + + +class UserLoginApiView(generics.GenericAPIView): + serializer_class = CustomUserLoginSerializer + queryset = User.objects.all() + + def post(self, request): + serializer = self.serializer_class(data=request.data) + if serializer.is_valid(): + user = serializer.validated_data.get('user') + token = RefreshToken.for_user(user) + return Response({'access': str(token.access_token), 'refresh': str(token)}) + return Response(data=serializer.errors) \ No newline at end of file diff --git a/core/apps/admin_panel/serializers/user.py b/core/apps/admin_panel/serializers/user.py index 35ac890..01e6a5a 100644 --- a/core/apps/admin_panel/serializers/user.py +++ b/core/apps/admin_panel/serializers/user.py @@ -44,13 +44,10 @@ class UserSerializer(serializers.ModelSerializer): class UserLoginSerializer(serializers.Serializer): username = serializers.CharField() password = serializers.CharField() - tg_id = serializers.CharField() def validate(self, data): user = User.objects.filter(username=data['username'], is_superuser=True).first() if not user: raise serializers.ValidationError("User not found") - user.tg_id = data['tg_id'] - user.save() data['user'] = user return data \ No newline at end of file