Files
eimzo/core/apps/accounts/views/auth.py

32 lines
1.1 KiB
Python

from django.contrib.auth import get_user_model
from rest_framework import generics, status, views
from rest_framework.response import Response
from rest_framework_simplejwt.tokens import RefreshToken
from drf_spectacular.utils import extend_schema
from core.apps.accounts.serializers import auth as auth_serializer
User = get_user_model()
@extend_schema(tags=['auth'])
class LoginApiView(generics.GenericAPIView):
serializer_class = auth_serializer.LoginSerializer
queryset = User.objects.all()
permission_classes = []
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid(raise_exception=True):
user = serializer.validated_data.get('user')
tokens = RefreshToken.for_user(user)
return Response({'access_token': str(tokens.access_token), 'refresh_token': str(tokens), 'role': user.role}, status=status.HTTP_200_OK)
@extend_schema(tags=['auth'])
class RegisterApiView(generics.CreateAPIView):
serializer_class = auth_serializer.RegisterSerializer
queryset = User.objects.all()
permission_classes = []