コード例 #1
0
    def _create_user(self, _request):
        from ppmessage.db.models import DeviceUser

        _user_email = _request.get("user_email")
        _user_fullname = _request.get("user_fullname")
        _user_password = _request.get("user_password")
        _user_icon = random_identicon(_user_email)

        IOLoop.current().spawn_callback(download_random_identicon, _user_icon)

        _row = DeviceUser(
            uuid=self._user_uuid,
            user_email=_user_email,
            user_icon=_user_icon,
            user_status=USER_STATUS.OWNER_2,
            user_fullname=_user_fullname,
            user_password=_user_password,
            is_removed_user=False,
            is_owner_user=True,
            is_service_user=True,
            is_anonymous_user=False
        )

        _row.create_redis_keys(self.application.redis)
        _insert_into(_row)
        self._user_fullname = _user_fullname
        return True
コード例 #2
0
    def _create_third_party(self, _user_email, _user_fullname, _user_icon):
        _redis = self.application.redis
        _du_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _du_uuid,
            "user_status": USER_STATUS.THIRDPARTY,
            "user_name": _user_email,
            "user_email": _user_email,
            "user_fullname": _user_fullname,
            "is_anonymous_user": False,
        }
        if _user_icon != None:
            _values["user_icon"] = _user_icon

        _row = DeviceUser(**_values)
        _row.async_add()
        _row.create_redis_keys(_redis)
        
        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "app_uuid": self.app_uuid,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False,
            "is_distributor_user": False,
        }
        _row = AppUserData(**_values)
        _row.async_add()
        _row.create_redis_keys(_redis)

        _r = self.getReturnData()
        _r["user_uuid"] = _du_uuid
        return
コード例 #3
0
    def _exist_user(self, _request, _user_uuid):
        _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid

        if not self.application.redis.exists(_key):
            logging.error("CHECK CODE")
            self.setErrorCode(API_ERR.SYS_ERR)
            return
        
        _is_service_user = self.application.redis.hget(_key, "is_service_user")
        
        if "True" == _is_service_user:
            logging.error("user is service user who can not help himself ^_^.")
            self.setErrorCode(API_ERR.NOT_PORTAL)
            return

        _user_fullname = self.application.redis.hget(_key, "user_fullname")
        if _user_fullname != _request.get("ent_user_fullname"):
            _row = DeviceUser(uuid=_user_uuid, user_fullname=_request.get("ent_user_fullname"))
            _row.update_redis_keys(self.application.redis)
            _row.async_update(self.application.redis)
        
        _r = self.getReturnData()
        _r["user_fullname"] = _user_fullname
        _r["user_uuid"] = _user_uuid
        _r["uuid"] = _user_uuid
        return
コード例 #4
0
 def _update_user_with_device(self, _user_uuid, _device_uuid):
     _values = {"uuid": _user_uuid}
     _values["ppkefu_browser_device_uuid"] = _device_uuid
     _row = DeviceUser(**_values)
     _row.async_update(self.application.redis)
     _row.update_redis_keys(self.application.redis)
     return
コード例 #5
0
 def _create_user(self, _request):
     from ppmessage.db.models import DeviceUser
     
     _user_email = _request.get("user_email")
     _user_fullname = _request.get("user_fullname")
     _user_password = _request.get("user_password")
     _user_icon = random_identicon(_user_email)
     
     _row = DeviceUser(
         uuid=self._user_uuid,
         user_email=_user_email,
         user_icon=_user_icon,
         user_status=USER_STATUS.OWNER_2,
         user_fullname=_user_fullname,
         user_password=_user_password,
         is_removed_user=False,
         is_owner_user=True,
         is_service_user=True,
         is_anonymous_user=False
     )
     
     _row.create_redis_keys(_redis)
     _insert_into(_row)
     self._user_fullname = _user_fullname
     return True
コード例 #6
0
    def _create(self, _ppcom_trace_uuid):
        _redis = self.application.redis
        _key = DeviceUser.__tablename__ + ".ppcom_trace_uuid." + _ppcom_trace_uuid
        _uuid = _redis.get(_key)

        if _uuid != None:
            _user = redis_hash_to_dict(_redis, DeviceUser, _uuid)
            if _user != None:
                _rdata = self.getReturnData()
                _rdata["user_uuid"] = _uuid
                _rdata["user_email"] = _user["user_email"]
                _rdata["user_fullname"] = _user["user_fullname"]
                _rdata["user_icon"] = _user["user_icon"]
                _rdata["user_status"] = _user.get("user_status")
                return
        
        _du_uuid = str(uuid.uuid1())
        _user_email = _du_uuid[:6] + "@" + self.app_uuid[:6]
        _user_name = self._unknown_user_name()
        _user_icon = random_identicon(_du_uuid)
        
        _values = {
            "uuid": _du_uuid,
            "ppcom_trace_uuid": _ppcom_trace_uuid,
            "user_status": USER_STATUS.ANONYMOUS,
            "is_anonymous_user": True,
            "user_name": _user_name,
            "user_email": _user_email,
            "user_fullname": _user_name,
            "user_icon": _user_icon
        }
        
        _row = DeviceUser(**_values)
        _row.async_add(self.application.redis)
        _row.create_redis_keys(self.application.redis)

        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "user_fullname": _user_name,
            "app_uuid": self.app_uuid,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False
        }
        _row = AppUserData(**_values)
        _row.async_add(self.application.redis)
        _row.create_redis_keys(self.application.redis)
        
        _rdata = self.getReturnData()
        _rdata["user_uuid"] = _du_uuid
        _rdata["user_fullname"] = _user_name
        _rdata["user_email"] = _user_email
        _rdata["user_name"] = _user_name
        _rdata["user_icon"] = _user_icon

        _ip = self.request.headers.get("X-Real-Ip") or self.request.headers.get("remote_ip") or self.request.remote_ip
        IOLoop.current().spawn_callback(self._create_user_name, user_uuid=_du_uuid, data_uuid=_data_uuid, ip=_ip)
        return
コード例 #7
0
    def _create_user(self, _request):
        from ppmessage.db.models import DeviceUser

        _user_email = _request.get("user_email")
        _user_fullname = _request.get("user_fullname")
        _user_password = _request.get("user_password")
        _user_language = _get_config().get("server").get("language").get(
            "locale")
        _user_icon = random_identicon(_user_email)

        IOLoop.current().spawn_callback(download_random_identicon, _user_icon)

        _row = DeviceUser(uuid=self._user_uuid,
                          app_uuid=self._app_uuid,
                          user_email=_user_email,
                          user_icon=_user_icon,
                          user_status=USER_STATUS.OWNER_2,
                          user_fullname=_user_fullname,
                          user_password=_user_password,
                          user_language=_user_language)

        _row.create_redis_keys(self.application.redis)
        _insert_into(_row)
        self._user_fullname = _user_fullname
        return True
コード例 #8
0
ファイル: ppconfigapp.py プロジェクト: Bossuo/ppmessage
    def _create_user(self, _request):
        from ppmessage.db.models import DeviceUser
        
        _user_email = _request.get("user_email")
        _user_fullname = _request.get("user_fullname")
        _user_password = _request.get("user_password")
        _user_language = _get_config().get("server").get("language").get("locale")
        _user_icon = random_identicon(_user_email)

        IOLoop.current().spawn_callback(download_random_identicon, _user_icon)
        
        _user_uuid = str(uuid.uuid1())
        _row = DeviceUser(uuid=_user_uuid,
                          user_email=_user_email,
                          user_icon=_user_icon,
                          user_status=USER_STATUS.OWNER_2,
                          user_fullname=_user_fullname,
                          user_password=_user_password,
                          user_language=_user_language)
        
        _row.create_redis_keys(self.application.redis)
        _insert_into(_row)
        self._user_uuid = _user_uuid
        self._user_fullname = _user_fullname
        return True
