Atualizar app/app.py

This commit is contained in:
2026-08-19 21:10:08 -03:00
parent c44ce9af80
commit 941be709b4
+75 -3
View File
@@ -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"])