Files
backmanager-server/middleware/employees.js

36 lines
1.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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 }