コード例 #9
0
    def _create_user_name(self, user_uuid=None, data_uuid=None, ip=None):
        logging.info("create anonymous user_uuid: %s, ip: %s" % (user_uuid, ip))
        if user_uuid == None or ip == None or data_uuid == None:
            return
        
        url = "http://123.57.154.168:8099/IP2GEO/"
        http_headers = {"Content-Type" : "application/json"}
        
        http_body = {
            "ip": ip,
            "language": _get_config().get("server").get("language").get("locale"),
            "team_uuid": _get_config().get("team").get("app_uuid"),
            "team_name": _get_config().get("team").get("name")
        }
        
        http_request = HTTPRequest(
            url, method='POST',
            headers=http_headers,
            validate_cert=False,
            body=json.dumps(http_body)
        )

        http_client = AsyncHTTPClient()
        response = yield http_client.fetch(http_request)

        logging.info("geoservice return: %s" % response.body)
        _body = json.loads(response.body)
        
        if _body == None or _body.get("error_code") != 0:
            logging.error("cant get user name by ip: %s" % ip)
            return
        
        _country = _body.get("country")
        _state = _body.get("state")
        _city = _body.get("city")
        _location_user = []
            
        if _country != None and len(_country) != 0:
            _location_user.append(_country)

        if _state != None and len(_state) != 0:
            _location_user.append(_state)

        if _city != None and len(_city) != 0:
            _location_user.append(_city)

        if len(_location_user) == 0:
            return
        
        _user_name = ".".join(_location_user)
        _row = DeviceUser(uuid=user_uuid, user_name=_user_name, user_fullname=_user_name)
        _row.update_redis_keys(self.application.redis)
        _row.async_update(self.application.redis)

        _row = AppUserData(uuid=data_uuid, user_fullname=_user_name)
        _row.update_redis_keys(self.application.redis)
        _row.async_update(self.application.redis)

        return
コード例 #10
0
 def _update_user_status(self):        
     _values = {
         "uuid": self.user_uuid,
         "service_user_status": SERVICE_USER_STATUS.NULL
     }        
     _row = DeviceUser(**_values)
     _row.async_update(self.application.redis)        
     _row.update_redis_keys(self.application.redis)
     return
コード例 #11
0
ファイル: deviceuser.py プロジェクト: anxiaoyi/ppmessage
def create_device_user(redis, request):
    _uuid = request.get("uuid")

    if not _uuid:
        logging.error("no uuid provided. %s" % request)
        return None
    
    _is_service_user = bool(request.get("is_service_user"))
    _is_anonymous_user = bool(request.get("is_anonymous_user"))
    _is_owner_user = bool(request.get("is_owner_user"))

    _user_email = request.get("user_email")
    if not _user_email:
        import strgen
        _user_email = strgen.StringGenerator("[\d\w]{10}").render() + "@" + strgen.StringGenerator("[\d\w]{10}").render()
        
    _user_icon = request.get("user_icon")
    if not _user_icon:
        _user_icon = random_identicon(_user_email)

    _user_name = request.get("user_name")
    _user_mobile = request.get("user_mobile")
    _user_fullname = request.get("user_fullname")
    _user_password = request.get("user_password")
    _user_language = request.get("user_language") or "cn"

    _ent_user_uuid = request.get("ent_user_uuid")
    _ent_user_createtime = request.get("ent_user_createtime")
    
    import pypinyin
    if not isinstance(_user_fullname, unicode):
        _user_fullname = _user_fullname.decode("utf-8")
    _user_pinyin = "".join(pypinyin.lazy_pinyin(_user_fullname))
    _user_py = "".join(pypinyin.lazy_pinyin(_user_fullname, style=pypinyin.FIRST_LETTER))

    _values = {
        "uuid": _uuid,
        "is_service_user": _is_service_user,
        "is_owner_user": _is_owner_user,
        "is_ppmessage_user": _is_ppmessage_user,
        "is_anonymous_user": _is_anonymous_user,
        "user_name": _user_name,
        "user_mobile": _user_mobile,
        "user_email": _user_email,
        "user_icon": _user_icon,
        "user_fullname": _user_fullname,
        "user_password": _user_password,
        "user_pinyin": _user_pinyin,
        "user_py": _user_py,
        "ent_user_uuid": _ent_user_uuid,
        "ent_user_createtime": _ent_user_createtime
    }
    
    _row = DeviceUser(**_values)
    _row.async_add(redis)
    _row.create_redis_keys(redis)
    return _values
コード例 #12
0
    def _user(self, _device_uuid):
        _v = {"ppcom_mobile_device_uuid": _device_uuid}
        if self._is_browser == True:
            _v = {"ppcom_browser_device_uuid": _device_uuid}

        _v["uuid"] = self._user_uuid
        _row = DeviceUser(**_v)
        _row.async_update(self.application.redis)
        _row.update_redis_keys(self.application.redis)
        return
コード例 #13
0
 def _reset_device_of_user(self, _user_uuid):
     _v = {"uuid": _user_uuid}
     if self.device_is_browser == True:
         _v["browser_device_uuid"] = ""
     else:
         _v["mobile_device_uuid"] = ""
     _row = DeviceUser(**_v)
     _row.async_update()
     _row.update_redis_keys(self.application.redis)
     return
コード例 #14
0
 def _update_user_with_device(self, _user_uuid, _device_uuid):
     _values = {"uuid": _user_uuid}
     if self.device_is_browser == True:
         _values["browser_device_uuid"] = _device_uuid
     else:
         _values["mobile_device_uuid"] = _device_uuid
     _row = DeviceUser(**_values)
     _row.async_update()
     _row.update_redis_keys(self.application.redis)
     return
コード例 #15
0
    def _create(self, _ppcom_trace_uuid):
        _redis = self.application.redis
        _key = DeviceUser.__tablename__ + ".ppcom_trace_uuid." + _ppcom_trace_uuid
        _uuid = _redis.get(_key)
        logging.info(_key)
        if _uuid != None:
            _user = redis_hash_to_dict(_redis, DeviceUser, _uuid)
            if _user != None:
                _rdata = self.getReturnData()
                _rdata["user_uuid"] = _uuid
                _rdata["user_email"] = _user["user_email"]
                _rdata["user_fullname"] = _user["user_fullname"]
                _rdata["user_icon"] = _user["user_icon"]
                return
        
        _du_uuid = str(uuid.uuid1())
        _user_email = _du_uuid[:6] + "@" + self.app_uuid[:6]
        _user_name = self._create_user_name()
        
        _values = {
            "uuid": _du_uuid,
            "ppcom_trace_uuid": _ppcom_trace_uuid,
            "user_status": USER_STATUS.ANONYMOUS,
            "is_anonymous_user": True,
            "user_name": _user_name,
            "user_email": _user_email,
            "user_fullname": _user_name,
            "user_icon": create_user_icon(_du_uuid),
        }
        
        _row = DeviceUser(**_values)
        _row.async_add(self.application.redis)
        _row.create_redis_keys(self.application.redis)

        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "app_uuid": self.app_uuid,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False,
            "is_distributor_user": False,
        }
        _row = AppUserData(**_values)
        _row.async_add(self.application.redis)
        _row.create_redis_keys(self.application.redis)
        
        _rdata = self.getReturnData()
        _rdata["user_uuid"] = _du_uuid
        _rdata["user_fullname"] = _user_name
        _rdata["user_email"] = _user_email
        _rdata["user_name"] = _user_name
        return
コード例 #16
0
    def _update_user_status(self, _user_uuid):
        _values = {"uuid": _user_uuid}
        _user_status = self.input_data.get("user_status")

        # NULL, READY, BUSY, REST
        if _user_status in SERVICE_USER_STATUS:
            _values["service_user_status"] = _user_status
        else:
            _values["service_user_status"] = SERVICE_USER_STATUS.READY
        _row = DeviceUser(**_values)
        _row.async_update(self.application.redis)
        _row.update_redis_keys(self.application.redis)
        return
