2025-01-31 21:36:31 +08:00

98 lines
3.1 KiB
Python

from flask import Flask, render_template, request, redirect, url_for, flash, session
from extensions import db # 从 extensions 导入 db
from movies import movies_bp # 导入蓝图
from models import User
app = Flask(__name__)
app.secret_key = 'f0d89ad2bad39872d3a48871ba4f95f4aea178fb8d1e43'
# 配置 MySQL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3316/filmsystem'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 初始化数据库
db.init_app(app)
# 注册猜你喜欢模块
from recommendations import recommendations_bp
app.register_blueprint(recommendations_bp)
# 注册detail.html蓝图
app.register_blueprint(movies_bp)
# 注册dashboard.html蓝图
from dashboard import dashboard_bp
app.register_blueprint(dashboard_bp)
@app.route('/')
def index():
return redirect(url_for('auth'))
# 注册/登录页面
@app.route('/auth', methods=['GET', 'POST'])
def auth():
if 'user_id' in session: # 已登录用户重定向
return redirect(url_for('dashboard'))
if request.method == 'POST':
# 检查当前表单模式
mode = request.form.get('mode')
if mode == 'register': # 注册流程
email = request.form.get('email')
password = request.form.get('password') # 明文存储密码
nickname = request.form.get('nickname')
user_type = request.form.get('user_type')
# 是否已经注册
if User.query.filter_by(email=email).first():
flash('Email is already registered.')
return redirect(url_for('auth'))
# 创建用户并保存
new_user = User(
email=email,
password=password,
nickname=nickname,
user_type=user_type
)
db.session.add(new_user)
db.session.commit()
flash('Registration successful! Please log in.')
return redirect(url_for('auth'))
elif mode == 'login': # 登录流程
email = request.form.get('email')
password = request.form.get('password')
# 查询用户
user = User.query.filter_by(email=email).first()
if user and user.password == password: # 直接比较明文密码
session['user_id'] = user.id # 保存用户会话
session['nickname'] = user.nickname # 保存昵称在session中
session['user_type'] = user.user_type # 保存用户身份
return redirect(url_for('dashboard'))
else:
flash('Invalid email or password.')
return redirect(url_for('auth'))
return render_template('auth.html') # 渲染注册/登录页面
# 用户仪表盘,只有登录后才能访问
@app.route('/dashboard')
def dashboard():
if 'user_id' not in session:
return redirect(url_for('auth'))
return "Welcome to the dashboard!"
# 退出登录
@app.route('/logout')
def logout():
session.pop('user_id', None)
flash('You have been logged out.')
return redirect(url_for('auth'))
if __name__ == '__main__':
app.run(debug=True)