Exemplo n.º 1
0
    def user_logout(self, login_id) -> dict:
        self.login_mutex_.acquire()
        u_uuid = ''
        if login_id not in self.login_user_.keys():
            msg = "用户未登录"
            logger_manager.insert(user_id=login_id,
                                  login_type='offline',
                                  time=datetime.now(),
                                  msg=msg,
                                  u_uuid="")
            self.login_mutex_.release()
            return {
                'code': errtypes.HttpResponseCode_UserNotLogin,
                'msg': errtypes.HttpResponseCodeMsg_UserExisted
            }

        u_uuid = copy.deepcopy(self.login_user_[login_id].u_uuid)
        del self.login_user_[login_id]
        self.login_mutex_.release()

        msg = "注销登录,通知用户下线"
        socketio_agent_center.post_msg_to_room(
            {
                'code': errtypes.HttpResponseCode_Loginout,
                'uuid': u_uuid
            },
            room_identify=u_uuid)
        #logger_manager.insert(user_id = login_id,login_type='offline',time =datetime.now(),msg=msg,u_uuid=u_uuid)

        return {'code': 0, 'msg': 'success'}
Exemplo n.º 2
0
    def user_login(self, user_name=None, pwd=None) -> dict:

        #step 1: 验证登录有效性
        self.login_mutex_.acquire()
        user_obj = user_cls(user_name, pwd)
        user_id = user_obj.login()
        if -1 == user_id:
            self.login_mutex_.release()
            msg = "密码错误"
            #logger_manager.insert(user_id = user_id,login_type='online',time =datetime.now(),msg=msg,u_uuid='123')
            return {
                'code': errtypes.HttpResponseCode_InvaildUserOrPwd,
                'msg': errtypes.HttpResponseCodeMsg_InvaildUserOrPwd
            }
        if -2 == user_id:
            self.login_mutex_.release()
            msg = "sql error"
            #logger_manager.insert(user_id = user_id,login_type='online',time =datetime.now(),msg=msg,u_uuid='123')
            return {
                'code': errtypes.HttpResponseCode_Sqlerror,
                'msg': errtypes.HttpResponseCodeMsg_Sqlerror
            }
        #step 2: 检查踢人
        if user_id in self.login_user_.keys():
            tmp = self.login_user_[user_id].u_uuid
            msg = "该用户已在另一地点登录,请重新登录!"
            socketio_agent_center.post_msg_to_room(
                {
                    'code': errtypes.HttpResponseCode_UserOffline,
                    'uuid': tmp
                },
                room_identify=tmp)
            #logger_manager.insert(user_id = user_id,login_type='offline',time =datetime.now(),msg=msg,u_uuid=tmp)

        #step 3:更新用户uuid
        new_uuid = uuid.uuid4().__str__()
        user_obj.u_uuid = new_uuid
        token = self.generate_auth_token(user_id)
        user_obj.token = token

        self.login_user_[user_id] = user_obj

        self.login_mutex_.release()

        msg = "登录成功"
        #logger_manager.insert(user_id = user_id,login_type='online',time =datetime.now(),msg=msg,u_uuid=new_uuid)
        return {
            'code': 0,
            'msg': 'success',
            'data': {
                'uuid': new_uuid,
                'login_token': token.decode('utf-8')
            }
        }
Exemplo n.º 3
0
    def reset_permission(self, login_id, target_id, permission):
        if ROOT_ID != login_id:
            return {
                'code': errtypes.HttpResponseCode_PermissionDenied,
                'msg': errtypes.HttpResponseCodeMsg_PermissionDenied
            }

        ret = user.reset_permission(target_id, permission)
        if (-1 == ret):
            return {
                'code': errtypes.HttpResponseCode_UserNotExisted,
                'msg': errtypes.HttpResponseCodeMsg_UserNotExisted
            }
        if (-2 == ret):
            return {
                'code': errtypes.HttpResponseCode_Sqlerror,
                'msg': errtypes.HttpResponseCodeMsg_Sqlerror
            }

        self.login_mutex_.acquire()
        u_uuid = ''
        if target_id in self.login_user_.keys():
            u_uuid = copy.deepcopy(self.login_user_[target_id].u_uuid)
            del self.login_user_[target_id]
            msg = "该账号信息已被修改,请重新登录!"
            socketio_agent_center.post_msg_to_room(
                {
                    'code': errtypes.HttpResponseCode_RootOper,
                    'msg': msg,
                    'uuid': u_uuid
                },
                room_identify=u_uuid)
            #logger_manager.insert(user_id = target_id,login_type='offline',time =datetime.now(),msg=msg,u_uuid=u_uuid)
        self.login_mutex_.release()

        msg = "修改权限成功"
        logger_manager.insert(user_id=target_id,
                              login_type='offline',
                              time=datetime.now(),
                              msg=msg,
                              u_uuid=u_uuid)
        return {'code': ret, 'msg': 'success'}