コード例 #17
0
def create_user(_redis, _request):
    
    _user_email = _request.get("user_email")
    _user_status = _request.get("user_status")
    _user_fullname = _request.get("user_fullname")
    _user_language = _request.get("user_language")
    _user_password = _request.get("user_password")
    _is_service_user = _request.get("is_service_user")
    
    if not all([_user_email, _user_fullname]):
        return None

    _key = DeviceUser.__tablename__ + ".user_email." + _user_email
    if _redis.exists(_key):
        return None
        
    if _is_service_user == None:
        _is_service_user = False

    if _user_status == None:
        _user_status = USER_STATUS.THIRDPARTY

    _user_icon = random_identicon(_user_email)

    IOLoop.current().spawn_callback(download_random_identicon, _user_icon)
    
    _du_uuid = str(uuid.uuid1())
    
    _values = {
        "uuid": _du_uuid,
        "user_status": _user_status,
        "user_name": _user_email,
        "user_email": _user_email,
        "user_icon": _user_icon,
        "user_language": _user_language,
        "user_fullname": _user_fullname,
        "user_password": _user_password,
        "is_removed_user": False,
        "is_anonymous_user": False,
        "is_service_user": _is_service_user,
        "is_owner_user": False
    }
    
    _row = DeviceUser(**_values)
    _row.async_add(_redis)
    _row.create_redis_keys(_redis)
    _user_values = _values
    
    return _user_values
コード例 #18
0
    def _create_user_name(self, user_uuid=None, ip=None):
        logging.info("create anonymous user_uuid: %s, ip: %s" % (user_uuid, ip))
        if user_uuid == None or ip == None:
            return
        
        url = "http://ipinfo.io/" + ip + "/json"
        
        http_headers = {"Content-Type" : "application/json"}
                
        http_request = HTTPRequest(
            url, method='GET',
            headers=http_headers
        )

        http_client = AsyncHTTPClient()
        response = yield http_client.fetch(http_request)

        logging.info("geoservice return: %s" % response.body)
        _body = json.loads(response.body)
        
        if not _body:
            logging.error("cant get user name by ip: %s" % ip)
            return
        
        _country = _body.get("country")
        _state = _body.get("state")
        _city = _body.get("city")
        _location_user = []
            
        if _country != None and len(_country) != 0:
            _location_user.append(_country)

        if _state != None and len(_state) != 0:
            _location_user.append(_state)

        if _city != None and len(_city) != 0:
            _location_user.append(_city)

        if len(_location_user) == 0:
            return
        
        _user_name = ".".join(_location_user)
        _row = DeviceUser(uuid=user_uuid,
                          user_name=_user_name,
                          user_fullname=_user_name)
        _row.update_redis_keys(self.application.redis)
        _row.async_update(self.application.redis)

        return
コード例 #19
0
    def _one(self, _app_uuid, _user_uuid):
        _redis = self.application.redis
        _key = AppUserData.__tablename__ + \
               ".app_uuid." + _app_uuid + \
               ".user_uuid." + _user_uuid + ".is_service_user.True"
        if not _redis.exists(_key):
            self.setErrorCode(API_ERR.NO_USER)
            return False

        _data_uuid = _redis.get(_key)
        _data = redis_hash_to_dict(_redis, AppUserData, _data_uuid)
        if _data == None:
            self.setErrorCode(API_ERR.NO_USER)
            return False

        if _data.get("is_owner_user") == True:
            self.setErrorCode(API_ERR.APP_OWNER)
            return False

        _row = AppUserData(uuid=_data_uuid)
        _row.async_delete()
        _row.delete_redis_keys(_redis)

        _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid
        if not _redis.exists(_key):
            self.setErrorCode(API_ERR.NO_USER)
            return False

        # FIXME: a lot of user db message should be removed
        _row = DeviceUser(uuid=_user_uuid)
        _row.async_delete()
        _row.delete_redis_keys(_redis)
        return True
コード例 #20
0
    def _post(self, _request):
        _redis = self.application.redis

        _user_uuid = _request.get("user_uuid")
        if _user_uuid == None:
            logging.error("no user_uuid")
            self.setErrorCode(API_ERR.NO_PARA)
            return
        
        _user = redis_hash_to_dict(_redis, DeviceUser, _user_uuid)
        if _user is None:
            logging.error("No user %s." % _user_uuid)
            self.setErrorCode(API_ERR.NO_USER)
            return

        _values = {"uuid": _user_uuid}

        _email = _request.get("email")
        _icon = _request.get("icon")
        _password = _request.get("password")
        _fullname = _request.get("fullname")
        
        if _email is not None:
            _values["user_email"] = _email
            
        if _password is not None:
            _values["user_password"] = _password

        if _fullname is not None:
            _values["user_fullname"] = _fullname

        if _icon is not None:
            _file = redis_hash_to_dict(_redis, FileInfo, _icon)
            if _file is not None:
                _values["user_icon"] = _file.get("uuid")
            else:
                logging.error("No file: %s." % _icon)
                self.setErrorCode(API_ERR.NO_FILE)
                return
            
        if len(_values) > 1:
            _row = DeviceUser(**_values)
            _row.update_redis_keys(_redis)
            _row.async_update()

        return
コード例 #21
0
 def _send(self, _user_uuid, _user_email, _user_fullname):
     _new_password = StringGenerator("[a-zA-Z0-9_\[\]\{\}\(\)\|\&\$\-]{8}").render()
     _hash_password = hashlib.sha1(_new_password).hexdigest()
     _row = DeviceUser(uuid=_user_uuid, user_password=_hash_password)
     _row.update_redis_keys(self.application.redis)
     _row.async_update(self.application.redis)
     _subject = "[PPMessage]: renew password"
     _text = "Dear %s,\n  Your password has been reset to %s\n Yours Sincerely,\n PPMessage\n" % (_user_fullname, _new_password)
     _html = "<html><body>Dear %s, <br><br> <p> <strong>%s</strong> is your new password. Login <a href='https://ppmessage.com/user/#/app/signup-md/signin'> PPMessage </a> with your new password. </p> <br><br> <p>Yours Sincerely,</p> <p>PPMessage</p></body></html>" % (_user_fullname, _new_password)
     _key = REDIS_EMAIL_KEY
     _request = {
         "to": [_user_email],
         "subject": _subject,
         "text": _text,
         "html": _html
     }
     self.application.redis.rpush(_key, json.dumps(_request))
     return
コード例 #22
0
ファイル: ppconfigapp.py プロジェクト: leo23/ppmessage
    def _create_user(self, _request):
        from ppmessage.db.models import DeviceUser
        
        _user_email = _request.get("user_email")
        _user_fullname = _request.get("user_fullname")
        _user_password = _request.get("user_password")
        _user_language = _request.get("user_language")

        _user_uuid = str(uuid.uuid1())
        _row = DeviceUser(uuid=_user_uuid,
                          user_email=_user_email,
                          user_password=_user_password,
                          user_language=_user_language)
        
        _row.create_redis_keys(self.application.redis)
        _row.async_add(self.application.redis)
        self._user_uuid = _user_uuid
        return True
コード例 #23
0
    def _create_user(self, _request):
        from ppmessage.db.models import DeviceUser
        
        _user_email = _request.get("user_email")
        _user_fullname = _request.get("user_fullname")
        _user_password = _request.get("user_password")
        _user_language = _get_config().get("server").get("language").get("locale")

        _user_uuid = str(uuid.uuid1())
        _row = DeviceUser(uuid=_user_uuid,
                          user_email=_user_email,
                          user_status=USER_STATUS.OWNER_2,
                          user_fullname=_user_fullname,
                          user_password=_user_password,
                          user_language=_user_language)
        
        _row.create_redis_keys(self.application.redis)
        _insert_into(_row)
        self._user_uuid = _user_uuid
        return True
