Atualizar app/app.py
This commit is contained in:
+75
-3
@@ -38,7 +38,12 @@ def admin_required(f):
|
|||||||
@wraps(f)
|
@wraps(f)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
db = SessionLocal()
|
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()
|
u = db.query(User).filter_by(email=email).first()
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
@@ -49,6 +54,7 @@ def admin_required(f):
|
|||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def require_capability(cap):
|
def require_capability(cap):
|
||||||
def decorator(f):
|
def decorator(f):
|
||||||
@wraps(f)
|
@wraps(f)
|
||||||
@@ -79,11 +85,77 @@ google = oauth.register(
|
|||||||
def login_required(f):
|
def login_required(f):
|
||||||
@wraps(f)
|
@wraps(f)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
if "user" not in session:
|
# If using OAuth
|
||||||
return redirect(url_for("login"))
|
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 f(*args, **kwargs)
|
||||||
return wrapper
|
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")
|
@app.route("/login")
|
||||||
def login():
|
def login():
|
||||||
return google.authorize_redirect(app.config["GOOGLE_REDIRECT_URI"])
|
return google.authorize_redirect(app.config["GOOGLE_REDIRECT_URI"])
|
||||||
|
|||||||
Reference in New Issue
Block a user