Exemplo n.º 4
0
    def update_pwd(self, login_id, pwd, new_pwd):
        ret = user.update_pwd(login_id, pwd, new_pwd)
        if (-1 == ret):
            return {
                'code': errtypes.HttpResponseCode_UserNotExisted,
                'msg': errtypes.HttpResponseCodeMsg_UserNotExisted
            }
        if (-2 == ret):
            return {
                'code': errtypes.HttpResponseCode_InvaildUserOrPwd,
                'msg': errtypes.HttpResponseCodeMsg_InvaildUserOrPwd
            }
        if (-3 == ret):
            return {
                'code': errtypes.HttpResponseCode_Sqlerror,
                'msg': errtypes.HttpResponseCodeMsg_Sqlerror
            }

        self.login_mutex_.acquire()
        u_uuid = ''
        if login_id in self.login_user_.keys():
            u_uuid = copy.deepcopy(self.login_user_[login_id].u_uuid)
            del self.login_user_[login_id]
            socketio_agent_center.post_msg_to_room(
                {
                    'code': errtypes.HttpResponseCode_UpdatePWD,
                    'uuid': u_uuid
                },
                room_identify=u_uuid)
        self.login_mutex_.release()

        msg = "更新密码成功,请重新登录!"
        logger_manager.insert(user_id=login_id,
                              login_type='offline',
                              time=datetime.now(),
                              msg=msg,
                              u_uuid=u_uuid)
        return {'code': ret, 'msg': 'success'}
Exemplo n.º 5
0
    def verify_auth_token(self, token, user_uuid):
        # step 1: 验证token
        s = Serializer(config.SECRET_KEY)
        user_id = 0
        try:
            data = s.loads(token)
            user_id = data['id']
            ret_id = user.is_exist_id(user_id)
            if -1 == ret_id:
                return {
                    'code': errtypes.HttpResponseCode_UserNotExisted,
                    'msg': errtypes.HttpResponseCodeMsg_UserNotExisted,
                    'data': {
                        'token': token
                    }
                }
            if -2 == ret_id:
                return {
                    'code': errtypes.HttpResponseCode_Sqlerror,
                    'msg': errtypes.HttpResponseCodeMsg_Sqlerror,
                    'data': {
                        'token': token
                    }
                }

        except SignatureExpired:
            msg = "登录信息已过期,请重新登录!"
            logger_manager.insert(user_id=user_id,
                                  login_type='online',
                                  time=datetime.now(),
                                  msg=msg,
                                  u_uuid=user_uuid)
            return {
                'code': errtypes.HttpResponseCode_TimeoutToken,
                'msg': errtypes.HttpResponseCodeMsg_TimeoutToken,
                'data': {
                    'token': token
                }
            }
        except BadSignature:
            msg = "登录信息有误,请重新登录!"
            logger_manager.insert(user_id=user_id,
                                  login_type='online',
                                  time=datetime.now(),
                                  msg=msg,
                                  u_uuid=user_uuid)
            return {
                'code': errtypes.HttpResponseCode_InvaildToken,
                'msg': errtypes.HttpResponseCodeMsg_InvaildToken,
                'data': {
                    'token': token
                }
            }

        # step 2 检查踢人
        self.login_mutex_.acquire()
        if user_id in self.login_user_.keys():
            u_uuid = copy.deepcopy(self.login_user_[user_id].u_uuid)
            if user_uuid != u_uuid:
                msg = "该用户已在另一地点登录,请重新登录!"
                socketio_agent_center.post_msg_to_room(
                    {
                        'code': errtypes.HttpResponseCode_UserOffline,
                        'uuid': u_uuid
                    },
                    room_identify=u_uuid)
                logger_manager.insert(user_id=user_id,
                                      login_type='offline',
                                      time=datetime.now(),
                                      msg=msg,
                                      u_uuid=u_uuid)
            self.login_user_[user_id].u_uuid = user_uuid

        else:
            user_obj = user_cls('', '')
            user_obj.user_id = user_id
            user_obj.u_uuid = user_uuid
            user_obj.token = token
            self.login_user_[user_id] = user_obj

        self.login_mutex_.release()

        #logger_manager.insert(user_id = user_id,login_type='online',time =datetime.now(),msg="登录成功token",u_uuid=user_uuid)
        return {
            'code': 0,
            'msg': 'success',
            'data': {
                'login_token': token,
                'uuid': u_uuid
            }
        }