|
@@ -14,6 +14,8 @@ from flask import (
|
|
|
send_from_directory,
|
|
send_from_directory,
|
|
|
abort,
|
|
abort,
|
|
|
jsonify,
|
|
jsonify,
|
|
|
|
|
+ session,
|
|
|
|
|
+ flash,
|
|
|
)
|
|
)
|
|
|
from werkzeug.utils import secure_filename
|
|
from werkzeug.utils import secure_filename
|
|
|
from bs4 import BeautifulSoup
|
|
from bs4 import BeautifulSoup
|
|
@@ -48,6 +50,38 @@ if not config.INDEX_FILE.exists():
|
|
|
json.dump([], f, ensure_ascii=False, indent=2)
|
|
json.dump([], f, ensure_ascii=False, indent=2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+@app.context_processor
|
|
|
|
|
+def inject_user_status():
|
|
|
|
|
+ """向所有模板注入登录状态"""
|
|
|
|
|
+ return {"logged_in": "user" in session}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+# ==================== 登录 / 登出相关路由 ====================
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@app.route("/login", methods=["GET", "POST"])
|
|
|
|
|
+def login():
|
|
|
|
|
+ """密码登录(无需用户名)"""
|
|
|
|
|
+ if request.method == "GET":
|
|
|
|
|
+ return render_template("login.html")
|
|
|
|
|
+
|
|
|
|
|
+ password = request.form.get("password", "")
|
|
|
|
|
+ if password == config.PASSWORD:
|
|
|
|
|
+ session["user"] = True
|
|
|
|
|
+ flash("登录成功", "success")
|
|
|
|
|
+ return redirect(url_for("index"))
|
|
|
|
|
+ else:
|
|
|
|
|
+ flash("密码错误", "danger")
|
|
|
|
|
+ return render_template("login.html")
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@app.route("/logout")
|
|
|
|
|
+def logout():
|
|
|
|
|
+ session.pop("user", None)
|
|
|
|
|
+ flash("已登出", "info")
|
|
|
|
|
+ return redirect(url_for("index"))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
# ==================== 路由 ====================
|
|
# ==================== 路由 ====================
|
|
|
|
|
|
|
|
|
|
|
|
@@ -95,7 +129,12 @@ def index():
|
|
|
|
|
|
|
|
@app.route("/upload", methods=["GET", "POST"])
|
|
@app.route("/upload", methods=["GET", "POST"])
|
|
|
def upload():
|
|
def upload():
|
|
|
- """上传文章"""
|
|
|
|
|
|
|
+ """上传文章(需要登录)"""
|
|
|
|
|
+ # 登录检查
|
|
|
|
|
+ if "user" not in session:
|
|
|
|
|
+ flash("请先登录", "warning")
|
|
|
|
|
+ return redirect(url_for("login"))
|
|
|
|
|
+
|
|
|
if request.method == "GET":
|
|
if request.method == "GET":
|
|
|
return render_template("upload.html")
|
|
return render_template("upload.html")
|
|
|
|
|
|