Пример #1
0
 def doUserBind(cls, mo, rpath):
     if not AccountVerify.sing_verify(rpath) and False:
         mo.setResult('info', '验签失败')
         mo.setResult('code', -1)
         return
     rparams = TyContext.RunHttp.convertArgsToDict()
     snsId = rparams.get('snsId')
     snsId = AccountVerify.decode_item(snsId)
     prefix = snsId.split(':')[0]
     isOk = None
     try:
         method = snsv4_login_map.get(prefix)
         if not method:
             isOk = True
         else:
             isOk = method(rparams, snsId)
     except:
         isOk = False
     if not isOk:
         mo.setResult('info', '账号验证失败')
         mo.setResult('code', 1)
         return
     uid = AccountModel.get_uid_by_snsid(snsId)
     if uid and int(uid) > 0:
         mo.setResult('info', '用户已经绑定过其他途游账号了')
         mo.setResult('code', 3)
         return
     uid = rparams.get('userId')
     snsId = rparams.get('snsId')
     AccountModel.set_snsid_for_userid(uid, snsId)
     AccountModel.add_snsid_to_userbind_set(uid, snsId)
     AccountModel.set_user_info(uid, snsId=snsId)
     mo.setResult('info', '绑定成功')
     mo.setResult('code', 0)
Пример #2
0
 def doVerifyAccount(cls, rpath):
     verify = False
     userId = TyContext.RunHttp.getRequestParamInt('userId', 0)
     authorCode = TyContext.RunHttp.getRequestParam('authorCode', '')
     if AccountVerify.sing_verify(rpath):
         verify = TyContext.AuthorCode.checkUserAuthorCode(userId, authorCode)
     mo = TyContext.Cls_MsgPack()
     mo.setResult('verify', verify)
     return mo
Пример #3
0
 def setUserSex(cls, rpath):
     from tysdk.entity.user_common.verify import AccountVerify
     mo = TyContext.Cls_MsgPack()
     if not AccountVerify.sing_verify(rpath):
         mo.setKey('code', 1)
         return mo
     param = TyContext.RunHttp.convertArgsToDict()
     userId = int(param.get('userId', 0))
     params = {}
     params['sex'] = param.get('sex', 0)
     AccountModel.set_user_info(userId, **params)
     mo.setKey('code', 0)
     return mo
Пример #4
0
    def normal_check(cls, rpath, check_sign=True):

        # cls.__init_checker__()

        # 输入参数校验
        if check_sign and AccountVerify.sing_verify(rpath) != True:
            return True, cls.error_sing

        params = {}

        # 检查登录参数
        appId = TyContext.RunHttp.getRequestParamInt('appId', 0)
        if appId <= 0:
            return True, cls.error_param_appid
        params['appId'] = appId

        userId = TyContext.RunHttp.getRequestParamInt('userId', 0)
        if userId <= 0:
            return True, cls.error_param_userid
        params['userId'] = userId

        authorCode = TyContext.RunHttp.getRequestParam('authorCode', '')
        if check_sign and not TyContext.AuthorCode.checkUserAuthorCode(
                userId, authorCode):
            return True, cls.error_param_authorcode

        clientId = TyContext.RunHttp.getRequestParam('clientId', '')
        try:
            datas = clientId.split('_')
            clientSystem = datas[0]
            clientVersion = TyContext.ClientUtils.getVersionFromClientId(
                clientId)
            clientChannel = datas[2]
        except:
            return True, cls.error_param_clientid

        params['clientId'] = clientId
        params['clientSystem'] = clientSystem
        params['clientVersion'] = clientVersion
        params['clientChannel'] = clientChannel

        return False, params
Пример #5
0
 def getUserInfoByToken(cls, rpath):
     params = TyContext.RunHttp.convertArgsToDict()
     userId = int(params.get('userId', 0))
     token = params.get('token')
     mo = TyContext.Cls_MsgPack()
     from tysdk.entity.user_common.verify import AccountVerify
     if not AccountVerify.sing_verify(rpath):
         mo.setKey('code', 1)
         return mo
     if not AccountModel.checkUserByToken(userId, token):
         mo.setKey('code', 1)
         return mo
     attrs = params.get('attrs')
     info = AccountModel.get_user_info(
         userId, *filter(lambda x: x.strip(), attrs.split(',')))
     resultInfo = {}
     keyfilter = ['name', 'sex', 'purl', 'bindMobile', 'snsId']
     for k, v in info.items():
         if k in keyfilter:
             resultInfo[k] = v
     mo.setKey('code', 0)
     mo.setKey('info', resultInfo)
     return mo
