mirror of
https://github.com/thecyberlearn/netcop-ai.git
synced 2026-08-18 07:52:59 +00:00
Features: - Email-based user authentication with token auth - Stripe Checkout integration for wallet top-ups - n8n workflow triggering with automatic fee deduction ($0.10) - Comprehensive transaction and usage logging - Django Admin interface for monitoring - Rate limiting and security middleware - Production-ready deployment configuration - Modular settings (dev/prod environments) - UUID primary keys for enhanced security - Comprehensive test coverage 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
from rest_framework import status
|
|
from rest_framework.decorators import api_view, permission_classes
|
|
from rest_framework.permissions import AllowAny
|
|
from rest_framework.response import Response
|
|
from rest_framework.authtoken.models import Token
|
|
from django.contrib.auth import login
|
|
from .serializers import UserRegistrationSerializer, UserLoginSerializer, UserSerializer
|
|
|
|
|
|
@api_view(['POST'])
|
|
@permission_classes([AllowAny])
|
|
def register(request):
|
|
serializer = UserRegistrationSerializer(data=request.data)
|
|
if serializer.is_valid():
|
|
user = serializer.save()
|
|
token, created = Token.objects.get_or_create(user=user)
|
|
return Response({
|
|
'user': UserSerializer(user).data,
|
|
'token': token.key
|
|
}, status=status.HTTP_201_CREATED)
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
|
|
@api_view(['POST'])
|
|
@permission_classes([AllowAny])
|
|
def login_view(request):
|
|
serializer = UserLoginSerializer(data=request.data)
|
|
if serializer.is_valid():
|
|
user = serializer.validated_data['user']
|
|
login(request, user)
|
|
token, created = Token.objects.get_or_create(user=user)
|
|
return Response({
|
|
'user': UserSerializer(user).data,
|
|
'token': token.key
|
|
})
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
|
|
@api_view(['GET'])
|
|
def profile(request):
|
|
serializer = UserSerializer(request.user)
|
|
return Response(serializer.data)
|