52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
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")
|