Пример #6
0
    def check_userv4(cls, rpath):
        # cls.__init_checker__()

        if not AccountVerify.sing_verify(rpath):
            return True, cls.error_sing

        params = TyContext.RunHttp.convertArgsToDict()
        # 检查登录参数
        appId = TyContext.RunHttp.getRequestParamInt('appId', 0)
        if appId <= 0:
            return True, cls.error_param_appid
        params['appId'] = appId

        userId = TyContext.RunHttp.getRequestParamInt('userId', 0)
        params['userId'] = userId

        # bindOrderId = TyContext.RunHttp.getRequestParam('bindOrderId')
        # if bindOrderId is not None:
        #    params['bindOrderId'] = bindOrderId

        params['loginFlag'] = TyContext.RunHttp.getRequestParamInt(
            'loginFlag', 0)
        clientId = TyContext.RunHttp.getRequestParam('clientId', '')
        try:
            datas = clientId.split('_')
            clientSystem = datas[0]
            clientVersion = TyContext.ClientUtils.getVersionFromClientId(
                clientId)
            clientChannel = datas[2]
        except:
            return True, cls.error_param_clientid

        params['clientId'] = clientId
        params['clientSystem'] = clientSystem
        params['clientVersion'] = clientVersion
        params['clientChannel'] = clientChannel

        imei = TyContext.RunHttp.getRequestParam('imei', '')
        #         TyContext.ftlog.debug('imei=', imei)
        imei = AccountVerify.decode_item(imei)
        #         TyContext.ftlog.debug('imei=', imei)
        if len(imei) < 12 or len(imei) > 32:
            imei = ''
        # TyContext.ftlog.debug('imei=', imei)

        imsi = TyContext.RunHttp.getRequestParam('imsi', '')
        #         TyContext.ftlog.debug('imsi=', imsi)
        imsi = AccountVerify.decode_item(imsi)
        #         TyContext.ftlog.debug('imsi=', imei)
        if len(imsi) == 0 or len(imsi) > 15:
            imsi = ''
        # TyContext.ftlog.debug('imsi=', imsi)

        androidId = TyContext.RunHttp.getRequestParam('androidId', '')
        #         TyContext.ftlog.debug('androidId=', androidId)
        androidId = AccountVerify.decode_item(androidId)
        #         TyContext.ftlog.debug('androidId=', androidId)
        if len(androidId) < 12 or len(androidId) > 32:
            androidId = ''
        # TyContext.ftlog.debug('androidId=', androidId)
        idfa = AccountVerify.decode_item(
            TyContext.RunHttp.getRequestParam('idfa', ''))
        params['idfa'] = idfa
        mac = TyContext.RunHttp.getRequestParam('mac', '')
        #         TyContext.ftlog.debug('mac=', mac)
        mac = AccountVerify.decode_item(mac)
        #         TyContext.ftlog.debug('mac=', mac)

        # 获取不到时,mac可能为00:00:00:00:00:00或02:00:00:00:00:00
        # 下面的判断似有问题,但不能改,否则用户下次登录会生成不同的deviceId
        # 而丢失老账户
        mac = mac.replace(':', '')
        badmacs_an = TyContext.Configure.get_global_item_json(
            'badmacs_android', ['000000000000'])
        badmacs_ios = TyContext.Configure.get_global_item_json(
            'badmacs_ios', ['020000000000'])
        if mac in badmacs_ios:  # 如果IOS的mac取不到或者变化020000000000,那么需要加到badmacs_ios集合中
            params['macmd5'] = ''
        else:
            if mac != "" and mac not in badmacs_an:  # 如果安卓的mac取值出现问题,那么需要将错误值加入badmacs_an
                mac = mac.replace(':', '')
                if len(mac) != 12:
                    TyContext.ftlog.info('the mac is error ! [', mac, ']')
                    mac = ''
            else:
                TyContext.ftlog.info('the mac is error ! [', mac, ']')
                mac = ''
                #         TyContext.ftlog.debug('mac=', mac)

        uuid = TyContext.RunHttp.getRequestParam('uuid', '')
        #         TyContext.ftlog.debug('uuid=', uuid)
        if len(uuid) != 32:
            uuid = ''

        if mac in badmacs_ios:
            uuid = uuid.lower()

        id_str = mac + '|' + imei + '|' + androidId + '|' + uuid
        TyContext.ftlog.info('deviceId str=', id_str)
        _devid = AccountVerify.md5(id_str)
        params['deviceId'] = _devid
        TyContext.ftlog.debug('after check user params-->', params)
        return False, params