コード例 #24
0
    def _create_third_party(self, _app_uuid, _user_email, _user_fullname, _user_icon):
        _redis = self.application.redis
        _du_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _du_uuid,
            "user_status": USER_STATUS.THIRDPARTY,
            "user_name": _user_email,
            "user_email": _user_email,
            "user_fullname": _user_fullname,
            "is_anonymous_user": False,
        }

        if _user_icon != None:
            _values["user_icon"] = _user_icon
            IOLoop.current().spawn_callback(download_random_identicon, _user_icon)
        else:
            _user_icon = random_identicon(_user_email)
            _values["user_icon"] = _user_icon
            IOLoop.current().spawn_callback(download_random_identicon, _user_icon)

        _row = DeviceUser(**_values)
        _row.async_add(_redis)
        _row.create_redis_keys(_redis)
        
        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "app_uuid": _app_uuid,
            "user_fullname": _user_fullname,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False
        }
        _row = AppUserData(**_values)
        _row.async_add(_redis)
        _row.create_redis_keys(_redis)

        _r = self.getReturnData()
        _r["user_uuid"] = _du_uuid
        return
コード例 #25
0
    def _create_user(self, _request):
        from ppmessage.db.models import DeviceUser

        _user_email = _request.get("user_email")
        _user_fullname = _request.get("user_fullname")
        _user_password = _request.get("user_password")
        _user_language = _get_config().get("server").get("language").get(
            "locale")

        _user_uuid = str(uuid.uuid1())
        _row = DeviceUser(uuid=_user_uuid,
                          user_email=_user_email,
                          user_status=USER_STATUS.OWNER_2,
                          user_fullname=_user_fullname,
                          user_password=_user_password,
                          user_language=_user_language)

        _row.create_redis_keys(self.application.redis)
        _insert_into(_row)
        self._user_uuid = _user_uuid
        return True
コード例 #26
0
    def _exist_user(self, _request, _user_uuid):
        _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid

        if not self.application.redis.exists(_key):
            logging.error("CHECK CODE")
            self.setErrorCode(API_ERR.SYS_ERR)
            return
        
        _is_service_user = self.application.redis.hget(_key, "is_service_user")
        _user_app_uuid = self.application.redis.hget(_key, "app_uuid")
        
        if "True" == _is_service_user and _request.get("app_uuid") == _user_app_uuid:
            logging.error("user is service user who can not help himself ^_^.")
            self.setErrorCode(API_ERR.NOT_PORTAL)
            return

        _user_fullname = self.application.redis.hget(_key, "user_fullname")
        if _user_fullname != _request.get("ent_user_fullname"):
            _row = DeviceUser(uuid=_user_uuid, user_fullname=_request.get("ent_user_fullname"))
            _row.update_redis_keys(self.application.redis)
            _row.async_update(self.application.redis)
        
        _r = self.getReturnData()
        _r["user_fullname"] = _user_fullname
        _r["user_uuid"] = _user_uuid
        _r["uuid"] = _user_uuid
        return
コード例 #27
0
 def _update_user_with_device(self, _user_uuid, _device_uuid):
     _values = {"uuid": _user_uuid}
     _values["ppkefu_browser_device_uuid"] = _device_uuid
     _row = DeviceUser(**_values)
     _row.async_update(self.application.redis)
     _row.update_redis_keys(self.application.redis)
     return
コード例 #28
0
ファイル: deviceuser.py プロジェクト: yuhaozi2/ppmessage
def create_device_user(redis, request):
    _uuid = request.get("uuid")

    if not _uuid:
        logging.error("no uuid provided. %s" % request)
        return None

    _is_service_user = bool(request.get("is_service_user"))
    _is_anonymous_user = bool(request.get("is_anonymous_user"))
    _is_owner_user = bool(request.get("is_owner_user"))

    _user_email = request.get("user_email")
    if not _user_email:
        import strgen
        _user_email = strgen.StringGenerator("[\d\w]{10}").render(
        ) + "@" + strgen.StringGenerator("[\d\w]{10}").render()

    _user_icon = request.get("user_icon")
    if not _user_icon:
        _user_icon = random_identicon(_user_email)

    _user_name = request.get("user_name")
    _user_mobile = request.get("user_mobile")
    _user_fullname = request.get("user_fullname")
    _user_password = request.get("user_password")
    _user_language = request.get("user_language") or "cn"

    _ent_user_uuid = request.get("ent_user_uuid")
    _ent_user_createtime = request.get("ent_user_createtime")

    import pypinyin
    if not isinstance(_user_fullname, unicode):
        _user_fullname = _user_fullname.decode("utf-8")
    _user_pinyin = "".join(pypinyin.lazy_pinyin(_user_fullname))
    _user_py = "".join(
        pypinyin.lazy_pinyin(_user_fullname, style=pypinyin.FIRST_LETTER))

    _values = {
        "uuid": _uuid,
        "is_service_user": _is_service_user,
        "is_owner_user": _is_owner_user,
        "is_ppmessage_user": _is_ppmessage_user,
        "is_anonymous_user": _is_anonymous_user,
        "user_name": _user_name,
        "user_mobile": _user_mobile,
        "user_email": _user_email,
        "user_icon": _user_icon,
        "user_fullname": _user_fullname,
        "user_password": _user_password,
        "user_pinyin": _user_pinyin,
        "user_py": _user_py,
        "ent_user_uuid": _ent_user_uuid,
        "ent_user_createtime": _ent_user_createtime
    }

    _row = DeviceUser(**_values)
    _row.async_add(redis)
    _row.create_redis_keys(redis)
    return _values
コード例 #29
0
    def _create_user_name(self, user_uuid=None, ip=None):
        logging.info("create anonymous user_uuid: %s, ip: %s" %
                     (user_uuid, ip))
        if user_uuid == None or ip == None:
            return

        url = "http://123.57.154.168:8099/IP2GEO/"
        http_headers = {"Content-Type": "application/json"}

        http_body = {
            "ip": ip,
            "language":
            _get_config().get("server").get("language").get("locale"),
            "team_uuid": _get_config().get("team").get("app_uuid"),
            "team_name": _get_config().get("team").get("name")
        }

        http_request = HTTPRequest(url,
                                   method='POST',
                                   headers=http_headers,
                                   validate_cert=False,
                                   body=json.dumps(http_body))

        http_client = AsyncHTTPClient()
        response = yield http_client.fetch(http_request)

        logging.info(response.body)
        _body = json.loads(response.body)

        if _body == None or _body.get("error_code") != 0:
            logging.error("cant get user name by ip: %s" % ip)
            return

        _country = _body.get("country")
        _state = _body.get("state")
        _city = _body.get("city")
        _location_user = []

        if _country != None and len(_country) != 0:
            _location_user.append(_country)

        if _state != None and len(_state) != 0:
            _location_user.append(_state)

        if _city != None and len(_city) != 0:
            _location_user.append(_city)

        if len(_location_user) == 0:
            return

        _user_name = ".".join(_location_user)
        _row = DeviceUser(uuid=user_uuid,
                          user_name=_user_name,
                          user_fullname=_user_name)
        _row.update_redis_keys(self.application.redis)
        _row.async_update(self.applicataion.redis)
        return
コード例 #30
0
 def _update_user_status(self):
     _values = {
         "uuid": self.user_uuid,
         "service_user_status": SERVICE_USER_STATUS.NULL
     }
     _row = DeviceUser(**_values)
     _row.async_update()
     _row.update_redis_keys(self.application.redis)
     return
コード例 #31
0
    def _remove(self, _user_uuid, _user_password):
        _redis = self.application.redis
        _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid
        if not _redis.exists(_key):
            self.setErrorCode(API_ERR.NO_USER)
            return

        _pass_hash = _redis.hget(_key, "user_password")
        _pass_hash = hashlib.sha1(_pass_hash).hexdigest()
        if _pass_hash != _user_password:
            self.setErrorCode(API_ERR.ERR_MIS)
            return

        _key = AppInfo.__tablename__ + ".user_uuid." + _user_uuid
        if _redis.exists(_key):
            self.setErrorCode(API_ERR.APP_OWNER)
            return

        # FIXME: other org group data
        # conversation data / app user data etc.
        _row = DeviceUser(uuid=_user_uuid)
        _row.async_delete(_redis)
        _row.delete_redis_keys(_redis)
        return
