// middleware/employees.js —— 员工管理的业务规则中间件 /** * 允许在创建员工时一并创建系统用户账号(需 user:manage 权限) * 将用户创建参数挂到 req._createUser,由路由在写入 employee 后处理 */ function allowUserCreation(req, res, next) { const { username, password, department_id } = req.body || {} // 没传用户相关字段 → 只创建员工,跳过 if (!username && !password) return next() // 传了用户字段 → 必须有 user:manage 权限 if (!req.user.permissions || !req.user.permissions.includes('user:manage')) { return res.status(403).json({ code: 403, message: '无权限创建用户账号' }) } // 校验必填字段 if (!username || !password || !department_id) { return res.status(400).json({ code: 400, message: '用户名、密码、部门为必填' }) } if (typeof username !== 'string' || username.length < 3 || username.length > 50) { return res.status(400).json({ code: 400, message: '用户名长度需在 3-50 之间' }) } if (typeof password !== 'string' || password.length < 6) { return res.status(400).json({ code: 400, message: '密码至少 6 位' }) } // 挂到 req,供路由在 INSERT employee 后使用 req._createUser = { username, password, department_id } next() } module.exports = { allowUserCreation }