feat: log

This commit is contained in:
DengDai
2025-11-24 21:04:58 +08:00
parent ae208d6b39
commit c9e11c4bd1
8 changed files with 180 additions and 156 deletions

View File

@@ -1,4 +1,4 @@
from flask import render_template, redirect, url_for, flash, request
from flask import render_template, redirect, url_for, flash, request, current_app
from flask_login import login_user, logout_user, login_required, current_user
from . import auth
from .. import db
@@ -7,6 +7,7 @@ from ..forms import LoginForm, RegistrationForm
@auth.route('/register', methods=['GET', 'POST'])
def register():
"""用户注册"""
if current_user.is_authenticated:
return redirect(url_for('main.index'))
form = RegistrationForm()
@@ -18,36 +19,43 @@ def register():
username=form.username.data,
pt_site=form.pt_site.data,
uid=form.uid.data,
status='pending' # 新用户需要管理员审核
status='pending'
)
user.set_password(form.password.data)
db.session.add(user)
db.session.commit()
current_app.logger.info(f'新用户注册: {user.username} ({user.email}) - 站点: {user.pt_site}')
flash('注册申请已提交,请等待管理员审核。', 'info')
return redirect(url_for('auth.login'))
return render_template('auth/register.html', form=form)
@auth.route('/login', methods=['GET', 'POST'])
def login():
"""用户登录"""
if current_user.is_authenticated:
return redirect(url_for('main.index'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user is None or not user.check_password(form.password.data):
current_app.logger.warning(f'登录失败: {form.email.data} - 无效的邮箱或密码')
flash('无效的邮箱或密码。', 'danger')
return redirect(url_for('auth.login'))
if user.status != 'active':
current_app.logger.warning(f'登录失败: {user.username} - 账户状态: {user.status}')
flash(f'您的账户当前状态为 "{user.status}",无法登录。请联系管理员。', 'warning')
return redirect(url_for('auth.login'))
login_user(user, remember=form.remember_me.data)
current_app.logger.info(f'用户登录: {user.username} ({user.email})')
return redirect(url_for('main.index'))
return render_template('auth/login.html', form=form)
@auth.route('/logout')
@login_required
def logout():
"""用户登出"""
current_app.logger.info(f'用户登出: {current_user.username}')
logout_user()
flash('您已成功登出。')
return redirect(url_for('main.index'))