コード例 #32
0
 def _reset_device_of_user(self, _user_uuid):
     _v = {"uuid": _user_uuid}
     if self.device_is_browser == True:
         _v["browser_device_uuid"] = ""
     else:
         _v["mobile_device_uuid"] = ""
     _row = DeviceUser(**_v)
     _row.async_update(self.application.redis)
     _row.update_redis_keys(self.application.redis)
     return
コード例 #33
0
 def _update_user_with_device(self, _user_uuid, _device_uuid):
     _values = {"uuid": _user_uuid}
     if self.device_is_browser == True:
         _values["browser_device_uuid"] = _device_uuid
     else:
         _values["mobile_device_uuid"] = _device_uuid
     _row = DeviceUser(**_values)
     _row.async_update(self.application.redis)
     _row.update_redis_keys(self.application.redis)
     return
コード例 #34
0
    def _user(self, _device_uuid):
        _v = {"ppcom_mobile_device_uuid": _device_uuid}
        if self._is_browser == True:
            _v = {"ppcom_browser_device_uuid": _device_uuid}

        _v["uuid"] = self._user_uuid
        _row = DeviceUser(**_v)
        _row.async_update()
        _row.update_redis_keys(self.application.redis)
        return
コード例 #35
0
    def _create(self, _ppcom_trace_uuid):
        _redis = self.application.redis
        _key = DeviceUser.__tablename__ + ".ppcom_trace_uuid." + _ppcom_trace_uuid
        _uuid = _redis.get(_key)

        if _uuid != None:
            _user = redis_hash_to_dict(_redis, DeviceUser, _uuid)
            if _user != None:
                _rdata = self.getReturnData()
                _rdata["user_uuid"] = _uuid
                _rdata["user_email"] = _user["user_email"]
                _rdata["user_fullname"] = _user["user_fullname"]
                _rdata["user_icon"] = _user["user_icon"]
                _rdata["user_status"] = _user.get("user_status")
                return

        _app_uuid = _get_config().get("team").get("app_uuid")
        _du_uuid = str(uuid.uuid1())
        _user_email = _du_uuid + "@" + _app_uuid
        _user_name = self._unknown_user_name()
        _user_icon = random_identicon(_du_uuid)

        _values = {
            "uuid": _du_uuid,
            "ppcom_trace_uuid": _ppcom_trace_uuid,
            "user_status": USER_STATUS.ANONYMOUS,
            "is_anonymous_user": True,
            "is_service_user": False,
            "is_owner_user": False,
            "is_removed_user": False,
            "user_name": _user_name,
            "user_email": _user_email,
            "user_fullname": _user_name,
            "user_icon": _user_icon
        }

        _row = DeviceUser(**_values)
        _row.async_add(self.application.redis)
        _row.create_redis_keys(self.application.redis)

        _rdata = self.getReturnData()
        _rdata["user_uuid"] = _du_uuid
        _rdata["user_fullname"] = _user_name
        _rdata["user_email"] = _user_email
        _rdata["user_name"] = _user_name
        _rdata["user_icon"] = _user_icon

        _ip = self.request.headers.get(
            "X-Real-Ip") or self.request.headers.get(
                "remote_ip") or self.request.remote_ip
        IOLoop.current().spawn_callback(self._create_user_name,
                                        user_uuid=_du_uuid,
                                        ip=_ip)
        return
コード例 #36
0
    def _update_user_status(self, _user_uuid):
        _values = {"uuid": _user_uuid}
        _user_status = self.input_data.get("user_status")

        # NULL, READY, BUSY, REST
        if _user_status in SERVICE_USER_STATUS:
            _values["service_user_status"] = _user_status
        else:
            _values["service_user_status"] = SERVICE_USER_STATUS.READY
        _row = DeviceUser(**_values)
        _row.async_update(self.application.redis)
        _row.update_redis_keys(self.application.redis)
        return
コード例 #37
0
def _create_bootstrap_first_user(_session, _config):
    _user_config = _config.get("user")
    _user = DeviceUser(
        createtime=datetime.datetime.now(),
        updatetime=datetime.datetime.now(),
        uuid=str(uuid.uuid1()),
        user_email=_user_config.get("user_email"),
        user_password=hashlib.sha1(_user_config.get("user_password")).hexdigest(),
        user_fullname=_user_config.get("user_fullname"),
        user_firstname=_user_config.get("user_firstname"),
        user_lastname=_user_config.get("user_lastname"),
        user_language=_user_config.get("user_language"),
        user_status=USER_STATUS.ADMIN,
        is_anonymous_user=False,
    )
    _session.add(_user)
    _session.commit()
    _user_config["user_uuid"] = _user.uuid
    return _config
コード例 #38
0
def create_user(_redis, _request):

    _user_email = _request.get("user_email")
    _user_status = _request.get("user_status")
    _user_fullname = _request.get("user_fullname")
    _user_language = _request.get("user_language")
    _user_password = _request.get("user_password")
    _is_service_user = _request.get("is_service_user")

    if not all([_user_email, _user_fullname]):
        return None

    _key = DeviceUser.__tablename__ + ".user_email." + _user_email
    if _redis.exists(_key):
        return None

    if _is_service_user == None:
        _is_service_user = False

    if _user_status == None:
        _user_status = USER_STATUS.THIRDPARTY

    _user_icon = random_identicon(_user_email)

    IOLoop.current().spawn_callback(download_random_identicon, _user_icon)

    _du_uuid = str(uuid.uuid1())

    _values = {
        "uuid": _du_uuid,
        "user_status": _user_status,
        "user_name": _user_email,
        "user_email": _user_email,
        "user_icon": _user_icon,
        "user_language": _user_language,
        "user_fullname": _user_fullname,
        "user_password": _user_password,
        "is_removed_user": False,
        "is_anonymous_user": False,
        "is_service_user": _is_service_user,
        "is_owner_user": False
    }

    _row = DeviceUser(**_values)
    _row.async_add(_redis)
    _row.create_redis_keys(_redis)
    _user_values = _values

    return _user_values
コード例 #39
0
    def _create_user_name(self, user_uuid=None, ip=None):
        logging.info("create anonymous user_uuid: %s, ip: %s" %
                     (user_uuid, ip))
        if user_uuid == None or ip == None:
            return

        url = "http://ipinfo.io/" + ip + "/json"

        http_headers = {"Content-Type": "application/json"}

        http_request = HTTPRequest(url, method='GET', headers=http_headers)

        http_client = AsyncHTTPClient()
        response = yield http_client.fetch(http_request)

        logging.info("geoservice return: %s" % response.body)
        _body = json.loads(response.body)

        if not _body:
            logging.error("cant get user name by ip: %s" % ip)
            return

        _country = _body.get("country")
        _state = _body.get("state")
        _city = _body.get("city")
        _location_user = []

        if _country != None and len(_country) != 0:
            _location_user.append(_country)

        if _state != None and len(_state) != 0:
            _location_user.append(_state)

        if _city != None and len(_city) != 0:
            _location_user.append(_city)

        if len(_location_user) == 0:
            return

        _user_name = ".".join(_location_user)
        _row = DeviceUser(uuid=user_uuid,
                          user_name=_user_name,
                          user_fullname=_user_name)
        _row.update_redis_keys(self.application.redis)
        _row.async_update(self.application.redis)

        return
