def update(): current_user = get_jwt_identity() pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add(ensureParam, [request, 'id']) pipeline.add(ensureParam, [request, 'receiver']) pipeline.add(ensureParam, [request, 'phonenumber']) pipeline.add(ensureParam, [request, 'address']) broken, retvs = pipeline.run() if broken: return retvs _, _id, receiver, phonenumber, address = retvs sess = DBSession() addr = sess.query(Address).filter_by(id=_id).first() user = sess.query(User).filter_by(id=current_user).first() if (addr != None) and (addr.owner_id == current_user): addr.receiver = receiver addr.phonenumber = phonenumber addr.address = address sess.commit() return jsonify(result=True), 200 return jsonify(result=False, reson="BAD ADDRESS ID"), 200
def login(): if ('captcha' not in session.keys()) or (session['captcha'] is None): return jsonify(result=False, reason="Please reload captcha first"), 400 pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add(ensureCaptcha, [request, session]) pipeline.add( ensureParam, [request, 'username', lambda: invalidateSession(session, 'captcha')]) pipeline.add( ensureParam, [request, 'password', lambda: invalidateSession(session, 'captcha')]) broken, retvs = pipeline.run() if broken: return retvs _, _, username, password = retvs sess = DBSession() user = sess.query(User).filter_by(username=username).first() if not user or not cmparePswd(password, user.password): session['captcha'] = None return jsonify(result=False, reason="Bad username or password"), 401 expires = datetime.timedelta(days=1) token = create_access_token(identity=user.id, expires_delta=expires) session['captcha'] = None return jsonify(result=True, access_token=token, user_type=user.getUserType()), 200
def registery(): if (not 'captcha' in session.keys()) or (session['captcha'] == None): return jsonify(result=False, reason="Please reload captcha first"), 400 pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add(ensureCaptcha, [request, session]) pipeline.add( ensureParam, [request, 'username', lambda: invalidateSession(session, 'captcha')]) pipeline.add( ensureParam, [request, 'password', lambda: invalidateSession(session, 'captcha')]) broken, retvs = pipeline.run() if broken: return retvs _, _, username, password = retvs sess = DBSession() user = User(username) user.setPassword(password) sess.add(user) sess.commit() session['captcha'] = None return jsonify(result=True), 200
def loginAs(): if not inDebugging(): return 'FORBIDDEN' pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add( ensureParam, [request, 'username', lambda: invalidateSession(session, 'captcha')]) broken, retvs = pipeline.run() if broken: return retvs _, username = retvs sess = DBSession() user = sess.query(User).filter_by(username=username).first() token = create_access_token(identity=user.id) return jsonify(msg="Login successfully as " + user.username, access_token=token), 200
def changepswd(): current_user = get_jwt_identity() pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add(ensureParam, [request, 'username']) pipeline.add(ensureParam, [request, 'oripswd']) pipeline.add(ensureParam, [request, 'newpswd']) broken, retvs = pipeline.run() if broken: return retvs _, username, oripswd, newpswd = retvs sess = DBSession() user = sess.query(User).filter_by(username=username).first() if not user or not cmparePswd( oripswd, user.password) or not user.id == current_user: return jsonify({"msg": "Bad username or password"}), 401 user.setPassword(newpswd) sess.commit() invalidate(get_raw_jwt()) return jsonify(msg="Change password successfully, please relogin"), 200
def delete(): current_user = get_jwt_identity() pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add(ensureParam, [request, 'id']) broken, retvs = pipeline.run() if broken: return retvs _, _id = retvs sess = DBSession() addr = sess.query(Address).filter_by(id=_id).first() user = sess.query(User).filter_by(id=current_user).first() if (addr != None) and (addr.owner_id == current_user): if user.default_address_id == addr.id: user.default_address_id = None sess.commit() sess.delete(addr) sess.commit() return jsonify(result=True), 200 return jsonify(result=False, reson="BAD ADDRESS ID"), 200
def createProductWithDescription(): pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add(ensureParam, [request, 'description']) pipeline.add(ensureParam, [request, 'category']) pipeline.add(ensureParam, [request, 'name']) broken, retvs = pipeline.run() if broken: return retvs _, desc_json, category, name = retvs product = Product(name, category) db.session.add(product) db.session.commit() description = Description(desc_json, product.id) description.active = True db.session.add(description) db.session.commit() return jsonify(msg="Create Product With Description successfully", product_id=product.id), 200
def add(): current_user = get_jwt_identity() pipeline = Pipeline(request) pipeline.add(ensureJson) pipeline.add(ensureParam, [request, 'receiver']) pipeline.add(ensureParam, [request, 'phonenumber']) pipeline.add(ensureParam, [request, 'address']) broken, retvs = pipeline.run() if broken: return retvs _, receiver, phonenumber, address = retvs addr = Address(current_user, receiver, phonenumber, address) sess = DBSession() sess.add(addr) sess.commit() user = sess.query(User).filter_by(id=current_user).first() if user.default_address_id is None: user.default_address_id = addr.id sess.commit() return jsonify(result=True, id=addr.id), 200