Files
store-api/authentication/views.py
2024-03-06 01:46:56 +03:00

41 lines
1.3 KiB
Python

import jwt
from django.conf import settings
from django.contrib import auth
from rest_framework import status
from rest_framework.generics import GenericAPIView
from rest_framework.response import Response
from .serializers import LoginSerializer, UserSerializer
class RegisterView(GenericAPIView):
serializer_class = UserSerializer
def post(self, request):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class LoginView(GenericAPIView):
serializer_class = LoginSerializer
def post(self, request):
data = request.data
username = data.get("username", "")
password = data.get("password", "")
user = auth.authenticate(username=username, password=password)
if user:
auth_token = jwt.encode({"username": user.username}, settings.JWT_SECRET_KEY)
serializer = UserSerializer(user)
data = {"user": serializer.data, "token": auth_token}
return Response(data, status=status.HTTP_200_OK)
return Response({"detail": "Inavalid credentials"}, status=status.HTTP_401_UNAUTHORIZED)