コード例 #40
0
    def _post(self, _request):
        _redis = self.application.redis

        _user_uuid = _request.get("user_uuid")
        if _user_uuid == None:
            logging.error("no user_uuid")
            self.setErrorCode(API_ERR.NO_PARA)
            return

        _user = redis_hash_to_dict(_redis, DeviceUser, _user_uuid)
        if _user is None:
            logging.error("No user %s." % _user_uuid)
            self.setErrorCode(API_ERR.NO_USER)
            return

        _values = {"uuid": _user_uuid}

        _email = _request.get("email")
        _icon = _request.get("icon")
        _password = _request.get("password")
        _fullname = _request.get("fullname")

        if _email is not None:
            _values["user_email"] = _email

        if _password is not None:
            _values["user_password"] = _password

        if _fullname is not None:
            _values["user_fullname"] = _fullname

        if _icon is not None:
            _file = redis_hash_to_dict(_redis, FileInfo, _icon)
            if _file is not None:
                _values["user_icon"] = _file.get("uuid")
            else:
                logging.error("No file: %s." % _icon)
                self.setErrorCode(API_ERR.NO_FILE)
                return

        if len(_values) > 1:
            _row = DeviceUser(**_values)
            _row.update_redis_keys(_redis)
            _row.async_update()

        return
コード例 #41
0
ファイル: ppkefusetrest.py プロジェクト: zhanghcn/ppmessage-1
    def _set(self):
        _request = json.loads(self.request.body)

        _user_uuid = _request.get("user_uuid")
        if _user_uuid == None or len(_user_uuid) == 0:
            self.setErrorCode(API_ERR.NO_PARA)
            return

        _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid
        if not self.application.redis.exists(_key):
            self.setErrorCode(API_ERR.NO_USER)
            return

        _user = DeviceUser(uuid=_user_uuid, service_user_status=SERVICE_USER_STATUS.REST)
        _user.async_update(self.application.redis)
        _user.update_redis_keys(self.application.redis)
        return
コード例 #42
0
 def _send(self, _user_uuid, _user_email, _user_fullname):
     _new_password = StringGenerator("[a-zA-Z0-9_\[\]\{\}\(\)\|\&\$\-]{8}").render()
     _hash_password = hashlib.sha1(_new_password).hexdigest()
     _row = DeviceUser(uuid=_user_uuid, user_password=_hash_password)
     _row.update_redis_keys(self.application.redis)
     _row.async_update()
     _subject = "[PPMessage]: renew password"
     _text = "Dear %s,\n  Your password has been reset to %s\n Yours Sincerely,\n PPMessage\n" % (_user_fullname, _new_password)
     _html = "<html><body>Dear %s, <br><br> <p>Your password has been changed to <strong>%s</strong>.</p> <p>Yours Sincerely,</p> <p>PPMessage</p></body></html>" % (_user_fullname, _new_password)
     _key = REDIS_EMAIL_KEY
     _request = {
         "to": [_user_email],
         "subject": _subject,
         "text": _text,
         "html": _html
     }
     self.application.redis.rpush(_key, json.dumps(_request))
     return
コード例 #43
0
ファイル: ppconfigapp.py プロジェクト: naocanisme/ppmessage
    def _create_user(self, _request):
        from ppmessage.db.models import DeviceUser
        
        _user_email = _request.get("user_email")
        _user_fullname = _request.get("user_fullname")
        _user_password = _request.get("user_password")
        _user_language = _request.get("user_language")

        _user_uuid = str(uuid.uuid1())
        _row = DeviceUser(uuid=_user_uuid,
                          user_email=_user_email,
                          user_password=_user_password,
                          user_language=_user_language)
        
        _row.create_redis_keys(self.application.redis)
        _row.async_add(self.application.redis)
        self._user_uuid = _user_uuid
        return True
コード例 #44
0
    def _exist_user(self, _user_uuid):
        _update = {"uuid": _user_uuid}
        if self._user_email:
            _update.update({"user_email": self._user_email})
        if self._user_icon:
            _update.update({"user_icon": self._user_icon})
        if self._user_mobile:
            _update.update({"user_mobile": self._user_mobile})
        if self._user_name:
            _update.update({"user_fullname": self._user_fullname})

        if _update:
            _row = DeviceUser(**_update)
            _row.update_redis_keys(self.application.redis)
            _row.async_update(self.application.redis)

        _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid
        _r = self.getReturnData()
        _r.update(self.application.redis.hgetall(_key))
        return
コード例 #45
0
    def _remove(self, _user_uuid, _user_password):
        _redis = self.application.redis
        _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid
        if not _redis.exists(_key):
            self.setErrorCode(API_ERR.NO_USER)
            return

        _pass_hash = _redis.hget(_key, "user_password")
        _pass_hash = hashlib.sha1(_pass_hash).hexdigest()
        if _pass_hash != _user_password:
            self.setErrorCode(API_ERR.ERR_MIS)
            return

        _key = AppInfo.__tablename__ + ".user_uuid." + _user_uuid
        if _redis.exists(_key):
            self.setErrorCode(API_ERR.APP_OWNER)
            return

        # FIXME: other org group data
        # conversation data / app user data etc.
        _row = DeviceUser(uuid=_user_uuid)
        _row.async_delete()
        _row.delete_redis_keys(_redis)
        return
コード例 #46
0
def create_user(_redis, _request):
    '''
    @param _redis
    @param _request a dictionary contains create user's related param
    @return user dict
    '''
    
    _app_uuid = _request.get("app_uuid")
    _user_email = _request.get("user_email")
    _user_status = _request.get("user_status")
    _user_fullname = _request.get("user_fullname")
    _user_language = _request.get("user_language")
    _user_password = _request.get("user_password")
    _is_service_user = _request.get("is_service_user")
    
    if _user_email == None or _app_uuid == None or _user_fullname == None:
        return None

    _key = DeviceUser.__tablename__ + ".user_email." + _user_email
    if _redis.exists(_key):
        return None
        
    if _is_service_user != None:
        _is_portal_user = not _is_service_user
    else:
        _is_service_user = False
        _is_portal_user = not _is_service_user

    if _user_status == None:
        _user_status = USER_STATUS.THIRDPARTY

    _user_icon = random_identicon(_user_email)

    IOLoop.current().spawn_callback(download_random_identicon, _user_icon)
    
    _du_uuid = str(uuid.uuid1())
    _values = {
        "uuid": _du_uuid,
        "user_status": _user_status,
        "user_name": _user_email,
        "user_email": _user_email,
        "user_icon": _user_icon,
        "user_language": _user_language,
        "user_fullname": _user_fullname,
        "user_password": _user_password,
        "is_anonymous_user": False,
    }
    
    _row = DeviceUser(**_values)
    _row.async_add(_redis)
    _row.create_redis_keys(_redis)
    _user_values = _values
    
    _data_uuid = str(uuid.uuid1())
    _values = {
        "uuid": _data_uuid,
        "user_uuid": _du_uuid,
        "app_uuid": _app_uuid,
        "user_fullname": _user_values["user_fullname"],
        "is_portal_user": _is_portal_user,
        "is_service_user": _is_service_user,
        "is_owner_user": False
    }
    _row = AppUserData(**_values)
    _row.async_add(_redis)
    _row.create_redis_keys(_redis)
    
    return _user_values
