from flask_migrate import Migrate from models import db, Benutzer from flask_httpauth import HTTPBasicAuth from werkzeug.security import generate_password_hash, check_password_hash from flask import Flask, jsonify, request import json auth = HTTPBasicAuth() app = Flask(__name__) autorisierte_benutzer = { "admin": generate_password_hash("admin") } #engine = create_engine("postgresql://postgres:postgres@postgres:5432/web-sec",echo = True) #conn = engine.connect() app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://postgres:postgres@postgres:5432/web-sec" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) migrate = Migrate(app, db) @auth.verify_password def verify_password(username, password): if username in autorisierte_benutzer and \ check_password_hash(autorisierte_benutzer.get(username), password): return username @app.route('/') @auth.login_required def index(): return json.dumps({'Aufgabe1': 'Security of web applications'}) @app.route("/benutzer/<id>", methods=["GET"]) @auth.login_required def get_email(id): exists = db.session.query(db.exists().where(Benutzer.customerid == id)).scalar() if exists: benutzer_email = db.session.query(Benutzer.email).filter(Benutzer.customerid == id).first()[0] return jsonify(email=benutzer_email) else: return json.dumps({'Benutzer': 'existiert nicht'}) @app.route("/benutzer", methods=["POST"]) @auth.login_required def create_user(): new_user = Benutzer( vorname=request.json['vorname'], nachname=request.json['nachname'], email=request.json['email'] ) db.session.add(new_user) db.session.commit() benutzer = json.dumps( {"vorname": new_user.vorname, "nachname": new_user.nachname, "email": new_user.email }) #return benutzer return jsonify(benutzer) @app.route("/benutzer/<id>", methods=["DELETE"]) @auth.login_required def delete_user(id): exists = db.session.query(db.exists().where(Benutzer.customerid == id)).scalar() if exists: Benutzer.query.filter_by(customerid=id).delete() db.session.commit() return json.dumps({'Benutzer': 'geloescht'}) else: return json.dumps({'Benutzer': 'existiert nicht'}) if __name__ == "__main__": app.run(debug=True)