#### 自定义中间件的请求
import time
from django.utils.deprecation import MiddlewareMixin  #### 导入包文件
from django.http import JsonResponse

from DCbackend.utils.common import fail
from .models import *

API_WHITELIST = ["/user/login", "/user/create"]


#### 定义中间件的类方法
class Authorization(MiddlewareMixin):
    ### 前置拦截器，请求前触发的方法
    def process_request(self, request):
        try:
            #### 判断请求的如果不是登录的Api接口，判断token的内容
            if request.path not in API_WHITELIST:
                #### 获取token值
                token = request.POST.get("token")
                #### 没有传递token值
                if not token:
                    return fail("token无效")

                ### 通过token值获取用户的信息，判断token是否合理
                user = Admin.objects.filter(token=token).first()

                #### 没有token值
                if not user:
                    return fail("token已过期，或者用户不存在")
                request.session['user_id'] = user.id
                #### 判断用户的时间是否过期
                # if user.expired_at < time.time():
                #     return JsonResponse({
                #         'code': 401,
                #         'msg': 'token已经过期'
                #     })

        except Exception:
            return fail("token 无效")
