summary refs log tree commit diff
path: root/src/api/routes
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-06-02 00:11:34 +0200
committerRory& <root@rory.gay>2025-06-02 00:11:34 +0200
commit8829c1eee38ba32730896a269eadf2631e26db05 (patch)
treefc0b0cd7dd4e0ef88374ef8bb629eeba0d558ae8 /src/api/routes
parentAdd sensor history, balance (diff)
downloadnodejs-final-assignment-8829c1eee38ba32730896a269eadf2631e26db05.tar.xz
Add shortcut for generating http file, part of API documentation
Diffstat (limited to 'src/api/routes')
-rw-r--r--src/api/routes/auth/accountRoutes.js23
-rw-r--r--src/api/routes/auth/adminAccountRoutes.js8
-rw-r--r--src/api/routes/budgetRoutes.js24
-rw-r--r--src/api/routes/indexRoute.js5
-rw-r--r--src/api/routes/statusRoute.js1
5 files changed, 53 insertions, 8 deletions
diff --git a/src/api/routes/auth/accountRoutes.js b/src/api/routes/auth/accountRoutes.js

index 76452e3..a2181d1 100644 --- a/src/api/routes/auth/accountRoutes.js +++ b/src/api/routes/auth/accountRoutes.js
@@ -9,6 +9,13 @@ export const registerRoute = { path: '/auth/register', methods: { post: new RouteMethod({ + description: 'Create a new user', + exampleBody: { + username: '{{username}}', + email: '{{email}}', + password: '{{email}}', + type: '{{userType}}' + }, async method(req, res) { const data = await RegisterDto.create(req.body); await registerUser(data); @@ -25,6 +32,12 @@ export const loginRoute = { path: '/auth/login', methods: { post: new RouteMethod({ + description: 'Log in as a user', + exampleBody: { + username: '{{username}}', + email: '{{email}}', + password: '{{email}}' + }, async method(req, res) { const data = await AuthDto.create(req.body); const loginResult = await loginUser( @@ -44,6 +57,10 @@ export const logoutRoute = { path: '/auth/logout', methods: { post: new RouteMethod({ + description: 'Log out from a device (TODO)', + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, async method(req, res) { const data = await AuthDto.create(req.body); // const loginResult = await deleteDevice(data, ); @@ -60,6 +77,12 @@ export const deleteRoute = { path: '/auth/delete', methods: { delete: new RouteMethod({ + description: 'Delete account', + exampleBody: { + username: '{{username}}', + email: '{{email}}', + password: '{{email}}' + }, async method(req, res) { const data = await AuthDto.create(req.body); await deleteUser(data); diff --git a/src/api/routes/auth/adminAccountRoutes.js b/src/api/routes/auth/adminAccountRoutes.js
index eb9b270..2153945 100644 --- a/src/api/routes/auth/adminAccountRoutes.js +++ b/src/api/routes/auth/adminAccountRoutes.js
@@ -10,6 +10,10 @@ export const adminGetUsersRoute = { path: '/admin/users', methods: { get: new RouteMethod({ + description: 'Get all users (raw)', + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, middlewares: [requireAdmin], async method(req, res) { res.send(DbUser.find({}).exec()); @@ -25,6 +29,10 @@ export const adminUserRoute = { path: '/admin/user/:id', methods: { get: new RouteMethod({ + description: 'Get a user (raw)', + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, middlewares: [requireAdmin], async method(req, res) { const user = await getUserById(req.params.id); diff --git a/src/api/routes/budgetRoutes.js b/src/api/routes/budgetRoutes.js
index a808f58..d7ebde4 100644 --- a/src/api/routes/budgetRoutes.js +++ b/src/api/routes/budgetRoutes.js
@@ -4,23 +4,31 @@ import { validateAuth } from '#api/middlewares/index.js'; import { UserType } from '#db/schemas/index.js'; -import { RouteDescription, RouteMethod } from '#api/RouteDescription.js'; -import {getUserById} from "#db/dbAccess/index.js"; +import { + RouteDescription, + RouteMethod, + RouteMethodList +} from '#api/RouteDescription.js'; +import { getUserById } from '#db/dbAccess/index.js'; /** * @type {RouteDescription} */ export const getBudgetByUserRoute = { path: '/budget/:id', - methods: { + methods: new RouteMethodList({ get: new RouteMethod({ middlewares: [requireMonitor], async method(req, res) { - if (!req.) - const user = await getUserById(req.); + if (req.user.type !== UserType.ADMIN) { + if (!req.user.monitoredUsers.includes(req.params.id)) + throw new Error('meow'); + } + //if (!req.) + // const user = await getUserById(req.); } }) - } + }) }; /** @@ -44,7 +52,9 @@ export const getBudgetRoute = { methods: { get: new RouteMethod({ middlewares: [requireUser], - async method(req, res) {} + async method(req, res) { + res.send({ currentBalance: req.user.balance }); + } }) } }; diff --git a/src/api/routes/indexRoute.js b/src/api/routes/indexRoute.js
index b6fe28e..0c15b73 100644 --- a/src/api/routes/indexRoute.js +++ b/src/api/routes/indexRoute.js
@@ -7,8 +7,11 @@ export const indexRoute = { path: '/', methods: { get: new RouteMethod({ + description: 'Get the index page (empty)', method(req, res) { - res.send('What art thou doing here???'); + res.send( + "Welcome to SafeNSound! If you're confused, please visit the app instead!" + ); } }) } diff --git a/src/api/routes/statusRoute.js b/src/api/routes/statusRoute.js
index 1dbca45..2c111a8 100644 --- a/src/api/routes/statusRoute.js +++ b/src/api/routes/statusRoute.js
@@ -8,6 +8,7 @@ export const statusRoute = { path: '/status', methods: { get: new RouteMethod({ + description: 'Get the server status', async method(req, res) { const status = { status: 'ok',