mirror of
https://github.com/AmanTahiliani/PeerNotes.git
synced 2026-08-07 11:55:12 -04:00
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
from api.serializers import LoginSerializer, UserSerializer
|
|
from django.contrib.auth import authenticate, get_user_model
|
|
from rest_framework import status
|
|
from rest_framework.authtoken.models import Token
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
|
|
|
|
def get_client_ip(request):
|
|
x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR")
|
|
if x_forwarded_for:
|
|
ip = x_forwarded_for.split(",")[0]
|
|
else:
|
|
ip = request.META.get("REMOTE_ADDR")
|
|
return ip
|
|
|
|
|
|
class LoginView(APIView):
|
|
def post(self, request):
|
|
serializer = LoginSerializer(data=request.data)
|
|
if serializer.is_valid():
|
|
username = serializer.validated_data["username"]
|
|
password = serializer.validated_data["password"]
|
|
user = authenticate(username=username, password=password)
|
|
if user:
|
|
token, _ = Token.objects.get_or_create(user=user)
|
|
return Response({"token": token.key})
|
|
else:
|
|
return Response(
|
|
{"error": "Invalid credentials"},
|
|
status=status.HTTP_401_UNAUTHORIZED,
|
|
)
|
|
else:
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
|
|
class SignupView(APIView):
|
|
def post(self, request):
|
|
serializer = UserSerializer(data=request.data)
|
|
if serializer.is_valid():
|
|
print(serializer.validated_data)
|
|
username = serializer.validated_data["username"]
|
|
email = serializer.validated_data["email"]
|
|
password = request.data["password"]
|
|
ip_address = get_client_ip(request)
|
|
print(email, username, password)
|
|
if get_user_model().objects.filter(username=username).exists():
|
|
return Response(
|
|
{"error": "Username already exists"},
|
|
status=status.HTTP_400_BAD_REQUEST,
|
|
)
|
|
|
|
user = get_user_model().objects.create_user(
|
|
username=username, email=email, password=password, ip_address=ip_address
|
|
)
|
|
|
|
return Response(
|
|
{"message": "User created successfully"}, status=status.HTTP_201_CREATED
|
|
)
|
|
else:
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|