From 935b628b2007170f6630a9639937e6398dd3fbc9 Mon Sep 17 00:00:00 2001
From: chris <xjhmlcy@gmail.com>
Date: Thu, 6 Apr 2023 00:06:21 +0000
Subject: [PATCH] Add function of delete user.

---
 core/api/auth.py | 18 ++++++++++++++++--
 core/urls.py     |  3 ++-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/core/api/auth.py b/core/api/auth.py
index 269ac95..51f942a 100644
--- a/core/api/auth.py
+++ b/core/api/auth.py
@@ -6,8 +6,8 @@ import requests
 from django.contrib.auth.models import User
 from django.shortcuts import render
 from django.urls import reverse
-from rest_framework import generics, status, serializers, HTTP_HEADER_ENCODING
-from rest_framework.decorators import api_view, authentication_classes
+from rest_framework import generics, status, serializers, HTTP_HEADER_ENCODING, permissions
+from rest_framework.decorators import api_view, authentication_classes, permission_classes
 from rest_framework.response import Response
 from knox.auth import TokenAuthentication
 from knox.models import AuthToken
@@ -180,6 +180,20 @@ def validate_token(request):
         return Response({'valid': 'false'})
 
 
+@api_view(['DELETE'])
+@authentication_classes([])
+# @permission_classes([permissions.IsAuthenticated])
+def delete_account(request):
+    try:
+        authenticator = TokenAuthentication()
+        user, auth_token = authenticator.authenticate(request)
+        if user and auth_token:
+            user.delete()
+            return Response({'msg': 'Delete successfully.'})
+    except:
+        return Response({'msg': 'Failed to delete this account.'}, status=status.HTTP_401_UNAUTHORIZED)
+
+
 def verify_user_and_activate(request, token):
     try:
         auth = AuthToken.objects.filter(digest=token).first()
diff --git a/core/urls.py b/core/urls.py
index b8b9db7..bcf2c32 100644
--- a/core/urls.py
+++ b/core/urls.py
@@ -2,7 +2,7 @@ from django.urls import path, include
 from knox import views as knox_views
 from rest_framework import routers
 
-from core.api.auth import RegisterAPI, LoginAPI, AppleLogin, GoogleLogin, FacebookLogin, validate_token, verify_user_and_activate
+from core.api.auth import RegisterAPI, LoginAPI, AppleLogin, GoogleLogin, FacebookLogin, validate_token, delete_account, verify_user_and_activate
 from core.api.password import ChangePasswordView
 from core.api.profile import ProfileViewSet
 from core.api.coupon import CouponViewSet
@@ -24,6 +24,7 @@ urlpatterns += [
     path('api/auth/google', GoogleLogin.as_view(), name='google_login'),
     path('api/auth/facebook', FacebookLogin.as_view(), name='facebook_login'),
     path('api/auth/validate-token', validate_token, name='validate-token'),
+    path('api/auth/delete-account', delete_account, name='delete-account'),
     # passwd
     path('api/change-password', ChangePasswordView.as_view(), name='change-password'),
     path('api/password_reset/', include('django_rest_passwordreset.urls', namespace='password_reset')),
-- 
GitLab