From 941be709b440ee52ea4bc3860179bf54a9c5e1e5 Mon Sep 17 00:00:00 2001 From: Renato Rosa Date: Wed, 19 Aug 2026 21:10:08 -0300 Subject: [PATCH] Atualizar app/app.py --- app/app.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/app/app.py b/app/app.py index d3ea5db..bf06a0e 100644 --- a/app/app.py +++ b/app/app.py @@ -38,7 +38,12 @@ def admin_required(f): @wraps(f) def wrapper(*args, **kwargs): db = SessionLocal() - email = session["user"]["email"] + + if app.config["AUTH_MODE"] == "oauth": + email = session["user"]["email"] + else: + email = session["db_user"]["email"] + u = db.query(User).filter_by(email=email).first() db.close() @@ -49,6 +54,7 @@ def admin_required(f): return wrapper + def require_capability(cap): def decorator(f): @wraps(f) @@ -79,11 +85,77 @@ google = oauth.register( def login_required(f): @wraps(f) def wrapper(*args, **kwargs): - if "user" not in session: - return redirect(url_for("login")) + # If using OAuth + if app.config["AUTH_MODE"] == "oauth": + if "user" not in session: + return redirect(url_for("login")) + return f(*args, **kwargs) + + # If using DB authentication + if "db_user" not in session: + return redirect("/auth/login") return f(*args, **kwargs) return wrapper + +@app.route("/auth/login", methods=["GET", "POST"]) +def db_login(): + if request.method == "GET": + return send_file("/srv/auth/login.html") + + email = request.form.get("email") + password = request.form.get("password") + + db = SessionLocal() + user = db.query(User).filter_by(email=email).first() + db.close() + + if not user or user.password != password: + return jsonify({"error": "Invalid credentials"}), 401 + + session["db_user"] = { + "email": user.email, + "name": user.name, + "role": user.role + } + + return redirect("/") + +@app.route("/auth/logout") +def db_logout(): + session.pop("db_user", None) + return redirect("/auth/login") + + +@app.route("/auth/register", methods=["POST"]) +def db_register(): + email = request.form.get("email") + password = request.form.get("password") + name = request.form.get("name") + + db = SessionLocal() + if db.query(User).filter_by(email=email).first(): + return jsonify({"error": "User exists"}), 400 + + u = User( + email=email, + name=name, + password=password, + role="user", + can_use_audio=False, + can_use_vision=False, + can_share=True, + can_import_docs=True, + can_export_pdf=True, + can_export_md=True, + ) + db.add(u) + db.commit() + db.close() + + return jsonify({"status": "ok"}) + + @app.route("/login") def login(): return google.authorize_redirect(app.config["GOOGLE_REDIRECT_URI"])