Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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