import { Router } from 'express' import { createManagedAdminUser, getAdminUserList, resetManagedAdminUserPassword, updateManagedAdminUserInventoryGroups, updateManagedAdminUserRole, updateManagedAdminUserStatus, } from '../../services/admin/admin-auth-service.js' import { createJsonHandler, requireAdminRoles } from './shared.js' const router = Router() router.use('/users', requireAdminRoles(['admin'])) router.get('/users', createJsonHandler( (req) => getAdminUserList(req.query), { successMessage: 'ok', errorMessage: '读取后台用户列表失败', scope: '[admin/users]', }, )) router.post('/users', createJsonHandler( (req) => createManagedAdminUser(req.body), { successMessage: '后台用户已创建', errorMessage: '创建后台用户失败', scope: '[admin/users:create]', audit: (_req, data) => ({ action: 'admin_user_created', targetType: 'admin_user', targetId: String(data.user.userId), data: { username: data.user.username, role: data.user.role, status: data.user.status, }, }), }, )) router.post('/users/:userId/role', createJsonHandler( (req) => updateManagedAdminUserRole(req.params.userId, req.body, req.adminSession), { successMessage: '用户角色已更新', errorMessage: '更新用户角色失败', scope: '[admin/users/:userId/role]', audit: (_req, data) => ({ action: 'admin_user_role_updated', targetType: 'admin_user', targetId: String(data.user.userId), data: { username: data.user.username, role: data.user.role, }, }), }, )) router.post('/users/:userId/status', createJsonHandler( (req) => updateManagedAdminUserStatus(req.params.userId, req.body, req.adminSession), { successMessage: '用户状态已更新', errorMessage: '更新用户状态失败', scope: '[admin/users/:userId/status]', audit: (_req, data) => ({ action: 'admin_user_status_updated', targetType: 'admin_user', targetId: String(data.user.userId), data: { username: data.user.username, status: data.user.status, }, }), }, )) router.post('/users/:userId/inventory-groups', createJsonHandler( (req) => updateManagedAdminUserInventoryGroups(req.params.userId, req.body, req.adminSession), { successMessage: '用户库存组已更新', errorMessage: '更新用户库存组失败', scope: '[admin/users/:userId/inventory-groups]', audit: (_req, data) => ({ action: 'admin_user_inventory_groups_updated', targetType: 'admin_user', targetId: String(data.user.userId), data: { username: data.user.username, inventoryGroupCodes: data.user.inventoryGroupCodes, }, }), }, )) router.post('/users/:userId/reset-password', createJsonHandler( (req) => resetManagedAdminUserPassword(req.params.userId, req.body), { successMessage: '用户密码已重置', errorMessage: '重置用户密码失败', scope: '[admin/users/:userId/reset-password]', audit: (_req, data) => ({ action: 'admin_user_password_reset', targetType: 'admin_user', targetId: String(data.user.userId), data: { username: data.user.username, }, }), }, )) export default router