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)
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)
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)
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)