def post(self, request, body_params): try: request_body = request.headers recv_token = request_body["Token"] login_type = request_body["platform"] if "platform" in request_body else 1 # 1是网页端 account = body_params['account'] password = body_params['password'] if recv_token == "none": # 不存在token才登录,“none”是前端兼容IE浏览器 user_m = Users.objects.filter(account=account).first() if user_m: if user_m.permission: # 验证是否允许登录 if user_m.authentication(password): # 验证密码 token = Tokens.objects.token_create(user_m.id, login_type) data = { "account": account, "userType": user_m.user_type, "name": user_m.name, "portrait": user_m.portrait, "token": token } return response_success(msg="登录成功", code=0, data=data) return response_failure(msg='密码错误,请重新输入', code=6) return response_failure(msg='用户被禁止登录', code=7) return response_failure(msg="账号不存在", code=5) return response_failure(msg="携带token登录", code=4) except BaseException as err: log.error(f"登录接口异常 {err}")
def in_fun(self, *request): request_method = None params = None for k, v in kwargs.items(): request_method = k params = v if request_method == "POST": request_post = request[0].POST p = {} for val in params: # 遍历客户端请求是否包含字段 param = request_post.get(val, None) if not param: return response_failure(msg=f'需要参数{val}', code=3) p[val] = param # 若包含则返回给被装饰的函数 return func(self, *request, p) if request_method == "POST_BODY": request_body = request[0].body if request_body: p = {} post_body = json.loads(request_body) for val in params: # 遍历客户端请求是否包含字段 try: find_flag = val.find(":?") if find_flag > 0: # 可选参数 val = val[:find_flag] if val in post_body.keys(): param = post_body[val] else: param = None else: param = post_body[val] p[val] = param # 若包含则返回给被装饰的函数 except: return response_failure(msg=f'需要参数{val}', code=3) return func(self, *request, p) return response_failure(msg=f'请携带参数请求', code=3) elif request_method in ["GET", "DELETE"]: request_get = request[0].GET p = {} for val in params: # 遍历客户端请求是否包含字段 if val not in request_get: return response_failure(msg=f'需要参数{val}', code=3) param = request_get.get(val, None) p[val] = param # 若包含则返回给被装饰的函数 return func(self, *request, p) else: return response_failure(msg=f'未知类型{request_method}', code=3)
def in_fun(*request): request_method = None params = None for k, v in kwargs.items(): request_method = k params = v if request_method == "POST": request_post = request[0].POST p = {} for val in params: # 遍历客户端请求是否包含字段 param = request_post.get(val, None) if not param: return response_failure(msg=f'需要参数{val}', code=3) if isinstance(param, str): param = param.strip() p[val] = param # 若包含则返回给被装饰的函数 return func(*request, p) if request_method == "POST_BODY": request_body = request[0].body if request_body: p = {} post_body = json.loads(request_body) for val in params: # 遍历客户端请求是否包含字段 try: param = post_body[val] if isinstance(param, str): param = param.strip() p[val] = param # 若包含则返回给被装饰的函数 except: return response_failure(msg=f'需要参数{val}', code=3) return func(*request, p) return response_failure(msg=f'请携带参数请求', code=3) elif request_method in ["GET", "DELETE"]: request_get = request[0].GET p = {} for val in params: # 遍历客户端请求是否包含字段 param = request_get.get(val, None) if not param: return response_failure(msg=f'需要参数{val}', code=3) if isinstance(param, str): param = param.strip() p[val] = param # 若包含则返回给被装饰的函数 return func(*request, p)
def wrapper(*args): try: headers = args[1].headers recv_token = headers["Token"] if recv_token: user_id = Tokens.objects.token_check(recv_token) if user_id: return func(*args, user_id) return JsonResponse({"code": 4001, "im": "token不存在或token过期"}) except KeyError: return response_failure(msg="缺少token", code=2)
def post(self, request, user_id, params): """ { "oldPassword":"******", "newPassword":"******" } """ try: user = Users.objects.filter(id=user_id).first() if user: if user.authentication(params["oldPassword"]): user.password = user.encryption(params["newPassword"]) user.save() return response_success(msg="密码修改成功", code=0) return response_failure(msg='旧密码错误,请重新输入', code=6) return user_does_not_exists() except BaseException as err: log.error(err) return view_exception()
def in_fun(*request): if request[0].method == request_method: return func(*request) else: return response_failure(msg=f"请求方式不是{request_method}", code=1)