Atualizar app/app.py
This commit is contained in:
+72
@@ -38,7 +38,12 @@ def admin_required(f):
|
||||
@wraps(f)
|
||||
def wrapper(*args, **kwargs):
|
||||
db = SessionLocal()
|
||||
|
||||
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 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"])
|
||||
|
||||
Reference in New Issue
Block a user