from django.contrib.auth import authenticate, logout from rest_framework import generics, permissions from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.permissions import IsAuthenticated from rest_framework.authtoken.models import Token from profiles.models import Account from .serializers import RegisterSerializer class RegisterView(generics.CreateAPIView): serializer_class = RegisterSerializer def post(self, request): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) else: return Response(serializer.errors, status=400) class LoginView(APIView): def post(self, request): username = request.data.get('username') password = request.data.get('password') user = authenticate(username=username, password=password) if user is not None: token, _ = Token.objects.get_or_create(user=user) return Response({'token': token.key}) else: return Response({'message': 'Username atau password salah.'}, status=400) class LogoutView(generics.CreateAPIView): permission_classes = (IsAuthenticated,) def post(self, request): request.user.auth_token.delete() logout(request) return Response({'message': 'Berhasil log out.'}) class ForgotPasswordView(generics.GenericAPIView): permission_classes = (permissions.AllowAny,) def post(self, request, format=None): # Implementation for forgot password feature return Response("Forgot password implementation goes here")