from flask import Flask, request, redirect, url_for, render_template, session, jsonify from db.connection import MySQLPool from config import SECRET_KEY from db.database_manager import DatabaseManager from models.User import User app = Flask(__name__) app.secret_key = SECRET_KEY # 从配置文件设置 # 一个全局MySQLPool对象,用于管理数据库连接 mysql_pool = MySQLPool() @app.route('/') def index(): # 如果用户已登录,则重定向到主页;否则,重定向到登录页面 if 'username' in session: return redirect(url_for('home')) else: return render_template('login.html') @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': data = request.get_json() # print(data) user = User( nickname=data.get('nickname'), phone_number=data.get('cellphone'), # 确保JSON中的键和这里匹配 password=data.get('password'), identity=data.get('identity'), is_active=True # 或者根据你的逻辑设置 ) db_manager = DatabaseManager() if not db_manager.user_exists(user.phone_number): db_manager.insert_user(user) return jsonify({"success": True, "message": "注册成功"}) else: return jsonify({"success": False, "message": "用户已存在"}) else: return render_template('register.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'GET': return render_template('login.html') else: phone_number = request.form['username'] password = request.form['password'] db_manager = DatabaseManager() # 验证用户名和密码... if db_manager.valid_login(phone_number, password): # 登录成功 session['username'] = phone_number return jsonify(success=True, message="登录成功") else: # 登录失败 return jsonify(success=False, message="无效的用户名或密码") @app.route('/forget', methods=['GET', 'POST']) def forget_page(): return render_template('forget.html') @app.route('/home') def home(): if 'username' in session: return render_template('home.html') else: return redirect("login") @app.route('/logout') def logout(): # 清除session中的所有信息 session.clear() # 返回一个响应,或者重定向到登录页面 return redirect('/login') @app.route('/api/menu') def get_menu(): # 根据用户角色或其他逻辑获取菜单项 menu_items = [ {"name": "课程信息", "link": "#"}, {"name": "课程签到", "link": "#"}, {"name": "公告信息", "link": "#"}, {"name": "签到提醒", "link": "#"}, # ... 其他菜单项 ] return jsonify(menu_items) if __name__ == '__main__': app.run(debug=True)