feat: 初始版本,圆角主题与首次管理员引导

This commit is contained in:
2025-12-07 10:53:52 +08:00
commit 63db6a0815
43 changed files with 1293 additions and 0 deletions

39
app/blueprints/setup.py Normal file
View File

@@ -0,0 +1,39 @@
from flask import Blueprint, render_template, request, redirect, url_for, flash
from flask_login import login_user
from werkzeug.security import generate_password_hash
from ..extensions import db
from ..models import User, Profile, UserStatus
bp = Blueprint("setup", __name__, url_prefix="/setup")
@bp.route("/admin", methods=["GET", "POST"])
def admin():
exists = User.query.filter_by(role="admin").first()
if exists:
return redirect(url_for("feed.discover"))
if request.method == "POST":
email = request.form.get("email")
username = request.form.get("username")
password = request.form.get("password")
confirm = request.form.get("confirm")
if not email or not username or not password:
flash("请完整填写信息")
return redirect(url_for("setup.admin"))
if password != confirm:
flash("两次密码不一致")
return redirect(url_for("setup.admin"))
if len(password) < 8:
flash("密码至少8位并包含数字与字母")
return redirect(url_for("setup.admin"))
if User.query.filter((User.email==email) | (User.username==username)).first():
flash("邮箱或用户名已存在")
return redirect(url_for("setup.admin"))
u = User(email=email, username=username, password_hash=generate_password_hash(password), role="admin", status=UserStatus.approved)
db.session.add(u)
db.session.flush()
db.session.add(Profile(user_id=u.id))
db.session.commit()
login_user(u)
flash("管理员创建成功")
return redirect(url_for("admin.dashboard"))
return render_template("setup/admin.html")