Skip to content
Snippets Groups Projects
app.py 2.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
    
    
    auth = HTTPBasicAuth()
    
    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
    
    @auth.login_required
    
            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'})
        
    
        app.run(debug=True)