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'}
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'}
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'}
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 } }