Files
luntan/app/blueprints/setup.py

40 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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")