summary refs log tree commit diff
path: root/src/api/routes/budgetRoutes.js
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-06-02 11:01:38 +0200
committerRory& <root@rory.gay>2025-06-02 11:01:38 +0200
commitbfce1935817e95c7115ac036dc97869f504644d0 (patch)
tree6c8a1ca1ff223442e605846d25625aa3ee0bc7df /src/api/routes/budgetRoutes.js
parentSplit authentication and authorization (diff)
downloadnodejs-final-assignment-bfce1935817e95c7115ac036dc97869f504644d0.tar.xz
Implement a few more routes, fix existing imports due to syntax highlight breakage
Diffstat (limited to 'src/api/routes/budgetRoutes.js')
-rw-r--r--src/api/routes/budgetRoutes.js26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/api/routes/budgetRoutes.js b/src/api/routes/budgetRoutes.js

index 4ad4897..a7ea097 100644 --- a/src/api/routes/budgetRoutes.js +++ b/src/api/routes/budgetRoutes.js
@@ -20,6 +20,7 @@ export const getBudgetByUserRoute = { methods: { get: new RouteMethod({ middlewares: [requireMonitor], + description: 'Get the budget for a monitored user', async method(req, res) { if (req.user.type !== UserType.ADMIN) { if (!req.user.monitoredUsers.includes(req.params.id)) @@ -43,8 +44,31 @@ export const addBudgetByUserRoute = { path: '/budget/:id/add', methods: { get: new RouteMethod({ + description: 'Add budget to a monitored user', middlewares: [requireMonitor], - async method(req, res) {} + async method(req, res) { + if (req.user.type !== UserType.ADMIN) { + if (!req.user.monitoredUsers.includes(req.params.id)) + throw new SafeNSoundError({ + errCode: 'UNAUTHORIZED', + message: + "You do not have permission to add budget to this user's account." + }); + } + + const user = await getUserById(req.params.id).exec(); + const amount = parseFloat(req.query.amount); + if (isNaN(amount) || amount <= 0) { + throw new SafeNSoundError({ + errCode: 'INVALID_AMOUNT', + message: 'Invalid amount specified.' + }); + } + + user.balance += amount; + await user.save(); + res.send({ balance: user.balance }); + } }) } };