31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
const { createEntityRouter } = require('../factories/router.factory');
|
|
const UsersService = require('../services/users');
|
|
const UsersDBApi = require('../db/api/users');
|
|
const { wrapAsync } = require('../helpers');
|
|
|
|
// Create base router with factory (includes all standard CRUD endpoints)
|
|
const router = createEntityRouter('users', UsersService, UsersDBApi, {
|
|
permissionEntity: 'users',
|
|
csvFields: ['id', 'firstName', 'lastName', 'phoneNumber', 'email'],
|
|
});
|
|
|
|
// Override GET /:id to remove password from response
|
|
// Note: This needs to be added BEFORE the router is exported
|
|
// The factory already registered this route, so we add middleware to sanitize
|
|
const originalGetById = router.stack.find(
|
|
(layer) => layer.route?.path === '/:id' && layer.route?.methods?.get,
|
|
);
|
|
|
|
if (originalGetById) {
|
|
originalGetById.route.stack[0].handle = wrapAsync(async (req, res) => {
|
|
// Call original handler with a custom response
|
|
const payload = await UsersDBApi.findBy({ id: req.params.id });
|
|
if (payload) {
|
|
delete payload.password;
|
|
}
|
|
res.status(200).send(payload);
|
|
});
|
|
}
|
|
|
|
module.exports = router;
|