✅ core/models.py
from django.db import models
from django.utils import timezone
class User(models.Model):
deviceId = models.CharField(max_length=255)
phoneNumber = models.CharField(max_length=255)
status = models.CharField(max_length=255, default='inactive')
createdAt = models.DateTimeField(default=timezone.now)
updatedAt = models.DateTimeField(default=timezone.now)
def __str__(self):
return f"{self.deviceId} ({self.phoneNumber})"
✅ core/serializers.py
from rest_framework import serializers
from .models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
✅ core/views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import User
from .serializers import UserSerializer
class AuthenticateUserView(APIView):
def post(self, request):
device_id = request.data.get('deviceId')
phone_number = request.data.get('phoneNumber')
if not device_id or not phone_number:
return Response({'error': 'deviceId and phoneNumber required'}, status=status.HTTP_400_BAD_REQUEST)
user, created = User.objects.get_or_create(
deviceId=device_id,
defaults={'phoneNumber': phone_number}
)
if not created and user.phoneNumber != phone_number:
return Response({'error': 'Wrong phone number'}, status=status.HTTP_401_UNAUTHORIZED)
return Response({'message': 'Authenticated', 'user': UserSerializer(user).data})
class UserListView(APIView):
def get(self, request):
users = User.objects.all()
return Response(UserSerializer(users, many=True).data)
✅ core/urls.py
from django.urls import path
from .views import AuthenticateUserView, UserListView
urlpatterns = [
path('users/authenticate/', AuthenticateUserView.as_view()),
path('users/', UserListView.as_view()),
]