Exemple #1
0
def create_account():
    try:
        data = parse_request(request.form)
        if set(['user_email', 'user_name', 'password']) > data.keys() \
                or data['user_name'] == '' or data['password'] == '':
            return prep_response('invalid param', 400)

        if len(app.config["ALLOW_DOMAIN"]) > 1 and data["user_email"].split("@")[1] not in app.config["ALLOW_MAIL"]:
                return prep_response('invalid email', 400)

        model = DOMAIN['users']
        user = model.get_index({"$or": [{"user_name": data["user_name"]}, {'user_email': data['user_email']}]})
        if user["count"] > 0:
            return prep_response("existed user name or email address.", 400)

        user = {
            "user_name": data['user_name'],
            "user_email": data["user_email"],
            'user_icon': "default.png",
            "password": password_encryption(data['password']),
            "profile": {
                "first_name": '',
                "last_name": '',
                "organization": '',
                "description": ''
            },
            'stocks': [],
            'following_tags': [],
            'following_users': [],
            "status": "inactive"
        }
        if app.config["MAIL_AUTH"]:
            oid = model.post(user)
            if oid:
                # send token by mail
                data["_id"] = oid
                send_token(data)
                ret = {"oid": oid, "action": 'mail_auth'}
            else:
                return prep_response('db error', 500)
        else:
            user["status"] = "active"
            oid = model.post(user)
            login(data["user_email"], data['password'])
            ret = {"oid": oid, "action": 'login'}
        return prep_response(ret)
    except Exception as e:
        logger.debug(e)
        return prep_response('invalid param', 400)
Exemple #2
0
def __rest_collection(collection, query=dict(), sort=("created", -1), per_page=0, page=0):
    if collection in DOMAIN:
        model = DOMAIN[collection]
        try:
            if request.method == 'GET':
                ret = model.get_index(query, sort, per_page, page)
                logger.debug(ret)
                return prep_response(ret)
            elif request.method == 'POST':
                data = parse_request(request.form)
                ret = model.post(data)
                return prep_response(ret, 201)
        except ValueError as e:
            logger.debug(e)
            return prep_response(str(e), 400)
        except Exception as e:
            logger.debug(e)
            return prep_response(str(e), 500)
    abort(404)
Exemple #3
0
def __rest_document(collection, oid):
    if collection in DOMAIN:
        model = DOMAIN[collection]
        try:
            if request.method == "GET":
                ret = model.get_by_id(oid)
                return prep_response(ret)
            elif request.method == "POST":
                data = parse_request(request.form)
                ret = model.patch(oid, data)
                return prep_response(ret)
            elif request.method == "DELETE":
                model.delete(oid)
                return prep_response(dict(), 204)
        except ValueError as e:
            return prep_response(str(e), 400)
        except Exception as e:
            logger.debug(e)
            return prep_response(str(e), 500)
    abort(404)
Exemple #4
0
def auth_login():
    """
    :post_param {string} identify: required
    :post_param {string} password: required
    :return {number} code: status code
    :return {string} token: jwt
    :return {object} user: user info
    :desc:
        user login and get token, user data.
    """
    try:
        data = parse_request(request.form)
        user = login(data['identify'], data['password'])
        if user:
            return prep_response(user)

        return prep_response("invalid identify or password", 401)
    except Exception as e:
        logger.debug(e)
        return prep_response("invalid params", 400)