import { requireMonitor, requireUser, requireRole, requireAdmin } from '#api/middlewares/index.js'; import { DbUser, UserType } from '#db/schemas/index.js'; import { RouteMethod } from '#api/RouteDescription.js'; import { getUserById } from '#db/dbAccess/index.js'; import { AlarmDto } from '#dto/AlarmDto.js'; /** * @type {RouteDescription} */ export const adminGetUserIdsRoute = { path: '/admin/allUserIds', methods: { get: new RouteMethod({ exampleHeaders: { Authorization: 'Bearer {{accessToken}}' }, middlewares: [requireAdmin], description: 'Get all user IDs', async method(req, res) { // streaming json array res.status(200); res.write('[\n'); let first = true; const users = DbUser.find().lean().cursor(); for await (const user of users) { res.write( (first ? '' : ',') + JSON.stringify(user._id) + '\n' ); first = false; } res.write(']'); res.end(); } }) } }; export const adminMonitorAllRoute = { path: '/admin/monitorAllUsers', methods: { post: new RouteMethod({ exampleHeaders: { Authorization: 'Bearer {{accessToken}}' }, middlewares: [requireAdmin], description: 'Monitor all users', async method(req, res) { const users = await DbUser.find({ type: UserType.USER }).lean(); const monitoredUsers = users.map(user => user._id); // Update the admin's monitoredUsers req.user.monitoredUsers = monitoredUsers; await req.user.save(); res.status(204).send(); } }) } };