login.py 4.25 KB
Newer Older
1 2 3 4 5 6 7 8
'''
Author: your name
Date: 2021-07-15 09:33:39
LastEditTime: 2021-07-22 09:26:14
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\views\login.py
'''
wanli's avatar
wanli committed
9 10 11
#!/usr/bin/env python
# -*- coding: utf_8 -*-

12
import traceback
wanli's avatar
wanli committed
13 14 15 16
from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
wanli's avatar
wanli committed
17
from marshmallow.exceptions import ValidationError
wanli's avatar
wanli committed
18
from application.signal_manager import signalManager
wanli's avatar
wanli committed
19
from models.login import  postLoginSchema, getListLoginSchema, getListLoginsSchema, getLoginSchema
wanli's avatar
wanli committed
20
from webcreator.log import logger
wanli's avatar
wanli committed
21 22
from webcreator.response import ResponseCode, response_result

wanli's avatar
wanli committed
23
class LoginResourceList(Resource):
wanli's avatar
wanli committed
24 25 26 27 28 29 30 31 32 33 34 35 36
    def __init__(self):
        pass
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser = RequestParser()

    def get(self):
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser.add_argument("page", type=int, location="args", default=1)
        # self.parser.add_argument("pageSize", type=int, location="args", default=15)
        # args = self.parser.parse_args()

        try:
            json_payload = request.json
wanli's avatar
wanli committed
37
            logger.warn(json_payload)
wanli's avatar
wanli committed
38
            data = getListLoginSchema.load(json_payload)
39
            result, message = signalManager.actionGetlistLogin.emit(data)
wanli's avatar
wanli committed
40
            json_dumps = getListLoginSchema.dump(result)
wanli's avatar
wanli committed
41 42 43 44 45 46
            if result:
                json_dumps = getListLoginsSchema.dump(result.items)
                return response_result(message, data=json_dumps, count=result.total)
            return response_result(message)
        except ValidationError as e:
            return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages)
wanli's avatar
wanli committed
47
        except Exception as e:
wanli's avatar
wanli committed
48 49 50
            data = None
            if hasattr(e, 'args'):
                data = e.args
wanli's avatar
wanli committed
51
            current_app.logger.error(e)
wanli's avatar
wanli committed
52
            return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
wanli's avatar
wanli committed
53

wanli's avatar
wanli committed
54 55 56 57
    def post(self):
        try:
            json_payload = request.json
            data = postLoginSchema.load(json_payload)
wanli's avatar
wanli committed
58 59
            # 更新data,插入ip信息,如果没有转发ip,那么则获取请求ip
            data.update({ "ip": request.headers.get('X-Forwarded-For', request.remote_addr), "user_agent": request.headers.get('User-Agent', "") })
60 61
            print("###############=======================>", data)
            logger.info(data)
wanli's avatar
wanli committed
62
            result, message = signalManager.actionPostLogin.emit(data)
63
            print(">>>>>>>>>>>", result)
wanli's avatar
wanli committed
64 65 66
            return response_result(message, data=result)
        except ValidationError as e:
            return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages)
wanli's avatar
wanli committed
67
        except Exception as e:
68
            traceback.print_exc()
wanli's avatar
wanli committed
69 70 71
            data = None
            if hasattr(e, 'args'):
                data = e.args
wanli's avatar
wanli committed
72
            current_app.logger.error(e)
73
            traceback.print_exc()
wanli's avatar
wanli committed
74
            return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
wanli's avatar
wanli committed
75 76


wanli's avatar
wanli committed
77
class LoginResource(Resource):
wanli's avatar
wanli committed
78 79 80 81 82
    def __init__(self):
        pass
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser = RequestParser()

83
    @jwt_required(locations=["headers"])
wanli's avatar
wanli committed
84
    def get(self, uuid):
wanli's avatar
wanli committed
85 86 87 88 89 90 91
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser.add_argument("page", type=int, location="args", default=1)
        # self.parser.add_argument("pageSize", type=int, location="args", default=15)
        # args = self.parser.parse_args()

        try:
            json_payload = request.json
wanli's avatar
wanli committed
92
            print("========>", uuid, json_payload)
wanli's avatar
wanli committed
93
            data = getLoginSchema.load(json_payload)
wanli's avatar
wanli committed
94 95 96 97 98
            result, message = signalManager.actionGetLogin.emit(uuid, data)
            if result:
                json_dumps = getLoginSchema.dump(result)
                return response_result(message, data=json_dumps)
            return response_result(message)
wanli's avatar
wanli committed
99 100
        except Exception as e:
            current_app.logger.error(e)
wanli's avatar
wanli committed
101
            return response_result(ResponseCode.HTTP_SERVER_ERROR)