diff --git a/src/api/routes/alarmRoutes.js b/src/api/routes/alarmRoutes.js
index e50d4b2..9739f4f 100644
--- a/src/api/routes/alarmRoutes.js
+++ b/src/api/routes/alarmRoutes.js
@@ -1,49 +1,78 @@
-import { validateAuth } from '#api/middlewares/index.js';
+import {
+ requireMonitor,
+ requireUser,
+ validateAuth
+} from '#api/middlewares/index.js';
import { UserType } from '#db/schemas/index.js';
+import { RouteMethod } from '#api/RouteDescription.js';
+/**
+ * @type {RouteDescription}
+ */
export const alarmByUserRoute = {
- route: '/alarm/:id',
- onGetValidation: validateAuth({ roles: [UserType.MONITOR] }),
- async onGet(req, res) {
- const user = await getUserById(req.params.id);
- res.send(user.alarm);
- },
-
- onDeleteValidation: validateAuth({ roles: [UserType.MONITOR] }),
- async onDelete(req, res) {
- const user = await getUserById(req.params.id);
- user.alarm = null;
- await user.save();
- res.status(204).send();
+ path: '/alarm/:id',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireMonitor],
+ async method(req, res) {
+ const user = await getUserById(req.params.id);
+ res.send(user.alarm);
+ }
+ }),
+ put: new RouteMethod({
+ middlewares: [requireMonitor],
+ async method(req, res) {
+ const user = await getUserById(req.params.id);
+ user.alarm = null;
+ await user.save();
+ res.status(204).send();
+ }
+ })
}
};
+/**
+ * @type {RouteDescription}
+ */
export const alarmListRoute = {
- route: '/alarms',
- onGetValidation: validateAuth({ roles: [UserType.MONITOR] }),
- onGet(req, res) {
- console.log(req.user.monitoredUsers);
+ path: '/alarms',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireMonitor],
+ async method(req, res) {
+ console.log(req.user.monitoredUsers);
+ }
+ })
}
};
+/**
+ * @type {RouteDescription}
+ */
export const alarmRoute = {
- onGetValidation: validateAuth({ roles: [UserType.USER] }),
- async onGet(req, res) {
- res.send(req.user.alarm);
- },
-
- route: '/alarm/@me',
- onPutValidation: validateAuth({ roles: [UserType.USER] }),
- async onPut(req, res) {
- req.user.alarm = req.body;
- await req.user.save();
- res.status(204).send();
- },
-
- onDeleteValidation: validateAuth({ roles: [UserType.USER] }),
- async onDelete(req, res) {
- req.user.alarm = null;
- await req.user.save();
- res.status(204).send();
+ path: '/alarm/@me',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireUser],
+ async method(req, res) {
+ res.send(req.user.alarm);
+ }
+ }),
+ put: new RouteMethod({
+ middlewares: [requireUser],
+ async method(req, res) {
+ req.user.alarm = req.body;
+ await req.user.save();
+ res.status(204).send();
+ }
+ }),
+ delete: new RouteMethod({
+ middlewares: [requireUser],
+ async method(req, res) {
+ req.user.alarm = null;
+ await req.user.save();
+ res.status(204).send();
+ }
+ })
}
};
diff --git a/src/api/routes/auth/accountRoutes.js b/src/api/routes/auth/accountRoutes.js
index 18c204d..76452e3 100644
--- a/src/api/routes/auth/accountRoutes.js
+++ b/src/api/routes/auth/accountRoutes.js
@@ -1,44 +1,70 @@
import { deleteUser, loginUser, registerUser } from '#db/index.js';
import { AuthDto, RegisterDto } from '#dto/index.js';
+import { RouteDescription, RouteMethod } from '#api/RouteDescription.js';
+/**
+ * @type {RouteDescription}
+ */
export const registerRoute = {
- route: '/auth/register',
- async onPost(req, res) {
- const data = await RegisterDto.create(req.body);
- await registerUser(data);
- res.status(204).send();
+ path: '/auth/register',
+ methods: {
+ post: new RouteMethod({
+ async method(req, res) {
+ const data = await RegisterDto.create(req.body);
+ await registerUser(data);
+ res.status(204).send();
+ }
+ })
}
};
+/**
+ * @type {RouteDescription}
+ */
export const loginRoute = {
- route: '/auth/login',
- async onPost(req, res) {
- const data = await AuthDto.create(req.body);
- const loginResult = await loginUser(data, req.headers['user-agent']);
- res.send(loginResult);
+ path: '/auth/login',
+ methods: {
+ post: new RouteMethod({
+ async method(req, res) {
+ const data = await AuthDto.create(req.body);
+ const loginResult = await loginUser(
+ data,
+ req.headers['user-agent']
+ );
+ res.send(loginResult);
+ }
+ })
}
};
+/**
+ * @type {RouteDescription}
+ */
export const logoutRoute = {
- route: '/auth/logout',
- /**
- *
- * @param req {Request}
- * @param res
- * @returns {Promise<WhoAmIDto>}
- */
- async onPost(req, res) {
- const data = await AuthDto.create(req.body);
- // const loginResult = await deleteDevice(data, );
- res.status(204).send();
+ path: '/auth/logout',
+ methods: {
+ post: new RouteMethod({
+ async method(req, res) {
+ const data = await AuthDto.create(req.body);
+ // const loginResult = await deleteDevice(data, );
+ res.status(204).send();
+ }
+ })
}
};
+/**
+ * @type {RouteDescription}
+ */
export const deleteRoute = {
- route: '/auth/delete',
- async onDelete(req, res) {
- const data = await AuthDto.create(req.body);
- await deleteUser(data);
- res.status(204).send();
+ path: '/auth/delete',
+ methods: {
+ delete: new RouteMethod({
+ async method(req, res) {
+ const data = await AuthDto.create(req.body);
+ await deleteUser(data);
+ res.status(204).send();
+ }
+ })
}
};
diff --git a/src/api/routes/auth/adminAccountRoutes.js b/src/api/routes/auth/adminAccountRoutes.js
index f85cc73..eb9b270 100644
--- a/src/api/routes/auth/adminAccountRoutes.js
+++ b/src/api/routes/auth/adminAccountRoutes.js
@@ -1,24 +1,42 @@
import { deleteUser, loginUser, registerUser, UserType } from '#db/index.js';
import { AuthDto, RegisterDto } from '#dto/index.js';
-import { validateAuth } from '#api/middlewares/index.js';
+import { requireAdmin, validateAuth } from '#api/middlewares/index.js';
+import { RouteDescription, RouteMethod } from '#api/RouteDescription.js';
+/**
+ * @type {RouteDescription}
+ */
export const adminGetUsersRoute = {
- route: '/admin/users',
- onGetValidation: validateAuth({ roles: [UserType.ADMIN] }),
- async onGet(req, res) {
- res.send(DbUser.find({}).exec());
+ path: '/admin/users',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireAdmin],
+ async method(req, res) {
+ res.send(DbUser.find({}).exec());
+ }
+ })
}
};
-export const adminUserRoute = {
- route: '/admin/user/:id',
- onGetValidation: validateAuth({ roles: [UserType.ADMIN] }),
- async onGet(req, res) {
- const user = await getUserById(req.params.id);
- },
- onDeleteValidation: validateAuth({ roles: [UserType.ADMIN] }),
- async onDelete(req, res) {
- await deleteUser(data);
- res.status(204).send();
+/**
+ * @type {RouteDescription}
+ */
+export const adminUserRoute = {
+ path: '/admin/user/:id',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireAdmin],
+ async method(req, res) {
+ const user = await getUserById(req.params.id);
+ res.send(user);
+ }
+ }),
+ delete: new RouteMethod({
+ middlewares: [requireAdmin],
+ async method(req, res) {
+ await deleteUser(data);
+ res.status(204).send();
+ }
+ })
}
};
diff --git a/src/api/routes/auth/deviceRoutes.js b/src/api/routes/auth/deviceRoutes.js
index 11cae8f..ac4514f 100644
--- a/src/api/routes/auth/deviceRoutes.js
+++ b/src/api/routes/auth/deviceRoutes.js
@@ -1,38 +1,21 @@
import { deleteUser, loginUser, registerUser } from '#db/index.js';
import { AuthDto, RegisterDto } from '#dto/index.js';
import { validateAuth } from '#api/middlewares/index.js';
+import { RouteDescription, RouteMethod } from '#api/RouteDescription.js';
+/**
+ * @type {RouteDescription}
+ */
export const getDevicesRoute = {
- route: '/auth/devices',
- onGetValidation: validateAuth({}),
- async onGet(req, res) {
- const data = await RegisterDto.create(req.body);
- const registerResult = await registerUser(data);
- res.send(registerResult);
+ path: '/auth/devices',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [validateAuth({})],
+ async method(req, res) {
+ const data = await RegisterDto.create(req.body);
+ const registerResult = await registerUser(data);
+ res.send(registerResult);
+ }
+ })
}
};
-
-// export const loginRoute = {
-// route: '/auth/login',
-// /**
-// *
-// * @param req {Request}
-// * @param res
-// * @returns {Promise<WhoAmIDto>}
-// */
-// async onPost(req, res) {
-// const data = await AuthDto.create(req.body);
-// console.log(req.headers['user-agent']);
-// const loginResult = await loginUser(data, req.headers['user-agent']);
-// res.send(loginResult);
-// }
-// };
-//
-// export const deleteRoute = {
-// route: '/auth/delete',
-// async onDelete(req, res) {
-// const data = await AuthDto.create(req.body);
-// await deleteUser(data);
-// res.status(204).send();
-// }
-// };
diff --git a/src/api/routes/budgetRoutes.js b/src/api/routes/budgetRoutes.js
index ed827e8..1cebffe 100644
--- a/src/api/routes/budgetRoutes.js
+++ b/src/api/routes/budgetRoutes.js
@@ -1,20 +1,46 @@
-import { validateAuth } from '#api/middlewares/index.js';
+import {
+ requireMonitor,
+ requireUser,
+ validateAuth
+} from '#api/middlewares/index.js';
import { UserType } from '#db/schemas/index.js';
+import { RouteDescription, RouteMethod } from '#api/RouteDescription.js';
+/**
+ * @type {RouteDescription}
+ */
export const getBudgetByUserRoute = {
- route: '/budget/:id',
- onGetValidation: validateAuth({ roles: [UserType.MONITOR] }),
- onGet(req, res) {}
+ path: '/budget/:id',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireMonitor],
+ async method(req, res) {}
+ })
+ }
};
+/**
+ * @type {RouteDescription}
+ */
export const addBudgetByUserRoute = {
- route: '/budget/:id/add',
- onGetValidation: validateAuth({ roles: [UserType.MONITOR] }),
- onGet(req, res) {}
+ path: '/budget/:id/add',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireMonitor],
+ async method(req, res) {}
+ })
+ }
};
+/**
+ * @type {RouteDescription}
+ */
export const getBudgetRoute = {
- route: '/budget/@me',
- onGetValidation: validateAuth({ roles: [UserType.USER] }),
- onGet(req, res) {}
+ path: '/budget/@me',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireUser],
+ async method(req, res) {}
+ })
+ }
};
diff --git a/src/api/routes/indexRoute.js b/src/api/routes/indexRoute.js
index 3b9eaef..b6fe28e 100644
--- a/src/api/routes/indexRoute.js
+++ b/src/api/routes/indexRoute.js
@@ -1,6 +1,15 @@
+import { RouteDescription, RouteMethod } from '#api/RouteDescription.js';
+
+/**
+ * @type {RouteDescription}
+ */
export const indexRoute = {
- route: '/',
- onGet(req, res) {
- res.send('What art thou doing here???');
+ path: '/',
+ methods: {
+ get: new RouteMethod({
+ method(req, res) {
+ res.send('What art thou doing here???');
+ }
+ })
}
};
diff --git a/src/api/routes/statusRoute.js b/src/api/routes/statusRoute.js
index 5c3231b..1dbca45 100644
--- a/src/api/routes/statusRoute.js
+++ b/src/api/routes/statusRoute.js
@@ -1,14 +1,22 @@
import { DbUser } from '#db/index.js';
+import { RouteDescription, RouteMethod } from '#api/RouteDescription.js';
+/**
+ * @type {RouteDescription}
+ */
export const statusRoute = {
- route: '/status',
- async onGet(req, res) {
- const status = {
- status: 'ok',
- timestamp: new Date().toISOString(),
- users: await User.countDocuments()
- };
+ path: '/status',
+ methods: {
+ get: new RouteMethod({
+ async method(req, res) {
+ const status = {
+ status: 'ok',
+ timestamp: new Date().toISOString(),
+ users: await User.countDocuments()
+ };
- res.status(200).json(status);
+ res.status(200).json(status);
+ }
+ })
}
};
|