예제 #1
0
    def post(self, *args, **kwargs):
        _redis = self.application.redis
        logging.info(self.request.body)
        _user_email = self.get_body_argument("user_email")
        _user_password = self.get_body_argument("user_password")
        _token_data_uuid = self.get_body_argument("token_data_uuid")
        _redirect_uri = self.get_body_argument("redirect_uri")
        _state = self.get_body_argument("state")
        _key = DeviceUser.__tablename__ + ".user_email." + _user_email

        if not _redis.exists(_key):
            logging.info("no such user %s" % _user_email)
            self.send_error(500)
            # self.setErrorCode(API_ERR.NO_USER)
            return

        _user_uuid = _redis.get(_key)
        _user = redis_hash_to_dict(_redis, DeviceUser, _user_uuid)

        if _user == None:
            logging.info("no such user %s" % _user_email)
            self.send_error(500)
            # self.setErrorCode(API_ERR.NO_USER)
            return

        _pass = hashlib.sha1(_user_password).hexdigest()
        if _pass != _user.get("user_password"):
            logging.info("password not match %s" % _user_email)
            self.send_error(500)
            # self.setErrorCode(API_ERR.MIS_ERR)
            return

        _row = ApiTokenData(**{
            "uuid": _token_data_uuid,
            "is_code_authorized": True
        })
        _row.async_update()
        _row.update_redis_keys(_redis)

        _token_data = redis_hash_to_dict(_redis, ApiTokenData,
                                         _token_data_uuid)
        _code = _token_data.get("api_code")
        _redirect_target = _redirect_uri + "?code=" + _code + "&state=" + _state
        logging.info(_redirect_target)
        self.redirect(_redirect_target, permanent=True, status=301)
        return
예제 #2
0
    def post(self, *args, **kwargs):
        _redis = self.application.redis
        logging.info(self.request.body);
        _user_email = self.get_body_argument("user_email")
        _user_password = self.get_body_argument("user_password")
        _token_data_uuid = self.get_body_argument("token_data_uuid")
        _redirect_uri = self.get_body_argument("redirect_uri")
        _state = self.get_body_argument("state")
        _key = DeviceUser.__tablename__ + ".user_email." + _user_email

        if not _redis.exists(_key):
            logging.info("no such user %s" %_user_email)
            self.send_error(500)
            # self.setErrorCode(API_ERR.NO_USER)
            return
        
        _user_uuid = _redis.get(_key)
        _user = redis_hash_to_dict(_redis, DeviceUser, _user_uuid)

        if _user == None:
            logging.info("no such user %s" %_user_email)
            self.send_error(500)
            # self.setErrorCode(API_ERR.NO_USER)
            return
                
        _pass = hashlib.sha1(_user_password).hexdigest()
        if _pass != _user.get("user_password"):
            logging.info("password not match %s" %_user_email)
            self.send_error(500);
            # self.setErrorCode(API_ERR.MIS_ERR)
            return

        _row = ApiTokenData(**{ "uuid": _token_data_uuid, "is_code_authorized": True })
        _row.async_update(_redis)
        _row.update_redis_keys(_redis)
        
        _token_data = redis_hash_to_dict(_redis, ApiTokenData, _token_data_uuid)
        _code = _token_data.get("api_code")
        _redirect_target = _redirect_uri + "?code=" + _code + "&state=" + _state
        logging.info(_redirect_target)
        self.redirect(_redirect_target, permanent=True, status=301)
        return