|
@@ -1,8 +1,99 @@
|
|
|
from django.shortcuts import render, HttpResponse
|
|
|
-from django.http import HttpRequest
|
|
|
+from django.http import HttpRequest, JsonResponse
|
|
|
|
|
|
+from django.views.decorators.http import require_POST, require_GET, require_http_methods
|
|
|
+from django.contrib.auth.models import User
|
|
|
+from django.contrib.auth import authenticate, login as auth_login, logout
|
|
|
+# from django.contrib.sessions import S
|
|
|
+# from django.contrib.auth.decorators import login_required
|
|
|
+import simplejson
|
|
|
+from messages import Messages
|
|
|
+from functools import wraps
|
|
|
|
|
|
-# Create your views here.
|
|
|
|
|
|
+# 装饰器 验证账号
|
|
|
+def login_required(view_func):
|
|
|
+ @wraps(view_func)
|
|
|
+ def wrapper(request, *args, **kwargs):
|
|
|
+ if request.user.is_authenticated:
|
|
|
+ return view_func(request, *args, **kwargs)
|
|
|
+ else:
|
|
|
+ return HttpResponse(status=401)
|
|
|
+
|
|
|
+ return wrapper
|
|
|
+
|
|
|
+
|
|
|
+# # 包装函数 装饰器
|
|
|
+# def request_methods(methods):
|
|
|
+# def method(func):
|
|
|
+# def wrapper(request, *args, **kwargs):
|
|
|
+# if request.method.lower() in methods:
|
|
|
+# ret = func(request, *args, **kwargs)
|
|
|
+# return ret
|
|
|
+# else:
|
|
|
+# return JsonResponse({}, status=405)
|
|
|
+# return wrapper
|
|
|
+# return method
|
|
|
+
|
|
|
+
|
|
|
+@require_POST
|
|
|
def reg(request: HttpRequest):
|
|
|
- return HttpResponse('hello')
|
|
|
+ try:
|
|
|
+ payload = simplejson.loads(request.body)
|
|
|
+ username = payload['username']
|
|
|
+ count = User.objects.filter(username=username).count()
|
|
|
+ if count > 0:
|
|
|
+ return JsonResponse(Messages.USER_EXISTS)
|
|
|
+ username = username
|
|
|
+ email = payload['email']
|
|
|
+ password = payload['password']
|
|
|
+ user = User.objects.create_user(username, email, password)
|
|
|
+ return JsonResponse({}, status=201)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return JsonResponse(Messages.BAD_REQUEST, status=200)
|
|
|
+
|
|
|
+
|
|
|
+@require_POST
|
|
|
+def user_login(request: HttpRequest):
|
|
|
+ try:
|
|
|
+ payload = simplejson.loads(request.body)
|
|
|
+ username = payload['username']
|
|
|
+ password = payload['password']
|
|
|
+ # 判断用户是否存在
|
|
|
+ user = authenticate(username=username, password=password)
|
|
|
+ if user is None:
|
|
|
+ return JsonResponse(Messages.USER_NOT_EXISTS)
|
|
|
+
|
|
|
+ auth_login(request, user)
|
|
|
+ session = request.session
|
|
|
+ session.set_expiry(30)
|
|
|
+ session['userinfo'] = {
|
|
|
+ 'id': request.user.id,
|
|
|
+ 'username': request.user.username
|
|
|
+ }
|
|
|
+ response = HttpResponse(status=204)
|
|
|
+ # response.set_cookie('username')
|
|
|
+ return response
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return JsonResponse({}, status=200)
|
|
|
+
|
|
|
+
|
|
|
+@login_required
|
|
|
+def user_login_out(request: HttpRequest):
|
|
|
+ logout(request)
|
|
|
+ return HttpResponse(status=302)
|
|
|
+
|
|
|
+
|
|
|
+class SimpleMiddleware:
|
|
|
+ def __init__(self, get_response):
|
|
|
+ self.get_response = get_response
|
|
|
+
|
|
|
+ def __call__(self, request):
|
|
|
+ response = self.get_response(request)
|
|
|
+
|
|
|
+ return response
|
|
|
+
|
|
|
+ def process_view(self, request, view_func, view_args, view_kwargs):
|
|
|
+ return None
|