62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
const express = require('express');
|
|
const { 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', verifyToken, async (req, res, next) => {
|
|
try {
|
|
const users = await listUsers();
|
|
res.json({ users });
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
});
|
|
|
|
router.post('/users', verifyToken, 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', verifyToken, 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', verifyToken, async (req, res, next) => {
|
|
try {
|
|
await deleteUser(req.params.id);
|
|
res.status(204).send();
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|