コード例 #47
0
def create_user(_redis, _request):
    '''
    @param _redis
    @param _request a dictionary contains create user's related param
    @return user dict
    '''

    _app_uuid = _request.get("app_uuid")
    _user_email = _request.get("user_email")
    _user_status = _request.get("user_status")
    _user_fullname = _request.get("user_fullname")
    _user_language = _request.get("user_language")
    _user_password = _request.get("user_password")
    _is_service_user = _request.get("is_service_user")

    if _user_email == None or _app_uuid == None or _user_fullname == None:
        return None

    _key = DeviceUser.__tablename__ + ".user_email." + _user_email
    if _redis.exists(_key):
        return None

    if _is_service_user != None:
        _is_portal_user = not _is_service_user
        _is_distributor_user = _is_service_user
    else:
        _is_service_user = False
        _is_portal_user = not _is_service_user
        _is_distributor_user = _is_service_user

    if _user_status == None:
        _user_status = USER_STATUS.THIRDPARTY

    _du_uuid = str(uuid.uuid1())
    _values = {
        "uuid": _du_uuid,
        "user_status": _user_status,
        "user_name": _user_email,
        "user_email": _user_email,
        "user_language": _user_language,
        "user_fullname": _user_fullname,
        "user_password": _user_password,
        "is_anonymous_user": False,
    }
    _row = DeviceUser(**_values)
    _row.async_add(_redis)
    _row.create_redis_keys(_redis)
    _user_values = _values

    _data_uuid = str(uuid.uuid1())
    _values = {
        "uuid": _data_uuid,
        "user_uuid": _du_uuid,
        "app_uuid": _app_uuid,
        "is_portal_user": _is_portal_user,
        "is_service_user": _is_service_user,
        "is_distributor_user": _is_distributor_user,
        "is_owner_user": False,
    }
    _row = AppUserData(**_values)
    _row.async_add(_redis)
    _row.create_redis_keys(_redis)

    return _user_values
コード例 #48
0
    def _create(self, _ppcom_trace_uuid):
        _redis = self.application.redis
        _key = DeviceUser.__tablename__ + ".ppcom_trace_uuid." + _ppcom_trace_uuid
        _uuid = _redis.get(_key)
        logging.info(_key)
        if _uuid != None:
            _user = redis_hash_to_dict(_redis, DeviceUser, _uuid)
            if _user != None:
                _rdata = self.getReturnData()
                _rdata["user_uuid"] = _uuid
                _rdata["user_email"] = _user["user_email"]
                _rdata["user_fullname"] = _user["user_fullname"]
                _rdata["user_icon"] = _user["user_icon"]
                return

        _du_uuid = str(uuid.uuid1())
        _user_email = _du_uuid[:6] + "@" + self.app_uuid[:6]
        _user_name = self._create_user_name()

        _values = {
            "uuid": _du_uuid,
            "ppcom_trace_uuid": _ppcom_trace_uuid,
            "user_status": USER_STATUS.ANONYMOUS,
            "is_anonymous_user": True,
            "user_name": _user_name,
            "user_email": _user_email,
            "user_fullname": _user_name,
            "user_icon": create_user_icon(_du_uuid),
        }

        _row = DeviceUser(**_values)
        _row.async_add()
        _row.create_redis_keys(self.application.redis)

        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "app_uuid": self.app_uuid,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False,
            "is_distributor_user": False,
        }
        _row = AppUserData(**_values)
        _row.async_add()
        _row.create_redis_keys(self.application.redis)

        _rdata = self.getReturnData()
        _rdata["user_uuid"] = _du_uuid
        _rdata["user_fullname"] = _user_name
        _rdata["user_email"] = _user_email
        _rdata["user_name"] = _user_name
        return
コード例 #49
0
def create_user(redis, _request):
    '''
    @param redis
    @param _request a dictionary contains create user's related param
    @return {
        'error_code': xx,
        'xxx': xx,
        'yyy': xx,
        ...
    }
    '''
    _return_data = {
        "error_code": API_ERR.NO_ERR
    }
    
    _app_uuid = _request.get("app_uuid")
    _user_email = _request.get("user_email")
    _user_firstname = _request.get("user_firstname")
    _user_lastname = _request.get("user_lastname")
    _user_fullname = _request.get("user_fullname")
    _user_language = _request.get("user_language")
    _user_company = _request.get("user_company")
    _is_service_user = _request.get("is_service_user")
    _user_status = _request.get("user_status")
    _user_password = _request.get("user_password")
    
    if _user_email == None or _app_uuid == None:
        _return_data["error_code"] = API_ERR.NO_PARA
        return _return_data

    if _user_fullname == None and _user_firstname == None and _user_lastname == None:
        _return_data["error_code"] = API_ERR.NO_PARA
        return _return_data

    _redis = redis
    _key = DeviceUser.__tablename__ + ".user_email." + _user_email
    if _redis.exists(_key):
        logging.error("user %s existed." % _user_email)
        _return_data["error_code"] = API_ERR.EX_USER
        _return_data["user_uuid"] = _redis.get(_key)
        return _return_data

    if _user_firstname != None and _user_lastname != None:
        _user_fullname = _user_firstname + " " + _user_lastname
        
    if _is_service_user != None:
        _is_portal_user = not _is_service_user
        _is_distributor_user = _is_service_user
    else:
        _is_service_user = False
        _is_portal_user = not _is_service_user
        _is_distributor_user = _is_service_user

    if _user_status == None:
        _user_status = USER_STATUS.THIRDPARTY
            
    _du_uuid = str(uuid.uuid1())
    _values = {
        "uuid": _du_uuid,
        "user_status": _user_status,
        "user_name": _user_email,
        "user_email": _user_email,
        "user_fullname": _user_fullname,
        "user_firstname": _user_firstname,
        "user_lastname": _user_lastname,
        "user_company": _user_company,
        "user_password": _user_password,
        "is_anonymous_user": False,
    }
    _row = DeviceUser(**_values)
    _row.async_add()
    _row.create_redis_keys(_redis)
    _user_values = _values

    # if _app_uuid != PPMESSAGE_APP["uuid"]:
    #     _data_uuid = str(uuid.uuid1())
    #     _values = {
    #         "uuid": _data_uuid,
    #         "user_uuid": _du_uuid,
    #         "app_uuid": PPMESSAGE_APP["uuid"],
    #         "is_portal_user": True,
    #         "is_service_user": False,
    #         "is_distributor_user": False,
    #         "is_owner_user": False,
    #     }
    #     _row = AppUserData(**_values)
    #     _row.async_add()
    #     _row.create_redis_keys(_redis)
    
    _data_uuid = str(uuid.uuid1())
    _values = {
        "uuid": _data_uuid,
        "user_uuid": _du_uuid,
        "app_uuid": _app_uuid,
        "is_portal_user": _is_portal_user,
        "is_service_user": _is_service_user,
        "is_distributor_user": _is_distributor_user,
        "is_owner_user": False,
    }
    _row = AppUserData(**_values)
    _row.async_add()
    _row.create_redis_keys(_redis)
    
    _rdata = _return_data
    _rdata.update(_user_values)

    return _rdata
コード例 #50
0
    def _create_third_party(self, _app_uuid, _user_email, _user_fullname,
                            _user_icon):
        _redis = self.application.redis
        _du_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _du_uuid,
            "user_status": USER_STATUS.THIRDPARTY,
            "user_name": _user_email,
            "user_email": _user_email,
            "user_fullname": _user_fullname,
            "is_anonymous_user": False,
        }

        if _user_icon != None:
            _values["user_icon"] = _user_icon
            IOLoop.current().spawn_callback(download_random_identicon,
                                            _user_icon)
        else:
            _user_icon = random_identicon(_user_email)
            _values["user_icon"] = _user_icon
            IOLoop.current().spawn_callback(download_random_identicon,
                                            _user_icon)

        _row = DeviceUser(**_values)
        _row.async_add(_redis)
        _row.create_redis_keys(_redis)

        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "app_uuid": _app_uuid,
            "user_fullname": _user_fullname,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False
        }
        _row = AppUserData(**_values)
        _row.async_add(_redis)
        _row.create_redis_keys(_redis)

        _r = self.getReturnData()
        _r["user_uuid"] = _du_uuid
        return
