tahamajs/RR / Codes /django_api /api /auth_views.py
tahamajs's picture
download
raw
1.73 kB
# backend/api/auth_views.py
import django
django.setup()
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token # ← correct DRF Token
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
@api_view(["POST"])
@permission_classes([AllowAny])
def register_view(request):
username = request.data.get("username")
password = request.data.get("password")
if not username or not password:
return Response({"error": "Username and password required"}, status=400)
if User.objects.filter(username=username).exists():
return Response({"error": "Username already taken"}, status=400)
user = User.objects.create_user(username=username, password=password)
token = Token.objects.create(user=user)
return Response({"token": token.key, "username": user.username}, status=201)
@api_view(["POST"])
@permission_classes([AllowAny])
def login_view(request):
username = request.data.get("username")
password = request.data.get("password")
user = authenticate(request, username=username, password=password)
if user is not None:
token, _ = Token.objects.get_or_create(user=user)
return Response({"token": token.key, "username": user.username})
return Response({"error": "Invalid credentials"}, status=401)
@api_view(["POST"])
def logout_view(request):
auth_header = request.headers.get("Authorization", "")
if auth_header.startswith("Token "):
key = auth_header[6:]
Token.objects.filter(key=key).delete()
return Response({"status": "logged out"})

Xet Storage Details

Size:
1.73 kB
·
Xet hash:
de73d45dd0f37f10a0f2bab665f6650c07e31e3f9986eb79f21148879eea0d63

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.