Exemple #1
0
    def login(cls, para):
        if not checkPara(para, ['version', 'did', ('type', lambda x: x in [cls.DEVICE_TYPE, cls.FB_TYPE])]):
            return Error.INVALID_PARAM

        version = para['version']
        did = para['did']

        if para['type'] == cls.DEVICE_TYPE:
            (uid, is_new) = Login.device_login(did)
        else:
            if para['fb_id'] in para['frd_list']:
                return Error.INVALID_PARAM

            (uid, is_new) = Login.fb_login(did, para['fb_id'], para['fb_name'], para['frd_list'])

        sid = Session.gen_session(uid)
        ret = {'uid': uid, 'sid': sid}

        user_info = User(uid).get(['coin', 'level', 'exp', 'name'], True)
        user_info['exp'] /= 100

        ret.update(user_info)

        if version < Config.LATEST_VERSION:
            ret['update'] = Config.PKG_URL

        User(uid).login_time = int(time.time())

        if 'ip' in para:
            g = cls.GEO.city(para['ip'])
            Location.update(uid, g['country_code'], g['region'])

        return ret