Пример #7
0
    def login_check(cls, rpath, loginType):

        # cls.__init_checker__()

        # 输入参数校验
        if AccountVerify.sing_verify(rpath) != True:
            return True, cls.error_sing

        # 检查是否可以登录
        loginForbid = TyContext.ServerControl.checkLoginForbid(rpath)
        if loginForbid != False:
            return True, loginForbid

        params = TyContext.RunHttp.convertArgsToDict()
        # params = {}
        # 检查登录参数
        appId = TyContext.RunHttp.getRequestParamInt('appId', 0)
        if appId <= 0:
            return True, cls.error_param_appid
        params['appId'] = appId

        clientId = TyContext.RunHttp.getRequestParam('clientId', '')
        try:
            datas = clientId.split('_')
            clientSystem = datas[0]
            clientVersion = TyContext.ClientUtils.getVersionFromClientId(
                clientId)
            clientChannel = datas[2]
        except:
            return True, cls.error_param_clientid

        check_clientid_number = TyContext.Configure.get_global_item_int(
            'check_clientid_num_before_login', 0)
        if appId < 10000 and check_clientid_number:
            if not TyContext.BiUtils.clientIdToNumber(appId, clientId):
                return True, cls.error_param_clientid

        params['clientId'] = clientId
        params['clientSystem'] = clientSystem
        params['clientVersion'] = clientVersion
        params['clientChannel'] = clientChannel

        imei = TyContext.RunHttp.getRequestParam('imei', '')
        #         TyContext.ftlog.debug('imei=', imei)
        imei = AccountVerify.decode_item(imei)
        #         TyContext.ftlog.debug('imei=', imei)
        if len(imei) < 12 or len(imei) > 32:
            imei = ''
        #         TyContext.ftlog.debug('imei=', imei)

        imsi = TyContext.RunHttp.getRequestParam('imsi', '')
        #         TyContext.ftlog.debug('imsi=', imsi)
        imsi = AccountVerify.decode_item(imsi)
        #         TyContext.ftlog.debug('imsi=', imei)
        if len(imsi) == 0 or len(imsi) > 15:
            imsi = ''
        #        TyContext.ftlog.debug('imsi=', imsi)

        androidId = TyContext.RunHttp.getRequestParam('androidId', '')
        #         TyContext.ftlog.debug('androidId=', androidId)
        androidId = AccountVerify.decode_item(androidId)
        #         TyContext.ftlog.debug('androidId=', androidId)
        if len(androidId) < 12 or len(androidId) > 32:
            androidId = ''
        #         TyContext.ftlog.debug('androidId=', androidId)

        idfa = AccountVerify.decode_item(
            TyContext.RunHttp.getRequestParam('idfa', ''))
        params['idfa'] = idfa
        TyContext.ftlog.debug('idfa=', idfa)

        mac = TyContext.RunHttp.getRequestParam('mac', '')
        #         TyContext.ftlog.debug('mac=', mac)
        mac = AccountVerify.decode_item(mac)
        #         TyContext.ftlog.debug('mac=', mac)

        params['macmd5'] = AccountVerify.md5(mac)

        # 获取不到时,mac可能为00:00:00:00:00:00或02:00:00:00:00:00
        # 下面的判断似有问题,但不能改,否则用户下次登录会生成不同的deviceId
        # 而丢失老账户
        mac = mac.replace(':', '')
        badmacs_an = TyContext.Configure.get_global_item_json(
            'badmacs_android', ['000000000000'])
        badmacs_ios = TyContext.Configure.get_global_item_json(
            'badmacs_ios', ['020000000000'])
        if mac in badmacs_ios:  # 如果IOS的mac取不到或者变化020000000000,那么需要加到badmacs_ios集合中
            params['macmd5'] = ''
        else:
            if mac != "" and mac not in badmacs_an:  # 如果安卓的mac取值出现问题,那么需要将错误值加入badmacs_an
                mac = mac.replace(':', '')
                if len(mac) != 12:
                    TyContext.ftlog.info('the mac is error ! [', mac, ']')
                    mac = ''
            else:
                TyContext.ftlog.info('the mac is error ! [', mac, ']')
                mac = ''
            #         TyContext.ftlog.debug('mac=', mac)

        uuid = TyContext.RunHttp.getRequestParam('uuid', '')
        #         TyContext.ftlog.debug('uuid=', uuid)
        if len(uuid) != 32:
            uuid = ''

        if mac in badmacs_ios:
            uuid = uuid.lower()

        svninfo = TyContext.RunHttp.getRequestParam('svninfo', '')
        if svninfo:
            params['svninfo'] = svninfo

        iccid = TyContext.RunHttp.getRequestParam('iccid', '')
        TyContext.ftlog.debug('paramiccid=', iccid)
        iccid = AccountVerify.decode_item(iccid)
        TyContext.ftlog.debug('iccid=', iccid)

        params['mac'] = mac
        if is_valid_iccid(iccid):
            params['iccid'] = iccid
        else:
            try:
                del params['iccid']
            except:
                pass
        # params['macmd5'] = AccountVerify.md5(mac)
        params['imei'] = imei
        params['imsi'] = imsi
        params['androidId'] = androidId
        params['uuid'] = uuid
        id_str = mac + '|' + imei + '|' + androidId + '|' + uuid
        TyContext.ftlog.info('deviceId str=', id_str)
        _devid = AccountVerify.md5(id_str)
        params['deviceId'] = _devid
        TyContext.ftlog.debug('login_check mac', mac, 'imei', imei,
                              'androidId', androidId, 'uuid', uuid,
                              'calculated deviceId', _devid)
        params['phoneType'] = TyContext.RunHttp.getRequestParam(
            'phoneType', '')
        params['detect_phonenumber'] = TyContext.RunHttp.getRequestParam(
            'detect_phonenumber', '')
        params['lang'] = TyContext.RunHttp.getRequestParam('lang', '')
        password = None

        if loginType == 1:
            '''
            游客登录
            '''
            password = None
            if len(mac) + len(imei) + len(androidId) + len(uuid) == 0:
                return True, cls.error_param_device
            params['deviceName'] = TyContext.RunHttp.getRequestParam(
                'deviceName', '')

        elif loginType == 2:
            '''
            手机号登录
            '''
            isReturn, mobile = cls.check_param_mobile(rpath)
            if isReturn:
                return True, mobile
            params['mobile'] = mobile

            password = 1
        elif loginType == 3:
            '''
            tuyooid登录
            '''
            tuyooId = TyContext.RunHttp.getRequestParam('tuyooId', '')
            tuyooId = AccountVerify.decode_item(tuyooId)
            try:
                tuyooId = int(tuyooId)
            except:
                pass
            if tuyooId <= 10000:
                return True, cls.error_param_tuyooid
            params['tuyooId'] = tuyooId

            password = 1
        elif loginType == 4:
            '''
            邮箱登录
            '''
            isReturn, mail = cls.check_param_mail(rpath)
            if isReturn:
                return True, mail
            params['mail'] = mail

            password = 1
        elif loginType == 5:
            '''
            snsid登录
            '''
            isReturn, snsId = cls.check_param_snsid(rpath)
            if isReturn:
                return True, snsId
            params['snsId'] = snsId
            params['snsToken'] = TyContext.RunHttp.getRequestParam('snsToken')
            params['snsAppId'] = TyContext.RunHttp.getRequestParam('snsAppId')

            password = None
        elif loginType == 6:
            '''
            Account登录
            '''
            isReturn, account = cls.check_param_account(rpath)
            if isReturn:
                return True, account
            params['account'] = account

            password = 1
        elif loginType == 7:
            '''
            新建账户
            '''
            pass

        if password != None:
            isReturn, passwd = cls.check_param_password(rpath)
            if isReturn:
                return True, passwd
            params['passwd'] = passwd

        return False, params