Example #1
0
    def post(self):
        coll = self.application.db.groups
        usercoll = self.application.userdb.users
        data = json.loads(self.request.body.decode("utf-8"))
        userid      = data.get("userid", "")
        token       = data.get("token", "")

        logging.info("begin to check provision for user %s" % userid)

        if not userid or not token:
            logging.error("invalid request")
            self.set_status(403)
            self.finish()
            return

        result = yield usercoll.find_one({"id":userid})
        if not result:
            logging.debug("user does not exist")
            self.set_status(404)
            self.finish()
            return

        needpro = result.get("needprovision", None)

        if needpro:
            phone_number = yield get_bindphone(userid)
            if phone_number:
                logging.info("new user %s provision" % phone_number)
                yield handle_provision(token, userid, phone_number)

        self.finish()
Example #2
0
def check_notify(userid, token):
    _logger.info("check notify for %s %s" % (userid, token))
    result = yield _userdb.users.find_one({"id": userid})

    # check pre provision state
    needpro = result.get("needprovision", None)
    if needpro and token:
        phone_number = yield get_bindphone(userid)
        if phone_number:
            _logger.info("new user %s provision" % phone_number)
            yield handle_provision(token, userid, phone_number)
        else:
            _logger.info("no bindphone found for %s" % userid)
            _userdb.users.find_and_modify({"id": userid}, {"$unset": {"needprovision": 1}})