Reverting back to admin pages as login and updates in the mobile api
This commit is contained in:
107
mobile_api/views/user.py
Normal file
107
mobile_api/views/user.py
Normal file
@@ -0,0 +1,107 @@
|
||||
# accounts/views.py
|
||||
import json
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.http import JsonResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
from rest_framework.authtoken.models import Token
|
||||
from mobile_api.forms import RegisterForm, LoginForm
|
||||
from rest_framework.authentication import TokenAuthentication
|
||||
from django.contrib.auth import logout
|
||||
from mobile_api.utils import validate_token_and_get_user
|
||||
from utils.errors_json_convertor import simplify_form_errors
|
||||
|
||||
|
||||
@method_decorator(csrf_exempt, name='dispatch')
|
||||
class RegisterView(View):
|
||||
def post(self, request):
|
||||
try:
|
||||
data = json.loads(request.body)
|
||||
form = RegisterForm(data)
|
||||
if form.is_valid():
|
||||
user = form.save()
|
||||
token, _ = Token.objects.get_or_create(user=user)
|
||||
return JsonResponse({'message': 'User registered successfully', 'token': token.key}, status=201)
|
||||
return JsonResponse({'errors': form.errors}, status=400)
|
||||
except Exception as e:
|
||||
return JsonResponse({'error': str(e)}, status=500)
|
||||
|
||||
|
||||
@method_decorator(csrf_exempt, name='dispatch')
|
||||
class LoginView(View):
|
||||
def post(self, request):
|
||||
print('0')
|
||||
try:
|
||||
data = json.loads(request.body)
|
||||
form = LoginForm(data)
|
||||
print('1')
|
||||
if form.is_valid():
|
||||
print('2')
|
||||
user = form.cleaned_data['user']
|
||||
token, _ = Token.objects.get_or_create(user=user)
|
||||
print('3')
|
||||
response = {
|
||||
'message': 'Login successful',
|
||||
'token': token.key,
|
||||
'username': user.username,
|
||||
'email': user.email,
|
||||
'phone_number': user.phone_number,
|
||||
'first_name': user.first_name,
|
||||
'last_name': user.last_name,
|
||||
'role': user.role,
|
||||
'pincode': user.pincode,
|
||||
'district': user.district,
|
||||
'state': user.state,
|
||||
'country': user.country,
|
||||
'place': user.place,
|
||||
'latitude': user.latitude,
|
||||
'longitude': user.longitude,
|
||||
}
|
||||
print('4')
|
||||
print(response)
|
||||
return JsonResponse(response, status=200)
|
||||
|
||||
return JsonResponse(simplify_form_errors(form), status=401)
|
||||
except Exception as e:
|
||||
return JsonResponse({'error': str(e)}, status=500)
|
||||
|
||||
|
||||
@method_decorator(csrf_exempt, name='dispatch')
|
||||
class StatusView(View):
|
||||
def post(self, request):
|
||||
try:
|
||||
user, token, data, error_response = validate_token_and_get_user(request, error_status_code=True)
|
||||
if error_response:
|
||||
return error_response
|
||||
|
||||
return JsonResponse({
|
||||
"status": "logged_in",
|
||||
"username": user.username,
|
||||
"email": user.email
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
||||
|
||||
|
||||
@method_decorator(csrf_exempt, name='dispatch')
|
||||
class LogoutView(View):
|
||||
def post(self, request):
|
||||
try:
|
||||
user, token, data, error_response = validate_token_and_get_user(request, error_status_code=True)
|
||||
if error_response:
|
||||
return error_response
|
||||
|
||||
# 🔍 Call Django's built-in logout
|
||||
logout(request)
|
||||
|
||||
# 🗑 Delete the token to invalidate future access
|
||||
token.delete()
|
||||
|
||||
return JsonResponse({
|
||||
"status": "logged_out",
|
||||
"message": "Logout successful"
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
||||
Reference in New Issue
Block a user