2025-04-01 18:38:59 +00:00
|
|
|
/**
|
|
|
|
|
* @fileoverview This file contains the route definitions for the user-related endpoints.
|
|
|
|
|
*/
|
2025-04-07 21:34:34 +00:00
|
|
|
import {Router, text} from 'express'
|
2025-04-01 18:38:59 +00:00
|
|
|
import { getUserListController, getUserInfoController, postUserController, putUserController, softDeleteUserController } from '../controllers/authorization/userController.js'
|
|
|
|
|
import { getRoleController, getRoleInfoController, postRoleController, putRoleController, deleteRoleController } from '../controllers/authorization/rolesController.js'
|
|
|
|
|
import { getPermissionController, getPermissionByUuidController, postPermissionController, putPermissionController, softDeletePermissionController } from '../controllers/authorization/permissionsController.js'
|
|
|
|
|
import { indexController } from '../controllers/indexController.js'
|
|
|
|
|
import { postLoginController } from '../controllers/authorization/loginController.js'
|
|
|
|
|
import { addLinks } from '../utils/links.js'
|
|
|
|
|
import { linkRoutes } from '../index.js'
|
|
|
|
|
import {
|
|
|
|
|
sendCreatedResponse,
|
|
|
|
|
sendLoginSuccessfullResponse,
|
|
|
|
|
sendOkResponse,
|
|
|
|
|
sendResponseNoContent,
|
|
|
|
|
} from '../utils/responses.js'
|
2025-04-18 11:28:11 +00:00
|
|
|
import { latitudeRange, longitudeRange, uuid, varChar } from '../validators/expressValidator/customValidators.js'
|
2025-04-13 23:30:45 +00:00
|
|
|
import { integerRange } from '../validators/expressValidator/customValidators.js'
|
2025-04-01 18:38:59 +00:00
|
|
|
import {payloadExpressValidator} from '../validators/expressValidator/payloadExpressValidator.js'
|
2025-04-07 21:34:34 +00:00
|
|
|
import { authorizePermission, setToken, authenticateToken, refreshAuthenticate} from '../middlewares/auth.js'
|
2025-04-06 16:37:49 +00:00
|
|
|
import { postRegisterController } from '../controllers/authorization/registerController.js'
|
|
|
|
|
import { postRefreshTokenController } from '../controllers/authorization/refreshTokenController.js'
|
|
|
|
|
import {
|
|
|
|
|
getEndpointsController,
|
|
|
|
|
getEndpointsByUuidController,
|
|
|
|
|
postEndpointsController,
|
|
|
|
|
putEndpointsController,
|
|
|
|
|
softDeleteEndpointsController
|
|
|
|
|
} from '../controllers/authorization/endpointsController.js'
|
|
|
|
|
import {
|
2025-04-07 21:34:34 +00:00
|
|
|
getRolesHasPermissionsByUuidController,
|
2025-04-06 16:37:49 +00:00
|
|
|
getRolesHasPermissionsController,
|
|
|
|
|
postRolesHasPermissionsController,
|
|
|
|
|
putRolesHasPermissionsController,
|
|
|
|
|
softDeleteRolesHasPermissionsController,
|
|
|
|
|
} from '../controllers/authorization/roles_has_permissionsController.js'
|
2025-04-11 19:05:48 +00:00
|
|
|
import { deletePlaceController, getPlaceByUuidController, getPlaceListController, insertPlaceController, modifyPlaceController } from '../controllers/resource_types/placesController.js'
|
|
|
|
|
import { deleteUserHasPlacesController, getUserHasPlacesByUuidController, getUserHasPlacesListController, postUserHasPlacesController, putUserHasPlacesController } from '../controllers/resource_types/usersHasPlacesController.js'
|
|
|
|
|
import { getReportTypesByUuidController, getReportTypesListController, postReportTypesController, putReportTypesController, softDeleteReportTypesController } from '../controllers/resource_types/reportTypesController.js'
|
2025-04-19 02:10:35 +00:00
|
|
|
import { getFavoritesController, postFavoritesController, putFavoritesController, softDeleteFavoritesController } from '../controllers/resource_types/favoritesController.js'
|
2025-04-07 21:42:41 +00:00
|
|
|
|
2025-04-01 18:38:59 +00:00
|
|
|
/**
|
|
|
|
|
* @function default
|
|
|
|
|
* @param {Object} configuration based on environment
|
|
|
|
|
* @returns {Router} all endpoint routes
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @fileoverview This file defines the routes for the REST API, including endpoints for devices, users, roles, permissions, and login.
|
|
|
|
|
* It uses Express.js to define and manage routes, and includes middleware for authentication, authorization, validation, and response handling.
|
|
|
|
|
*
|
|
|
|
|
* @module routes/index
|
|
|
|
|
* @requires express.Router
|
|
|
|
|
* @requires controllers
|
|
|
|
|
* @requires middlewares
|
|
|
|
|
* @requires validators
|
|
|
|
|
*
|
|
|
|
|
* @param {Object} config - Configuration object for the application.
|
|
|
|
|
* @param {string} config.environment - The current environment (e.g., 'production', 'development').
|
|
|
|
|
* @returns {Object} routes - The configured Express router with all defined routes.
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
export default(config) => {
|
|
|
|
|
/**
|
|
|
|
|
* Express router to mount user related functions on.
|
|
|
|
|
* @type {Object}
|
|
|
|
|
* @const
|
2025-04-07 21:42:41 +00:00
|
|
|
* @namespace placeRouter
|
2025-04-01 18:38:59 +00:00
|
|
|
*/
|
|
|
|
|
const routes = Router()
|
|
|
|
|
const hasAddLinks = config.environment !== 'production'
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gets message from data object result from index controller to check if server is up.
|
|
|
|
|
* Ideally, if server is working correctly it should return message
|
|
|
|
|
* @name get/
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-01 18:38:59 +00:00
|
|
|
* @route GET /
|
|
|
|
|
* @returns {Device} 200 - The data object with message
|
|
|
|
|
* @returns {ErrorResponse} 404 - Data not found
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => indexController(req, res, next),
|
2025-04-01 18:38:59 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// User Routes
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name get/users
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-11 19:05:48 +00:00
|
|
|
* @memberof deviceRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route GET /users
|
|
|
|
|
* @group Users - Operations about users
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} username.path.required - The username of the user
|
|
|
|
|
* @param {string} email.path.required - The email of the user
|
|
|
|
|
* @returns {User} 200 - The user object
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* */
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.get(
|
|
|
|
|
'/users',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('username').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('email').optional({ nullable: false, values: 'falsy' })
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getUserListController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name get/users/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route GET /users/{uuid}
|
|
|
|
|
* @group Users - Operations about users
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} username.path.required - The username of the user
|
|
|
|
|
* @param {string} email.path.required - The email of the user
|
|
|
|
|
* @returns {User} 200 - The user object
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.get(
|
|
|
|
|
'/users/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
2025-04-11 19:05:48 +00:00
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('username').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('email').optional({ nullable: false, values: 'falsy' })
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getUserInfoController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name POST/users
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route POST /users
|
|
|
|
|
* @group Users - Operations about users
|
|
|
|
|
* @param {string} username.path.required - The username of the user
|
|
|
|
|
* @param {string} password.path.required - The password of the user
|
|
|
|
|
* @param {string} email.path.required - The email of the user
|
|
|
|
|
* @param {string} fk_role.path.required - The role of the user
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - User created successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.post(
|
|
|
|
|
'/users',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users')(req, res, next, config),
|
|
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
varChar('username'),
|
|
|
|
|
varChar('password'),
|
2025-04-01 18:38:59 +00:00
|
|
|
varChar('email').optional({ nullable: true, values: 'falsy' }),
|
2025-04-06 16:37:49 +00:00
|
|
|
varChar('fk_role').optional({ nullable: false, values: 'falsy' })
|
|
|
|
|
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postUserController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name PUT/users/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route PUT /users/{uuid}
|
|
|
|
|
* @group Users - Operations about users
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} username.path.required - The username of the user
|
|
|
|
|
* @param {string} email.path.required - The email of the user
|
|
|
|
|
* @param {string} fk_role.path.required - The role of the user
|
|
|
|
|
* @param {string} password.path.required - The password of the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - User updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.put(
|
|
|
|
|
'/users/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('username').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('email').optional({ nullable: true, values: 'falsy' }),
|
|
|
|
|
uuid('fk_role').optional({ nullable: false, values: 'falsy' })
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => putUserController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name delete/users/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route DELETE /users/{uuid}
|
|
|
|
|
* @group Users - Operations about users
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the user
|
|
|
|
|
* @returns {SuccessResponse} 204 - User deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.delete(
|
2025-04-01 18:38:59 +00:00
|
|
|
'/users/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeleteUserController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name GET/roles
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route GET /roles
|
|
|
|
|
* @group Roles - Operations about roles
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} name.path.required - The name of the role
|
|
|
|
|
* @returns {SuccessResponse} 200 - The role object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.get(
|
|
|
|
|
'/roles',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getRoleController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name GET/roles/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route GET /roles/{uuid}
|
|
|
|
|
* @group Roles - Operations about roles
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} name.path.required - The name of the role
|
|
|
|
|
* @returns {SuccessResponse} 200 - The role object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.get(
|
|
|
|
|
'/roles/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:uuid')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid'),
|
2025-04-06 16:37:49 +00:00
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' })
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getRoleInfoController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name POST/roles
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route POST /roles
|
|
|
|
|
* @group Roles - Operations about roles
|
|
|
|
|
* @param {string} name.path.required - The name of the role
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the role
|
|
|
|
|
* @returns {SuccessResponse} 200 - Role created successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.post(
|
|
|
|
|
'/roles',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
varChar('name')
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postRoleController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name PUT/roles/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route PUT /roles/{uuid}
|
|
|
|
|
* @group Roles - Operations about roles
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} name.path.required - The name of the role
|
|
|
|
|
* @param {string} fk_permission.path.required - The permission of the role
|
|
|
|
|
* @returns {SuccessResponse} 200 - Role updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.put(
|
|
|
|
|
'/roles/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:uuid')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid'),
|
2025-04-01 18:38:59 +00:00
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' })
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => putRoleController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name DELETE/roles/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route DELETE /roles/{uuid}
|
|
|
|
|
* @group Roles - Operations about roles
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} name.path.required - The name of the role
|
|
|
|
|
* @returns {SuccessResponse} 204 - Role deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.delete(
|
|
|
|
|
'/roles/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:uuid')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid')
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => deleteRoleController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
// Permission Routes
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/permissions
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route GET /permissions
|
|
|
|
|
* @group Permissions - Operations about permissions
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the permission
|
|
|
|
|
* @param {string} name.path.required - The name of the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - The permission object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* */
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.get(
|
|
|
|
|
'/permissions',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/permissions')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' })
|
|
|
|
|
],
|
2025-04-01 18:38:59 +00:00
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => getPermissionController(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name GET/permissions/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route GET /permissions/{uuid}
|
|
|
|
|
* @group Permissions - Operations about permissions
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the permission
|
|
|
|
|
* @param {string} name.path.required - The name of the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - The permission object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* */
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.get(
|
|
|
|
|
'/permissions/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/permissions')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid'),
|
2025-04-06 16:37:49 +00:00
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' })
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => getPermissionByUuidController(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
routes.post(
|
|
|
|
|
'/permissions',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/permissions')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-11 19:05:48 +00:00
|
|
|
varChar('action'),
|
|
|
|
|
varChar('endpoint')
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postPermissionController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name PUT/permissions/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route PUT /permissions/{uuid}
|
|
|
|
|
* @group Permissions - Operations about permissions
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the permission
|
|
|
|
|
* @param {string} action.path - The name of the action/http method for the request
|
|
|
|
|
* @param {string} endpoint.path - The name of the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - Permission updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* */
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.put(
|
|
|
|
|
'/permissions/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/permissions/:uuid')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid'),
|
2025-04-06 16:37:49 +00:00
|
|
|
varChar('action').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('endpoint').optional({ nullable: false, values: 'falsy' })
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => putPermissionController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name DELETE/permissions/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route DELETE /permissions/{uuid}
|
|
|
|
|
* @group Permissions - Operations about permissions
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the permission
|
|
|
|
|
* @param {string} name.path.required - The name of the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - Permission deleted successfully
|
|
|
|
|
* @returns {ErrorResponse} 404 - Permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.delete(
|
|
|
|
|
'/permissions/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/permissions/:uuid')(req, res, next, config),
|
2025-04-01 18:38:59 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid')
|
2025-04-06 16:37:49 +00:00
|
|
|
|
2025-04-01 18:38:59 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeletePermissionController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-07 21:34:34 +00:00
|
|
|
//Endpoints
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
2025-04-07 21:34:34 +00:00
|
|
|
* @name GET/endpoints
|
2025-04-06 16:37:49 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-07 21:34:34 +00:00
|
|
|
* @route GET /endpoints
|
|
|
|
|
* @group Endpoints - Operations about endpoints
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the endpoint
|
|
|
|
|
* @param {string} route.path.required - The name of the endpoint
|
|
|
|
|
* @returns {SuccessResponse} 200 - The endpoint object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Endpoint not found
|
2025-04-06 16:37:49 +00:00
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
2025-04-07 21:34:34 +00:00
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
2025-04-06 16:37:49 +00:00
|
|
|
*/
|
|
|
|
|
routes.get(
|
2025-04-07 21:34:34 +00:00
|
|
|
'/endpoints',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => authorizePermission('/endpoints')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
2025-04-07 21:34:34 +00:00
|
|
|
varChar('route').optional({ nullable: false, values: 'falsy' })
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => getEndpointsController(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
2025-04-07 21:34:34 +00:00
|
|
|
* @name GET/endpoints/:uuid
|
2025-04-06 16:37:49 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-07 21:34:34 +00:00
|
|
|
* @route GET /endpoints/{uuid}
|
|
|
|
|
* @group Endpoints - Operations about endpoints
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the endpoint
|
|
|
|
|
* @param {string} route.path.required - The name of the endpoint
|
|
|
|
|
* @returns {SuccessResponse} 200 - The endpoint object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Endpoint not found
|
2025-04-06 16:37:49 +00:00
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
2025-04-07 21:34:34 +00:00
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
2025-04-06 16:37:49 +00:00
|
|
|
*/
|
|
|
|
|
routes.get(
|
2025-04-07 21:34:34 +00:00
|
|
|
'/endpoints/:uuid',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => authorizePermission('/endpoints/:uuid')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' })
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => getEndpointsByUuidController(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
2025-04-07 21:34:34 +00:00
|
|
|
* @name POST/endpoints
|
2025-04-06 16:37:49 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-07 21:34:34 +00:00
|
|
|
* @route POST /endpoints
|
|
|
|
|
* @group Endpoints - Operations about endpoints
|
|
|
|
|
* @param {string} route.path.required - The name of the endpoint
|
|
|
|
|
* @returns {SuccessResponse} 200 - Endpoint created successfully
|
2025-04-06 16:37:49 +00:00
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
2025-04-07 21:34:34 +00:00
|
|
|
* @returns {ErrorResponse} 404 - Endpoint not found
|
2025-04-06 16:37:49 +00:00
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.post(
|
2025-04-07 21:34:34 +00:00
|
|
|
'/endpoints',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => authorizePermission('/endpoints')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
varChar('route')
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => postEndpointsController(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
2025-04-07 21:34:34 +00:00
|
|
|
* @name PUT/endpoints/:uuid
|
2025-04-06 16:37:49 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-07 21:34:34 +00:00
|
|
|
* @route PUT /endpoints/{uuid}
|
|
|
|
|
* @group Endpoints - Operations about endpoints
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the endpoint
|
|
|
|
|
* @param {string} route.path.required - The name of the endpoint
|
|
|
|
|
* @returns {SuccessResponse} 200 - Endpoint updated successfully
|
2025-04-06 16:37:49 +00:00
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
2025-04-07 21:34:34 +00:00
|
|
|
* @returns {ErrorResponse} 404 - Endpoint not found
|
2025-04-06 16:37:49 +00:00
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.put(
|
2025-04-07 21:34:34 +00:00
|
|
|
'/endpoints/:uuid',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => authorizePermission('/endpoints/:uuid')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('route').optional({ nullable: false, values: 'falsy' })
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => putEndpointsController(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
2025-04-07 21:34:34 +00:00
|
|
|
* @name DELETE/endpoints/:uuid
|
2025-04-06 16:37:49 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-07 21:34:34 +00:00
|
|
|
* @route DELETE /endpoints/{uuid}
|
|
|
|
|
* @group Endpoints - Operations about endpoints
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the endpoint
|
|
|
|
|
* @param {string} route.path.required - The name of the endpoint
|
|
|
|
|
* @returns {SuccessResponse} 200 - Endpoint deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Endpoint not found
|
2025-04-06 16:37:49 +00:00
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
2025-04-07 21:34:34 +00:00
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.delete(
|
|
|
|
|
'/endpoints/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/endpoints/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
uuid('uuid')
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeleteEndpointsController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//roles_has_permissions routes
|
2025-04-07 21:34:34 +00:00
|
|
|
/**
|
2025-04-15 17:29:49 +00:00
|
|
|
* @name GET/roles/:role_uuid/permissions
|
2025-04-07 21:34:34 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-15 17:29:49 +00:00
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route GET /roles/:role_uuid/permissions
|
2025-04-07 21:34:34 +00:00
|
|
|
* @group Roles Permissions - Operations about roles permissions
|
2025-04-15 17:29:49 +00:00
|
|
|
* @param {string} uuid.path.optional - The unique identifier for the role permission
|
2025-04-07 21:34:34 +00:00
|
|
|
* @param {string} fk_role.path.required - The unique identifier for the role
|
2025-04-15 17:29:49 +00:00
|
|
|
* @param {string} fk_permission.path.optional - The unique identifier for the permission
|
2025-04-07 21:34:34 +00:00
|
|
|
* @returns {SuccessResponse} 200 - The role permission object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.get(
|
2025-04-15 17:29:49 +00:00
|
|
|
'/roles/:role_uuid/permissions',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-15 17:29:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:role_uuid/permissions')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
2025-04-15 17:29:49 +00:00
|
|
|
uuid('role_uuid'),
|
|
|
|
|
uuid('permission_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('roleName').optional({ nullable: false, values: 'falsy' })
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getRolesHasPermissionsController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-07 21:34:34 +00:00
|
|
|
/**
|
2025-04-15 17:29:49 +00:00
|
|
|
* @name GET/roles/:role_uuid/permissions/:permission_uuid'
|
2025-04-07 21:34:34 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-15 17:29:49 +00:00
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route GET /roles/:role_uuid/permissions/:permission_uuid
|
2025-04-07 21:34:34 +00:00
|
|
|
* @group Roles Permissions - Operations about roles permissions
|
2025-04-15 17:29:49 +00:00
|
|
|
* @param {string} uuid.path.optional - The unique identifier for the role permission
|
2025-04-07 21:34:34 +00:00
|
|
|
* @param {string} fk_role.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} fk_permission.path.required - The unique identifier for the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - The role permission object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.get(
|
2025-04-15 17:29:49 +00:00
|
|
|
'/roles/:role_uuid/permissions/:permission_uuid',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-15 17:29:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:role_uuid/permissions/:permission_uuid')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
2025-04-15 17:29:49 +00:00
|
|
|
uuid('uuid').optional({nullable:false, values:'falsy'}),
|
|
|
|
|
uuid('role_uuid'),
|
|
|
|
|
uuid('permission_uuid'),
|
|
|
|
|
varChar('roleName').optional({ nullable: false, values: 'falsy' })
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-15 17:29:49 +00:00
|
|
|
(req, res, next) => getRolesHasPermissionsController(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-07 21:34:34 +00:00
|
|
|
/**
|
2025-04-15 17:29:49 +00:00
|
|
|
* @name POST/roles/:role_uuid/permissions
|
2025-04-07 21:34:34 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-15 17:29:49 +00:00
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route POST /roles/:role_uuid/permissions'
|
2025-04-07 21:34:34 +00:00
|
|
|
* @group Roles Permissions - Operations about roles permissions
|
|
|
|
|
* @param {string} fk_role.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} fk_permission.path.required - The unique identifier for the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - Role permission created successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.post(
|
2025-04-15 17:29:49 +00:00
|
|
|
'/roles/:role_uuid/permissions',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-15 17:29:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:role_uuid/permissions')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
2025-04-15 17:29:49 +00:00
|
|
|
uuid('role_uuid'),
|
|
|
|
|
uuid('permission_uuid')
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postRolesHasPermissionsController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-07 21:34:34 +00:00
|
|
|
/**
|
2025-04-15 17:29:49 +00:00
|
|
|
* @name PUT/roles/:role_uuid/permissions/:permission_uuid'
|
2025-04-07 21:34:34 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-15 17:29:49 +00:00
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route PUT /roles/:role_uuid/permissions/:permission_uuid'
|
2025-04-07 21:34:34 +00:00
|
|
|
* @group Roles Permissions - Operations about roles permissions
|
|
|
|
|
* @param {string} fk_role.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} fk_permission.path.required - The unique identifier for the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - Role permission updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.put(
|
2025-04-15 17:29:49 +00:00
|
|
|
'/roles/:role_uuid/permissions/:permission_uuid',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-15 17:29:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:role_uuid/permissions/:permission_uuid')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
2025-04-15 17:29:49 +00:00
|
|
|
uuid('role_uuid'),
|
|
|
|
|
uuid('permission_uuid'),
|
|
|
|
|
uuid('new_role_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('new_permission_uuid').optional({ nullable: false, values: 'falsy' })
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => putRolesHasPermissionsController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-07 21:34:34 +00:00
|
|
|
/**
|
2025-04-15 17:29:49 +00:00
|
|
|
* @name DELETE/roles/:role_uuid/permissions
|
2025-04-07 21:34:34 +00:00
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-15 17:29:49 +00:00
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route DELETE /roles/:role_uuid/permissions
|
2025-04-07 21:34:34 +00:00
|
|
|
* @group Roles Permissions - Operations about roles permissions
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the role permission
|
|
|
|
|
* @param {string} fk_role.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} fk_permission.path.required - The unique identifier for the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - Role permission deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.delete(
|
2025-04-15 17:29:49 +00:00
|
|
|
'/roles/:role_uuid/permissions',
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-15 17:29:49 +00:00
|
|
|
(req, res, next) => authorizePermission('/roles/:role_uuid/permissions')(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
[
|
2025-04-15 17:29:49 +00:00
|
|
|
uuid('role_uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeleteRolesHasPermissionsController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name DELETE/roles/:role_uuid/permissions/permission_uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route DELETE /roles/:role_uuid/permissions/permission_uuid
|
|
|
|
|
* @group Roles Permissions - Operations about roles permissions
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the role permission
|
|
|
|
|
* @param {string} fk_role.path.required - The unique identifier for the role
|
|
|
|
|
* @param {string} fk_permission.path.required - The unique identifier for the permission
|
|
|
|
|
* @returns {SuccessResponse} 200 - Role permission deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Role permission not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.delete(
|
|
|
|
|
'/roles/:role_uuid/permissions/permission_uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/roles/:role_uuid/permissions/permission_uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('role_uuid'),
|
|
|
|
|
uuid('permission_uuid')
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeleteRolesHasPermissionsController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-11 19:05:48 +00:00
|
|
|
// Places Routes
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/places
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route GET /places
|
|
|
|
|
* @group Places - Operations about places
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} name.path.required - The name of the place
|
|
|
|
|
* @param {string} address.path.required - The address of the place
|
2025-04-17 15:24:18 +00:00
|
|
|
* @param {string} latitude.path.required - The latitude of the place
|
|
|
|
|
* @param {string} longitude.path.required - The longitude of the place
|
|
|
|
|
* @param {string} description.path.optional - The description of the place
|
2025-04-11 19:05:48 +00:00
|
|
|
* @returns {SuccessResponse} 200 - The place object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/places',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/places')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('address').optional({ nullable: true, values: 'falsy' }),
|
|
|
|
|
varChar('description').optional({ nullable: true, values: 'falsy' }),
|
2025-04-17 13:41:10 +00:00
|
|
|
latitudeRange('latitude').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
longitudeRange('longitude').optional({nullable: false, values: 'falsy'})
|
2025-04-11 19:05:48 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getPlaceListController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/places/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route GET /places/{uuid}
|
|
|
|
|
* @group Places - Operations about places
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} name.path.required - The name of the place
|
|
|
|
|
* @param {string} address.path.required - The address of the place
|
2025-04-17 15:24:18 +00:00
|
|
|
* @param {string} latitude.path.required - The latitude of the place
|
|
|
|
|
* @param {string} longitude.path.required - The longitude of the place
|
|
|
|
|
* @param {string} description.path.optional - The description of the place
|
2025-04-11 19:05:48 +00:00
|
|
|
* @returns {SuccessResponse} 200 - The place object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/places/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/places/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('address').optional({ nullable: true, values: 'falsy' }),
|
|
|
|
|
varChar('description').optional({ nullable: true, values: 'falsy' }),
|
2025-04-17 13:41:10 +00:00
|
|
|
latitudeRange('latitude').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
longitudeRange('longitude').optional({nullable: false, values: 'falsy'})
|
2025-04-11 19:05:48 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getPlaceByUuidController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name POST/places
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route POST /places
|
|
|
|
|
* @group Places - Operations about places
|
|
|
|
|
* @param {string} name.path.required - The name of the place
|
|
|
|
|
* @param {string} address.path.required - The address of the place
|
2025-04-17 15:24:18 +00:00
|
|
|
* @param {string} description.path.required - The description of the place
|
|
|
|
|
* @param {string} latitude.path.required - The latitude of the place
|
|
|
|
|
* @param {string} longitude.path.required - The longitude of the place
|
2025-04-11 19:05:48 +00:00
|
|
|
* @returns {SuccessResponse} 200 - Place created successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.post(
|
|
|
|
|
'/places',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/places')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
varChar('name'),
|
|
|
|
|
varChar('address').optional({ nullable: true, values: 'falsy' }),
|
|
|
|
|
varChar('description').optional({ nullable: true, values: 'falsy' }),
|
2025-04-17 13:41:10 +00:00
|
|
|
latitudeRange('latitude'),
|
|
|
|
|
longitudeRange('longitude')
|
2025-04-11 19:05:48 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => insertPlaceController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name PUT/places/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route PUT /places/{uuid}
|
|
|
|
|
* @group Places - Operations about places
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} name.path.required - The name of the place
|
|
|
|
|
* @param {string} address.path.required - The address of the place
|
2025-04-17 15:24:18 +00:00
|
|
|
* @param {string} latitude.path.required - The latitude of the place
|
|
|
|
|
* @param {string} longitude.path.required - The longitude of the place
|
|
|
|
|
* @param {string} description.path.optional - The description of the place
|
2025-04-11 19:05:48 +00:00
|
|
|
* @returns {SuccessResponse} 200 - Place updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.put(
|
|
|
|
|
'/places/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/places/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('address').optional({ nullable: true, values: 'falsy' }),
|
|
|
|
|
varChar('description').optional({ nullable: true, values: 'falsy' }),
|
2025-04-17 13:41:10 +00:00
|
|
|
latitudeRange('latitude').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
longitudeRange('longitude').optional({nullable: false, values: 'falsy'})
|
2025-04-11 19:05:48 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => modifyPlaceController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name DELETE/places/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route DELETE /places/{uuid}
|
|
|
|
|
* @group Places - Operations about places
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the place
|
|
|
|
|
* @returns {SuccessResponse} 200 - Place deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.delete(
|
|
|
|
|
'/places/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/places/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => deletePlaceController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//Reports routes
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/users_has_places
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route GET /reports
|
|
|
|
|
* @group Reports - Operations about reports
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - The report object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/reports',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/reports')(req, res, next, config),
|
|
|
|
|
[
|
2025-04-21 11:04:58 +00:00
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
2025-04-19 19:16:37 +00:00
|
|
|
uuid('place_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('user_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('report_type_uuid').optional({ nullable: false, values: 'falsy' }),
|
2025-04-13 23:17:12 +00:00
|
|
|
integerRange('rating', {min: 1, max: 3}).optional({ nullable: false, values: 'falsy' })
|
2025-04-11 19:05:48 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getUserHasPlacesListController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/reports/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route GET /reports/{uuid}
|
|
|
|
|
* @group Reports - Operations about reports
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - The report object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/reports/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/reports/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid'),
|
2025-04-19 19:16:37 +00:00
|
|
|
uuid('place_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('user_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('report_type_uuid').optional({ nullable: false, values: 'falsy' }),
|
2025-04-13 23:17:12 +00:00
|
|
|
integerRange('rating', {min: 1, max: 3}).optional({ nullable: false, values: 'falsy' })
|
2025-04-11 19:05:48 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getUserHasPlacesByUuidController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name POST/reports
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route POST /reports
|
|
|
|
|
* @group Reports - Operations about reports
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} fk_report_type.path.required - The unique identifier for the report type
|
|
|
|
|
* @param {string} description.path.required - The description of the report
|
|
|
|
|
* @returns {SuccessResponse} 200 - Report created successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.post(
|
|
|
|
|
'/reports',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/reports')(req, res, next, config),
|
|
|
|
|
[
|
2025-04-19 19:16:37 +00:00
|
|
|
uuid('place_uuid'),
|
|
|
|
|
uuid('user_uuid'),
|
|
|
|
|
uuid('report_type_uuid').optional({ nullable: false, values: 'falsy' }),
|
2025-04-13 23:17:12 +00:00
|
|
|
integerRange('rating', {min: 1, max: 3}),
|
2025-04-11 19:05:48 +00:00
|
|
|
varChar('description').optional({ nullable: true, values: 'falsy' }),
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postUserHasPlacesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name PUT/reports/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route PUT /reports/{uuid}
|
|
|
|
|
* @group Reports - Operations about reports
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} fk_report_type.path.required - The unique identifier for the report type
|
|
|
|
|
* @param {string} description.path.required - The description of the report
|
|
|
|
|
* @returns {SuccessResponse} 200 - Report updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.put(
|
|
|
|
|
'/reports/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/reports/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid'),
|
2025-04-19 19:16:37 +00:00
|
|
|
uuid('place_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('user_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('report_type_uuid').optional({ nullable: false, values: 'falsy' }),
|
2025-04-13 23:17:12 +00:00
|
|
|
integerRange('rating', {min: 1, max: 3}).optional({ nullable: false, values: 'falsy' }),
|
2025-04-11 19:05:48 +00:00
|
|
|
varChar('description').optional({ nullable: true, values: 'falsy' }),
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => putUserHasPlacesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name DELETE/reports/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route DELETE /reports/{uuid}
|
|
|
|
|
* @group Reports - Operations about reports
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report
|
|
|
|
|
* @returns {SuccessResponse} 200 - Report deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
|
|
|
|
routes.delete(
|
|
|
|
|
'/reports/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/reports/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => deleteUserHasPlacesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Report Types Repository
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/report_types
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route GET /report_types
|
|
|
|
|
* @group Report Types - Operations about report types
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report type
|
|
|
|
|
* @param {string} name.path.required - The name of the report type
|
|
|
|
|
* @returns {SuccessResponse} 200 - The report type object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report type not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/report_types',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/report_types')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getReportTypesListController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/report_types/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route GET /report_types/{uuid}
|
|
|
|
|
* @group Report Types - Operations about report types
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report type
|
|
|
|
|
* @param {string} name.path.required - The name of the report type
|
|
|
|
|
* @returns {SuccessResponse} 200 - The report type object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report type not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/report_types/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/report_types/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getReportTypesByUuidController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
/**
|
|
|
|
|
* @name POST/report_types
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route POST /report_types
|
|
|
|
|
* @group Report Types - Operations about report types
|
|
|
|
|
* @param {string} name.path.required - The name of the report type
|
|
|
|
|
* @returns {SuccessResponse} 200 - Report type created successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report type not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.post(
|
|
|
|
|
'/report_types',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/report_types')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
varChar('name')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postReportTypesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name PUT/report_types/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route PUT /report_types/{uuid}
|
|
|
|
|
* @group Report Types - Operations about report types
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report type
|
|
|
|
|
* @param {string} name.path.required - The name of the report type
|
|
|
|
|
* @returns {SuccessResponse} 200 - Report type updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report type not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.put(
|
|
|
|
|
'/report_types/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/report_types/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid'),
|
|
|
|
|
varChar('name').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => putReportTypesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name DELETE/report_types/:uuid
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof placeRouter
|
|
|
|
|
* @route DELETE /report_types/{uuid}
|
|
|
|
|
* @group Report Types - Operations about report types
|
|
|
|
|
* @param {string} uuid.path.required - The unique identifier for the report type
|
|
|
|
|
* @returns {SuccessResponse} 200 - Report type deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Report type not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
*/
|
|
|
|
|
routes.delete(
|
|
|
|
|
'/report_types/:uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/report_types/:uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeleteReportTypesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-19 02:10:35 +00:00
|
|
|
//favorite places endpoint
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/users/:user:uuid/places
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route GET /users/:user:uuid/places
|
|
|
|
|
* @group Favorites - Operations about favorite place from user
|
|
|
|
|
* @param {string} uuid.path.optional - The unique identifier for favorite place from user
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} fk_place.path.optional - The unique identifier for the place
|
|
|
|
|
* @returns {SuccessResponse} 200 - The favorite object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Favorite place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
2025-04-20 15:47:02 +00:00
|
|
|
'/users/:user_uuid/places',
|
2025-04-19 02:10:35 +00:00
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
2025-04-20 15:47:02 +00:00
|
|
|
(req, res, next) => authorizePermission('/users/:user_uuid/places')(req, res, next, config),
|
2025-04-19 02:10:35 +00:00
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('user_uuid'),
|
|
|
|
|
uuid('place_uuid').optional({ nullable: false, values: 'falsy' })
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getFavoritesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name GET/users/:user_uuid/places/:place_uuid'
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route GET /users/:user_uuid/places/:place_uuid
|
|
|
|
|
* @group Favorites - Operations about favorite place from user
|
|
|
|
|
* @param {string} uuid.path.optional - The unique identifier for favorite place from user
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @returns {SuccessResponse} 200 - The favorite object
|
|
|
|
|
* @returns {ErrorResponse} 404 - Favorite place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 409 - Conflict
|
|
|
|
|
*/
|
|
|
|
|
routes.get(
|
|
|
|
|
'/users/:user_uuid/places/:place_uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:user_uuid/places/:place_uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('uuid').optional({nullable:false, values:'falsy'}),
|
|
|
|
|
uuid('user_uuid'),
|
|
|
|
|
uuid('place_uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => getFavoritesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendOkResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name POST/users/:user_uuid/places
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route POST /users/:user_uuid/places'
|
|
|
|
|
* @group Favorites - Operations about favorite place from user
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @returns {SuccessResponse} 200 - Favorite place created successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Favorite place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 409 - Conflict
|
|
|
|
|
*/
|
|
|
|
|
routes.post(
|
|
|
|
|
'/users/:user_uuid/places',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:user_uuid/places')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('user_uuid'),
|
|
|
|
|
uuid('place_uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postFavoritesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name PUT/users/:user_uuid/places/:place_uuid'
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route PUT /users/:user_uuid/places/:place_uuid'
|
|
|
|
|
* @group Favorites - Operations about favorite place from user
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @param {string} new_user_uuid.path.optional - The unique identifier for the new user
|
|
|
|
|
* @param {string} new_place_uuid.path.optional - The unique identifier for the new place
|
|
|
|
|
* @returns {SuccessResponse} 200 - Favorite place updated successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - Favorite place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 409 - Conflict
|
|
|
|
|
*/
|
|
|
|
|
routes.put(
|
|
|
|
|
'/users/:user_uuid/places/:place_uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:user_uuid/places/:place_uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('user_uuid'),
|
|
|
|
|
uuid('place_uuid'),
|
|
|
|
|
uuid('new_user_uuid').optional({ nullable: false, values: 'falsy' }),
|
|
|
|
|
uuid('new_place_uuid').optional({ nullable: false, values: 'falsy' })
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => putFavoritesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name DELETE/users/:user_uuid/places'
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route DELETE /users/:user_uuid/places
|
|
|
|
|
* @group Favorites - Operations about favorite place from user
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - Favorite place deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Favorite place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 409 - Conflict
|
|
|
|
|
*/
|
|
|
|
|
routes.delete(
|
|
|
|
|
'/users/:user_uuid/places',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:user_uuid/places')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('user_uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeleteFavoritesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @name DELETE/users/:user_uuid/places/:place_uuid'
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
|
|
|
|
* @memberof deviceRouter
|
|
|
|
|
* @route DELETE /users/:user_uuid/places/:place_uuid
|
|
|
|
|
* @group Favorites - Operations about favorite place from user
|
|
|
|
|
* @param {string} fk_user.path.required - The unique identifier for the user
|
|
|
|
|
* @param {string} fk_place.path.required - The unique identifier for the place
|
|
|
|
|
* @returns {SuccessResponse} 200 - Favorite place deleted successfully. No content
|
|
|
|
|
* @returns {ErrorResponse} 404 - Favorite place not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 409 - Conflict
|
|
|
|
|
*/
|
|
|
|
|
routes.delete(
|
|
|
|
|
'/users/:user_uuid/places/:place_uuid',
|
|
|
|
|
(req, res, next) => authenticateToken(req, res, next, config),
|
|
|
|
|
(req, res, next) => authorizePermission('/users/:user_uuid/places/:place_uuid')(req, res, next, config),
|
|
|
|
|
[
|
|
|
|
|
uuid('user_uuid'),
|
|
|
|
|
uuid('place_uuid')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => softDeleteFavoritesController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendResponseNoContent(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-11 19:05:48 +00:00
|
|
|
// Login Endpoint
|
2025-04-06 16:37:49 +00:00
|
|
|
/**
|
|
|
|
|
* @name POST/login
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-06 16:37:49 +00:00
|
|
|
* @route POST /login
|
|
|
|
|
* @group Login - Operations about login
|
|
|
|
|
* @param {string} username.path.required - The username of the user
|
|
|
|
|
* @param {string} password.path.required - The password of the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - User logged in successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
2025-04-11 19:05:48 +00:00
|
|
|
* @returns {ErrorResponse} 401 - Unauthorized
|
|
|
|
|
* @returns {ErrorResponse} 409 - Conflict
|
2025-04-06 16:37:49 +00:00
|
|
|
*/
|
2025-04-01 18:38:59 +00:00
|
|
|
routes.post(
|
|
|
|
|
'/login',
|
|
|
|
|
[
|
|
|
|
|
varChar('username'),
|
|
|
|
|
varChar('password')
|
|
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postLoginController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => setToken(result, req, res, next),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendLoginSuccessfullResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-07 21:34:34 +00:00
|
|
|
/**
|
|
|
|
|
* @name POST/refresh_token
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-07 21:34:34 +00:00
|
|
|
* @route POST /refresh_token
|
|
|
|
|
* @group Login - Operations about login
|
|
|
|
|
* @param {string} refresh_token.path.required - The refresh token of the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - User logged in successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.post(
|
|
|
|
|
'/refresh_token', //header contains refresh_token
|
2025-04-07 21:34:34 +00:00
|
|
|
[
|
|
|
|
|
text('refresh_token')
|
|
|
|
|
],
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
2025-04-07 21:34:34 +00:00
|
|
|
(req, res, next) => refreshAuthenticate(req, res, next, config),
|
2025-04-06 16:37:49 +00:00
|
|
|
(req, res, next) => postRefreshTokenController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendLoginSuccessfullResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-07 21:34:34 +00:00
|
|
|
/**
|
|
|
|
|
* @name POST/signin
|
|
|
|
|
* @function
|
|
|
|
|
* @inner
|
2025-04-07 21:42:41 +00:00
|
|
|
* @memberof placeRouter
|
2025-04-07 21:34:34 +00:00
|
|
|
* @route POST /signin
|
|
|
|
|
* @group Login - Operations about login
|
|
|
|
|
* @param {string} username.path.required - The username of the user
|
|
|
|
|
* @param {string} password.path.required - The password of the user
|
|
|
|
|
* @param {string} email.path.required - The email of the user
|
|
|
|
|
* @param {string} fk_role.path.required - The role of the user
|
|
|
|
|
* @returns {SuccessResponse} 200 - User logged in successfully
|
|
|
|
|
* @returns {ErrorResponse} 400 - Bad request
|
|
|
|
|
* @returns {ErrorResponse} 404 - User not found
|
|
|
|
|
* @returns {ErrorResponse} 422 - Unprocessable entity
|
|
|
|
|
* @returns {ErrorResponse} 500 - Internal server error
|
|
|
|
|
* @returns {ErrorResponse} 403 - Forbidden
|
|
|
|
|
*/
|
2025-04-06 16:37:49 +00:00
|
|
|
routes.post(
|
|
|
|
|
'/signin',
|
|
|
|
|
[
|
2025-04-07 21:34:34 +00:00
|
|
|
varChar('username'),
|
|
|
|
|
varChar('password'),
|
2025-04-06 16:37:49 +00:00
|
|
|
varChar('email').optional({ nullable: true, values: 'falsy' }),
|
2025-04-07 21:34:34 +00:00
|
|
|
varChar('fk_role')
|
2025-04-06 16:37:49 +00:00
|
|
|
],
|
|
|
|
|
(req, res, next) => payloadExpressValidator(req, res, next, config),
|
|
|
|
|
(req, res, next) => postRegisterController(req, res, next, config),
|
|
|
|
|
(result, req, res, next) => addLinks(result, req, res, next, hasAddLinks, linkRoutes),
|
|
|
|
|
(result, req, res, _) => sendCreatedResponse(result, req, res)
|
|
|
|
|
);
|
|
|
|
|
|
2025-04-01 18:38:59 +00:00
|
|
|
return routes;
|
|
|
|
|
}
|