Files
hsa/Html/apps/views/auth.py
2025-11-13 21:08:30 +08:00

65 lines
2.1 KiB
Python

# myapp/views/auth.py
from flask import Blueprint, render_template, request, jsonify, redirect, url_for, session, current_app
from ..services.auth_service import register_user, login_user, logout_user
from ..auth.decorators import require_role
bp = Blueprint("auth", __name__)
# 将/favicon.ico重定向到/static/favicon.ico
@bp.route('/favicon.ico')
def redirect_favicon():
return redirect(url_for('static', filename='favicon.ico'))
@bp.get("/register")
def register():
return render_template("register.html")
@bp.get("/register_teacher")
def register_teacher():
return render_template("register_teacher.html")
@bp.post("/register_post")
def register_post():
data = request.get_json(force=True) or {}
ok, msg = register_user(data.get("username"), data.get("password"), teacher=False)
return jsonify({"success": ok, "message": msg})
@bp.post("/register_teacher_post")
def register_teacher_post():
data = request.get_json(force=True) or {}
ok, msg = register_user(data.get("username"), data.get("password"), teacher=True)
return jsonify({"success": ok, "message": msg})
@bp.get("/login")
def login():
# 你原来 return 后还有逻辑,已被覆盖;这里简化
return render_template("login.html")
@bp.post("/login_post")
def login_post():
data = request.get_json(force=True) or {}
ok, msg = login_user(data.get("username"), data.get("password"), require_teacher=False)
return jsonify({"success": ok, "message": msg})
@bp.post("/login_teacher_post")
def login_teacher_post():
data = request.get_json(force=True) or {}
ok, msg = login_user(data.get("username"), data.get("password"), require_teacher=True)
return jsonify({"success": ok, "message": msg})
@bp.get("/switch-role/<role>")
@require_role
def switch_role(role):
if role == "teacher":
return redirect(url_for("main.dashboard"))
else:
return redirect(url_for("material.teacherboard"))
@bp.get("/logout")
def logout():
logout_user()
return redirect(url_for("auth.login"))
@bp.get("/get_session")
def get_session():
return jsonify({"session": session.get("user_id", "default_session")})