summary refs log tree commit diff
path: root/src/api/routes/adminRoutes.js
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-06-03 01:01:40 +0200
committerRory& <root@rory.gay>2025-06-03 01:01:40 +0200
commit6f3f08ed340e59a62a2d0428a5c32f99551ef1ce (patch)
treeff77390b1d3ea61414c14c94ac1fa2a05030879b /src/api/routes/adminRoutes.js
parentMore alarm testing (diff)
downloadnodejs-final-assignment-6f3f08ed340e59a62a2d0428a5c32f99551ef1ce.tar.xz
Fix performance issues, add fake user bot to test client, more testing
Diffstat (limited to 'src/api/routes/adminRoutes.js')
-rw-r--r--src/api/routes/adminRoutes.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/api/routes/adminRoutes.js b/src/api/routes/adminRoutes.js
new file mode 100644

index 0000000..7a1d1e2 --- /dev/null +++ b/src/api/routes/adminRoutes.js
@@ -0,0 +1,55 @@ +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({ + middlewares: [requireAdmin], + description: 'Get all user IDs', + async method(req, res) { + // streaming json array + res.status(200); + res.write('[\n'); + + const users = DbUser.find().lean().cursor(); + for await (const user of users) { + res.write(JSON.stringify(user._id) + ',\n'); + } + + res.write(']'); + res.end(); + } + }) + } +}; +export const adminMonitorAllRoute = { + path: '/admin/monitorAllUsers', + methods: { + post: new RouteMethod({ + 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(); + } + }) + } +};