const express = require('express'); const { verifySuperAdmin, verifyToken } = require('../auth'); const { createUser, deleteUser, listActiveOperationalUsers, listUsers, updateUser } = require('../services/userService'); const router = express.Router(); router.get('/users/operational', verifyToken, async (req, res, next) => { try { res.json({ users: await listActiveOperationalUsers() }); } catch (error) { next(error); } }); router.get('/users', verifySuperAdmin, async (req, res, next) => { try { const users = await listUsers(); res.json({ users }); } catch (error) { next(error); } }); router.post('/users', verifySuperAdmin, async (req, res, next) => { try { const { name, email, password } = req.body || {}; const { user, password: userPassword, generatedPassword } = await createUser({ name, email, password }); const responsePayload = { user }; if (generatedPassword) { responsePayload.temporaryPassword = userPassword; } res.status(201).json(responsePayload); } catch (error) { next(error); } }); router.patch('/users/:id', verifySuperAdmin, async (req, res, next) => { try { const user = await updateUser(req.params.id, req.body || {}); res.json({ user }); } catch (error) { next(error); } }); router.delete('/users/:id', verifySuperAdmin, async (req, res, next) => { try { await deleteUser(req.params.id); res.status(204).send(); } catch (error) { next(error); } }); module.exports = router;