def auth_function_1001(request): """ 注册或登录 :param request: :return: """ req = LoginReq() req.ParseFromString(request['body']) rsp = LoginRsp() logger.debug('req:%s', req) if not req.uuid: rsp.ret = error_contrast.ERROR_INVALID_PARAMS return rsp.SerializeToString() if not req.sign: rsp.ret = error_contrast.ERROR_INVALID_PARAMS return rsp.SerializeToString() src = "%s&%s&%s" % (config.ONLY_PAY_SECRET, req.uuid, req.version) if req.sign != hashlib.md5(src).hexdigest(): logger.error('invalid sign! req: %s', req) rsp.ret = error_contrast.ERROR_INVALID_PARAMS return rsp.SerializeToString() if is_app_crime(req.channel, req.version): if not req.extra_username or not req.extra_password: # 请输入用户名和密码 rsp.ret = error_contrast.ERROR_ENTER_USERNAME_AND_PASSWORD return rsp.SerializeToString() db_user = User.objects.filter( extra_username=req.extra_username).first() if req.is_register and db_user: # 用户名已注册 rsp.ret = error_contrast.ERROR_USERNAME_HAS_EXIST return rsp.SerializeToString() if not req.is_register: if not db_user: # 用户名不存在 rsp.ret = error_contrast.ERROR_USERNAME_NOT_EXIST return rsp.SerializeToString() if db_user and db_user.extra_password != req.extra_password: # 密码错误 rsp.ret = error_contrast.ERROR_PASSWORD_IS_ERROR return rsp.SerializeToString() else: db_user = User.objects.filter(uuid=req.uuid).first() if not db_user: db_user = User() db_user.password = get_password() if is_app_crime(req.channel, req.version): db_user.uuid = req.uuid + req.extra_username db_user.nick = req.extra_username db_user.extra_username = req.extra_username db_user.extra_password = req.extra_password else: db_user.uuid = req.uuid db_user.nick = req.nick[:6] db_user.card = 100 if req.os: db_user.os = req.os db_user.save() # 转成Redis对象 user = RedisUserMgr().get_user(db_user.uin) user.attach_db_user(db_user) user.update(dict( channel=req.channel, version=req.version, os=req.os, )) tell_transfer_to_bind(user.uin, request['connid']) return common_user_reg_or_login(request, user)