コード例 #51
0
    def _update(self):
        _redis = self.application.redis
        _request = json.loads(self.request.body)

        _user_uuid = _request.get("user_uuid")
        _user_icon = _request.get("user_icon")

        _user_mobile = _request.get("user_mobile")
        _user_email = _request.get("user_email")
        
        if _user_uuid == None :
            self.setErrorCode(API_ERR.NO_PARA)
            return

        _old_password = _request.get("old_password")
        _user_password = _request.get("user_password")
        if _old_password != None and _user_password != None:
            _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid
            _ex_password = _redis.hget(_key, "user_password")
            if _ex_password != _old_password:
                self.setErrorCode(API_ERR.MIS_ERR)
                return

        # remove not table fields
        _data = copy.deepcopy(_request)
        del _data["user_uuid"]

        if _old_password != None:
            del _data["old_password"]

        if _user_icon != None:
            if _user_icon.startswith("http"):
                IOLoop.current().spawn_callback(download_random_identicon, _user_icon)
            else:
                _generic_store = get_config_server_generic_store()
                _abs = _generic_store + os.path.sep + _user_icon
                _dest = get_config_server_identicon_store()
                shutil.copy(_abs, _dest)
                if os.path.exists(_abs):
                    IOLoop.current().spawn_callback(upload_random_identicon, _abs)
                    _data["user_icon"] = get_random_identicon_url(_user_icon)

        if len(_data) > 0:
            _updated = generic_update(_redis, DeviceUser, _user_uuid, _data)
            if not _updated:
                self.setErrorCode(API_ERR.GENERIC_UPDATE)
                return

        if _user_mobile:
            import phonenumbers
            _p = phonenumbers.parse(_user_mobile, None)

            if not phonenumbers.is_valid_number(_p):
                self.setErrorCode(API_ERR.INVALID_PHONENUMBER)
                return

            _row = DeviceUser(uuid=_user_uuid,
                              user_mobile=_user_mobile)
            _row.update_redis_keys(_redis)
            _row.async_update(_redis)

        if _user_email:
            _key = DeviceUser.__tablename__ + ".user_email." + _user_email
            if _redis.exists(_key):
                self.setErrorCode(API_ERR.EX_USER)
                return

            _key = DeviceUser.__tablename__ + ".uuid." + _user_uuid
            _old_email = _redis.hget(_key, "user_email")
            if _old_email:
                _key = DeviceUser.__tablename__ + ".user_email." + _old_email
                _redis.delete(_key)
                
            _row = DeviceUser(uuid=_user_uuid,
                              user_email=_user_email)
            _row.update_redis_keys(_redis)
            _row.async_update(_redis)

        return
コード例 #52
0
    def _create(self, _ppcom_trace_uuid):
        _redis = self.application.redis
        _key = DeviceUser.__tablename__ + ".ppcom_trace_uuid." + _ppcom_trace_uuid
        _uuid = _redis.get(_key)

        if _uuid != None:
            _user = redis_hash_to_dict(_redis, DeviceUser, _uuid)
            if _user != None:
                _rdata = self.getReturnData()
                _rdata["user_uuid"] = _uuid
                _rdata["user_email"] = _user["user_email"]
                _rdata["user_fullname"] = _user["user_fullname"]
                _rdata["user_icon"] = _user["user_icon"]
                return
        
        _du_uuid = str(uuid.uuid1())
        _user_email = _du_uuid[:6] + "@" + self.app_uuid[:6]
        _user_name = self._unknown_user_name()
        
        _values = {
            "uuid": _du_uuid,
            "ppcom_trace_uuid": _ppcom_trace_uuid,
            "user_status": USER_STATUS.ANONYMOUS,
            "is_anonymous_user": True,
            "user_name": _user_name,
            "user_email": _user_email,
            "user_fullname": _user_name,
            "user_icon": create_user_icon(_du_uuid),
        }
        
        _row = DeviceUser(**_values)
        _row.async_add(self.application.redis)
        _row.create_redis_keys(self.application.redis)

        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "app_uuid": self.app_uuid,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False
        }
        _row = AppUserData(**_values)
        _row.async_add(self.application.redis)
        _row.create_redis_keys(self.application.redis)
        
        _rdata = self.getReturnData()
        _rdata["user_uuid"] = _du_uuid
        _rdata["user_fullname"] = _user_name
        _rdata["user_email"] = _user_email
        _rdata["user_name"] = _user_name

        _ip = self.request.headers.get("X-Real-Ip") or self.request.headers.get("remote_ip") or self.request.remote_ip
        logging.info(str(self.request.headers))
        logging.info("create anonymous ip: %s" % _ip)
        IOLoop.instance().spawn_callback(self._create_user_name, user_uuid=_du_uuid, ip=_ip)
        return
コード例 #53
0
ファイル: proc.py プロジェクト: zoulinlin/ppmessage
 def _user_latest_send_message_time(self):
     _now = datetime.datetime.now()
     _row = DeviceUser(uuid=self._from_uuid, latest_send_message_time=_now)
     _row.async_update(self._redis)
     return
コード例 #54
0
def Csv2Mysql(csv_file):
    dbsession_class = getDatabaseInstance().dbsession_class
    db_session = dbsession_class()
    csv_data = csv.reader(file(csv_file))

    flag = 0
    for i in csv_data:
        flag += 1
        if flag != 1:
            row = []
            for item in i:
                row.append(encodeToUtf8(item, code_str))
            try:
                user_id = isUserExists(db_session, row[0])
                if not user_id:
                    deviceuser = DeviceUser()
                    deviceuser.user_name = row[0]
                    deviceuser.user_fullname = row[1]
                    deviceuser.user_email = row[2]
                    deviceuser.user_type = row[3]
                    deviceuser.user_status = row[4]
                    deviceuser.user_icon = "/static/yvertical/assets/img/user1.png"
                    deviceuser.user_gender = row[5]
                    deviceuser.user_dob = row[6]
                    deviceuser.user_doj = row[7]
                    deviceuser.user_rid = row[8]
                    deviceuser.user_iid = row[9]
                    is_byod = isByod(row[12])
                    deviceuser.user_is_byod = is_byod
                    deviceuser.user_is_enod = not is_byod
                    db_session.add(deviceuser)
                    db_session.commit()
                    user_id = deviceuser.id
            except:
                dbsession_class.remove()
                traceback.print_exc()
                break
                
            try:
                group_id = isGroupExists(db_session, row[11])
                if not group_id:
                    orggroup = OrgGroup()
                    orggroup.group_name = row[11]
                    orggroup.group_icon = "/static/yvertical/assets/img/group.jpg"
                    db_session.add(orggroup)
                    db_session.commit()
                    group_id = orggroup.id
            except:
                dbsession_class.remove()
                traceback.print_exc()

            try:
                user_data_id = isUserDataExists(db_session, user_id, group_id)
                if not user_data_id:
                    user_data = OrgGroupUserData()
                    user_data.group_id = group_id
                    user_data.user_id = user_id
                    user_data.is_leader = isLeader(row[10])
                    db_session.add(user_data)
                    db_session.commit()
            except:
                dbsession_class.remove()
                traceback.print_exc()

        else:
            if isinstance(i[0], unicode):
                code_str = None
            else:
                code_str = chardet.detect(i[0])["encoding"]
コード例 #55
0
    def _create_third_party(self, _app_uuid, _user_email, _user_fullname, _user_icon):
        _redis = self.application.redis
        _du_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _du_uuid,
            "user_status": USER_STATUS.THIRDPARTY,
            "user_name": _user_email,
            "user_email": _user_email,
            "user_fullname": _user_fullname,
            "is_anonymous_user": False,
        }
        if _user_icon != None:
            _values["user_icon"] = _user_icon

        _row = DeviceUser(**_values)
        _row.async_add()
        _row.create_redis_keys(_redis)
        
        _data_uuid = str(uuid.uuid1())
        _values = {
            "uuid": _data_uuid,
            "user_uuid": _du_uuid,
            "app_uuid": _app_uuid,
            "is_portal_user": True,
            "is_service_user": False,
            "is_owner_user": False,
            "is_distributor_user": False,
        }
        _row = AppUserData(**_values)
        _row.async_add()
        _row.create_redis_keys(_redis)

        _r = self.getReturnData()
        _r["user_uuid"] = _du_uuid
        return