Skip to content
Snippets Groups Projects
app.py 2.34 KiB
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)