feat: open administration to all users
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m33s

This commit is contained in:
Cauê Faleiros
2026-08-28 11:33:40 -03:00
parent ba136b9d78
commit b4b21fb21b
6 changed files with 25 additions and 35 deletions

View File

@@ -1,5 +1,5 @@
const express = require('express');
const { verifySuperAdmin } = require('../auth');
const { verifyToken } = require('../auth');
const {
completeAuthorization,
createAuthorizationUrl,
@@ -13,7 +13,7 @@ const { exportMissingProductionOrderDataCsv, importFinalizedProductionOrderCsv,
const router = express.Router();
router.get('/olist/status', verifySuperAdmin, async (req, res, next) => {
router.get('/olist/status', verifyToken, async (req, res, next) => {
try {
res.json(await getOlistStatus({
runsPage: req.query.runsPage,
@@ -24,7 +24,7 @@ router.get('/olist/status', verifySuperAdmin, async (req, res, next) => {
}
});
router.post('/olist/authorization-url', verifySuperAdmin, async (req, res, next) => {
router.post('/olist/authorization-url', verifyToken, async (req, res, next) => {
try {
res.json({ url: await createAuthorizationUrl() });
} catch (error) {
@@ -32,7 +32,7 @@ router.post('/olist/authorization-url', verifySuperAdmin, async (req, res, next)
}
});
router.post('/olist/sync', verifySuperAdmin, async (req, res, next) => {
router.post('/olist/sync', verifyToken, async (req, res, next) => {
try {
const result = await startOlistSync({
trigger: 'manual',
@@ -44,7 +44,7 @@ router.post('/olist/sync', verifySuperAdmin, async (req, res, next) => {
}
});
router.post('/olist/sync/stop', verifySuperAdmin, async (req, res, next) => {
router.post('/olist/sync/stop', verifyToken, async (req, res, next) => {
try {
res.status(202).json(await requestOlistSyncStop());
} catch (error) {
@@ -52,7 +52,7 @@ router.post('/olist/sync/stop', verifySuperAdmin, async (req, res, next) => {
}
});
router.get('/olist/production-order-imports', verifySuperAdmin, async (req, res, next) => {
router.get('/olist/production-order-imports', verifyToken, async (req, res, next) => {
try {
res.json(await listProductionOrderImportData({
runsPage: req.query.runsPage,
@@ -63,7 +63,7 @@ router.get('/olist/production-order-imports', verifySuperAdmin, async (req, res,
}
});
router.get('/olist/production-order-imports/pending-csv', verifySuperAdmin, async (req, res, next) => {
router.get('/olist/production-order-imports/pending-csv', verifyToken, async (req, res, next) => {
try {
res.json(await exportMissingProductionOrderDataCsv());
} catch (error) {
@@ -71,7 +71,7 @@ router.get('/olist/production-order-imports/pending-csv', verifySuperAdmin, asyn
}
});
router.post('/olist/production-order-imports', verifySuperAdmin, async (req, res, next) => {
router.post('/olist/production-order-imports', verifyToken, async (req, res, next) => {
try {
res.status(201).json(await importFinalizedProductionOrderCsv(req.body || {}));
} catch (error) {
@@ -79,7 +79,7 @@ router.post('/olist/production-order-imports', verifySuperAdmin, async (req, res
}
});
router.get('/olist/runs/:runId', verifySuperAdmin, async (req, res, next) => {
router.get('/olist/runs/:runId', verifyToken, async (req, res, next) => {
try {
res.json(await getOlistRunDetails(req.params.runId, {
eventsPage: req.query.eventsPage,

View File

@@ -1,5 +1,5 @@
const express = require('express');
const { verifySuperAdmin, verifyToken } = require('../auth');
const { verifyToken } = require('../auth');
const { createUser, deleteUser, listActiveOperationalUsers, listUsers, updateUser } = require('../services/userService');
const router = express.Router();
@@ -12,7 +12,7 @@ router.get('/users/operational', verifyToken, async (req, res, next) => {
}
});
router.get('/users', verifySuperAdmin, async (req, res, next) => {
router.get('/users', verifyToken, async (req, res, next) => {
try {
const users = await listUsers();
res.json({ users });
@@ -21,7 +21,7 @@ router.get('/users', verifySuperAdmin, async (req, res, next) => {
}
});
router.post('/users', verifySuperAdmin, async (req, res, next) => {
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 });
@@ -40,7 +40,7 @@ router.post('/users', verifySuperAdmin, async (req, res, next) => {
}
});
router.patch('/users/:id', verifySuperAdmin, async (req, res, next) => {
router.patch('/users/:id', verifyToken, async (req, res, next) => {
try {
const user = await updateUser(req.params.id, req.body || {});
res.json({ user });
@@ -49,7 +49,7 @@ router.patch('/users/:id', verifySuperAdmin, async (req, res, next) => {
}
});
router.delete('/users/:id', verifySuperAdmin, async (req, res, next) => {
router.delete('/users/:id', verifyToken, async (req, res, next) => {
try {
await deleteUser(req.params.id);
res.status(204).send();

View File

@@ -62,8 +62,7 @@ const listUsers = async () => {
};
// This deliberately exposes only the identity needed to assign operational
// responsibility. It is available to signed-in Graphs users, unlike the full
// user-management list which remains super-admin only.
// responsibility. It is available to every signed-in Graphs user.
const listActiveOperationalUsers = async () => {
const result = await pool.query(
`SELECT id, name