Files

57 lines
2.2 KiB
Python

from flask import render_template, request, redirect, url_for, flash
from flask_login import login_required, current_user
from scripts.models import db, User, Device
def init_user_routes(app):
def is_admin_user():
"""允许统计员/管理员或名称为 Admin 的用户管理账号"""
return current_user.role in ['统计员', '管理员', 'admin'] or current_user.name == 'Admin'
@app.route('/users', methods=['GET'])
@login_required
def user_list():
if not is_admin_user():
app.logger.warning(f'未授权访问:用户 {current_user.name} 尝试访问用户管理')
flash('您没有权限访问此页面')
return redirect(url_for('dashboard'))
users = User.query.order_by(User.name).all()
branch_options = [b[0] for b in db.session.query(Device.branch).distinct().all() if b[0]]
role_options = ['统计员', '装维员', '管理员']
return render_template(
'users.html',
users=users,
branch_options=branch_options,
role_options=role_options
)
@app.route('/users/<phone>', methods=['POST'])
@login_required
def update_user(phone):
if not is_admin_user():
app.logger.warning(f'未授权访问:用户 {current_user.name} 尝试修改用户 {phone}')
flash('您没有权限执行此操作')
return redirect(url_for('dashboard'))
user = User.query.filter_by(phone=phone).first()
if not user:
flash('用户不存在')
return redirect(url_for('user_list'))
new_branch = request.form.get('branch', '').strip()
new_role = request.form.get('role', '').strip()
if new_role and new_role not in ['统计员', '装维员', '管理员']:
flash('角色不合法')
return redirect(url_for('user_list'))
user.branch = new_branch
user.role = new_role
db.session.commit()
app.logger.info(f'用户信息已更新: {user.name}({user.phone}) -> branch={user.branch}, role={user.role}')
flash('用户信息已更新')
return redirect(url_for('user_list'))