From d96e82f15054873215c14d4bdb4e732e6a7089eb Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Fri, 17 Oct 2025 12:22:58 +0530 Subject: [PATCH] GWM --- app/controllers/submission.controller.js | 87 ++++++ app/middleware/app.middleware.js | 11 +- app/models/establishment_user.model.js | 4 + app/models/submission.model.js | 6 +- app/routes/routes.js | 366 +++++++++++++++++++---- server.js | 8 +- 6 files changed, 411 insertions(+), 71 deletions(-) diff --git a/app/controllers/submission.controller.js b/app/controllers/submission.controller.js index a248f44..1988b4c 100644 --- a/app/controllers/submission.controller.js +++ b/app/controllers/submission.controller.js @@ -148,3 +148,90 @@ exports.viewSubmissionDetails = async (req, res) => { res.status(500).json({ status: "failed", message: err.message }); } }; + + + +exports.submissionEditRequest = async (req, res) => { + try { + + const { id } = req.params; + edit_request = req.body.edit_request; + + // Check submission exists + const submission = await Submission.findByPk(id); + if (!submission) + return res.status(404).json({ status: "failed", message: "Submission not found" }); + + // Update submission main data + await submission.update({ edit_request }); + + res.status(200).json({ + status: "success", + message: "Submission edit request updated", + data: "", + }); + + } catch (err) { + console.error(err); + res.status(500).json({ status: "failed", message: err.message }); + } +}; + +exports.enableOrDisableSubmissionEditAccess = async (req, res) => { + try { + + const { id } = req.params; + edit_access = req.body.edit_access; + + // Check submission exists + const submission = await Submission.findByPk(id); + if (!submission) + return res.status(404).json({ status: "failed", message: "Submission not found" }); + + // Update submission main data + await submission.update({ edit_request : 0 , edit_access : edit_access}); + + res.status(200).json({ + status: "success", + message: "Submission edit access updated", + data: "", + }); + + } catch (err) { + console.error(err); + res.status(500).json({ status: "failed", message: err.message }); + } +}; + + +exports.approveOrRejectSubmission = async (req, res) => { + try { + + const { id } = req.params; + approve_reject_status = req.body.approve_reject_status; + if(approve_reject_status == 1) + { + statusString = 'Approved'; + }else{ + statusString = 'Rejected'; + } + + // Check submission exists + const submission = await Submission.findByPk(id); + if (!submission) + return res.status(404).json({ status: "failed", message: "Submission not found" }); + + // Update submission main data + await submission.update({ approve_reject_status : approve_reject_status , status : statusString }); + + res.status(200).json({ + status: "success", + message: "Submission edit access updated", + data: "", + }); + + } catch (err) { + console.error(err); + res.status(500).json({ status: "failed", message: err.message }); + } +}; diff --git a/app/middleware/app.middleware.js b/app/middleware/app.middleware.js index 0d63014..0f18016 100644 --- a/app/middleware/app.middleware.js +++ b/app/middleware/app.middleware.js @@ -2,11 +2,12 @@ require("dotenv").config(); module.exports = function (req, res, next) { - const APP_SIGNATURE = req.headers["APP_SIGNATURE"]; + const appSignature = req.headers["app_signature"]; - if(APP_SIGNATURE != process.env.APP_SIGNATURE) - { - return res.status(403).json({ message: "Access denied, SIGNATURE missing" }); - } + if (!appSignature || appSignature !== process.env.APP_SIGNATURE) { + return res.status(403).json({ message: "Access denied, invalid or missing APP_SIGNATURE" }); + } + + next(); // allow request to continue }; diff --git a/app/models/establishment_user.model.js b/app/models/establishment_user.model.js index 2444dcc..95741b3 100644 --- a/app/models/establishment_user.model.js +++ b/app/models/establishment_user.model.js @@ -24,6 +24,10 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.STRING, allowNull: false, }, + gender: { + type: DataTypes.STRING, + allowNull: false, + }, is_active: { type: DataTypes.BOOLEAN, defaultValue: true, diff --git a/app/models/submission.model.js b/app/models/submission.model.js index 11c2519..d776e05 100644 --- a/app/models/submission.model.js +++ b/app/models/submission.model.js @@ -35,9 +35,13 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.DATE, allowNull: true, }, + approve_reject_status: { + type: DataTypes.INTEGER, + defaultValue: 0, + }, status: { type: DataTypes.STRING(50), - allowNull: true, + defaultValue: 'Pending', }, created_by: { type: DataTypes.INTEGER, diff --git a/app/routes/routes.js b/app/routes/routes.js index 528cc39..7995eff 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -1,6 +1,7 @@ const express = require("express"); const router = express.Router(); const verifyToken = require("../middleware/auth.middleware"); +const verifySignature = require("../middleware/app.middleware"); const adminUserController = require("../controllers/user.controller"); const authController = require("../controllers/auth.controller"); const establishmentController = require("../controllers/establishment.controller"); @@ -47,7 +48,21 @@ const submissionController = require("../controllers/submission.controller"); - +/** + * @swagger + * components: + * securitySchemes: + * bearerAuth: + * type: http + * scheme: bearer + * bearerFormat: JWT + * description: "key to identify authorized user" + * appSignature: + * type: apiKey + * in: header + * name: APP_SIGNATURE + * description: "Signature key to identify authorized application" + */ @@ -60,6 +75,8 @@ const submissionController = require("../controllers/submission.controller"); * post: * summary: Register new Admin-user (For testing purpose only) * tags: [Admin Auth] + * security: + * - appSignature: [] * requestBody: * required: true * content: @@ -88,7 +105,7 @@ const submissionController = require("../controllers/submission.controller"); * 500: * description: Server error */ -router.post("/auth/admin_register", authController.register); +router.post("/auth/admin_register",[verifySignature], authController.register); /** @@ -97,7 +114,9 @@ router.post("/auth/admin_register", authController.register); * post: * summary: Login Admin-user and get JWT token * tags: [Admin Auth] - * requestBody: + * security: + * - appSignature: [] + * requestBody: * required: true * content: * application/json: @@ -121,7 +140,7 @@ router.post("/auth/admin_register", authController.register); * 500: * description: Server error */ -router.post("/auth/admin_login", authController.login); +router.post("/auth/admin_login",[verifySignature], authController.login); @@ -144,6 +163,7 @@ router.post("/auth/admin_login", authController.login); * summary: Get all users (Protected) * tags: [Admin Users] * security: + * - appSignature: [] * - bearerAuth: [] * responses: * 201: @@ -153,7 +173,7 @@ router.post("/auth/admin_login", authController.login); * 500: * description: Server error */ -router.get("/admin_users", verifyToken, adminUserController.getAllUsers); +router.get("/admin_users", [verifySignature, verifyToken], adminUserController.getAllUsers); /** * @swagger @@ -162,6 +182,7 @@ router.get("/admin_users", verifyToken, adminUserController.getAllUsers); * summary: Get user by ID (Protected) * tags: [Admin Users] * security: + * - appSignature: [] * - bearerAuth: [] * responses: * 201: @@ -171,7 +192,7 @@ router.get("/admin_users", verifyToken, adminUserController.getAllUsers); * 500: * description: Server error */ -router.get("/admin_users/:id", verifyToken, adminUserController.getUserById); +router.get("/admin_users/:id", [verifySignature, verifyToken], adminUserController.getUserById); /** * @swagger @@ -179,6 +200,9 @@ router.get("/admin_users/:id", verifyToken, adminUserController.getUserById); * post: * summary: Create a user * tags: [Admin Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 201: * description: created successfully @@ -187,7 +211,7 @@ router.get("/admin_users/:id", verifyToken, adminUserController.getUserById); * 500: * description: Server error */ -router.post("/admin_users", adminUserController.createUser); +router.post("/admin_users",[verifySignature, verifyToken], adminUserController.createUser); /** * @swagger @@ -195,6 +219,9 @@ router.post("/admin_users", adminUserController.createUser); * put: * summary: Update user * tags: [Admin Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 201: * description: updated successfully @@ -203,7 +230,7 @@ router.post("/admin_users", adminUserController.createUser); * 500: * description: Server error */ -router.put("/admin_users/:id", adminUserController.updateUser); +router.put("/admin_users/:id",[verifySignature, verifyToken], adminUserController.updateUser); /** * @swagger @@ -211,6 +238,9 @@ router.put("/admin_users/:id", adminUserController.updateUser); * delete: * summary: Delete user * tags: [Admin Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 201: * description: deleted successfully @@ -219,7 +249,7 @@ router.put("/admin_users/:id", adminUserController.updateUser); * 500: * description: Server error */ -router.delete("/admin_users/:id", adminUserController.deleteUser); +router.delete("/admin_users/:id",[verifySignature, verifyToken], adminUserController.deleteUser); @@ -241,6 +271,9 @@ router.delete("/admin_users/:id", adminUserController.deleteUser); * post: * summary: Create a new Establishment with linked user * tags: [Establishments] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -285,7 +318,7 @@ router.delete("/admin_users/:id", adminUserController.deleteUser); * 500: * description: Server error */ -router.post("/establishments", establishmentController.createEstablishment); +router.post("/establishments",[verifySignature, verifyToken], establishmentController.createEstablishment); /** * @swagger @@ -293,11 +326,14 @@ router.post("/establishments", establishmentController.createEstablishment); * get: * summary: Get all Establishments * tags: [Establishments] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 200: * description: List of establishments */ -router.get("/establishments", establishmentController.getAllEstablishments); +router.get("/establishments",[verifySignature, verifyToken], establishmentController.getAllEstablishments); /** * @swagger @@ -305,6 +341,9 @@ router.get("/establishments", establishmentController.getAllEstablishments); * get: * summary: Get an Establishment by ID * tags: [Establishments] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -318,7 +357,7 @@ router.get("/establishments", establishmentController.getAllEstablishments); * 404: * description: Establishment not found */ -router.get("/establishments/:id", establishmentController.getEstablishmentById); +router.get("/establishments/:id",[verifySignature, verifyToken], establishmentController.getEstablishmentById); /** * @swagger @@ -326,6 +365,9 @@ router.get("/establishments/:id", establishmentController.getEstablishmentById); * put: * summary: Update an Establishment by ID * tags: [Establishments] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -362,7 +404,7 @@ router.get("/establishments/:id", establishmentController.getEstablishmentById); * 404: * description: Establishment not found */ -router.put("/establishments/:id", establishmentController.updateEstablishment); +router.put("/establishments/:id",[verifySignature, verifyToken], establishmentController.updateEstablishment); /** * @swagger @@ -370,6 +412,9 @@ router.put("/establishments/:id", establishmentController.updateEstablishment); * delete: * summary: Delete an Establishment by ID * tags: [Establishments] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -383,7 +428,7 @@ router.put("/establishments/:id", establishmentController.updateEstablishment); * 404: * description: Establishment not found */ -router.delete("/establishments/:id", establishmentController.deleteEstablishment); +router.delete("/establishments/:id",[verifySignature, verifyToken], establishmentController.deleteEstablishment); @@ -405,6 +450,9 @@ router.delete("/establishments/:id", establishmentController.deleteEstablishment * post: * summary: Create a new Establishment User * tags: [Establishment Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -443,7 +491,7 @@ router.delete("/establishments/:id", establishmentController.deleteEstablishment * 500: * description: Server error */ -router.post("/establishment-users", establishmentUserController.createUser); +router.post("/establishment-users",[verifySignature, verifyToken], establishmentUserController.createUser); /** * @swagger @@ -451,6 +499,9 @@ router.post("/establishment-users", establishmentUserController.createUser); * get: * summary: Get all Establishment Users * tags: [Establishment Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: query * name: establishment_id @@ -463,7 +514,7 @@ router.post("/establishment-users", establishmentUserController.createUser); * 200: * description: List of establishment users */ -router.get("/establishment-users", establishmentUserController.getAllUsers); +router.get("/establishment-users",[verifySignature, verifyToken], establishmentUserController.getAllUsers); /** * @swagger @@ -471,6 +522,9 @@ router.get("/establishment-users", establishmentUserController.getAllUsers); * get: * summary: Get an Establishment User by ID * tags: [Establishment Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -484,7 +538,7 @@ router.get("/establishment-users", establishmentUserController.getAllUsers); * 404: * description: User not found */ -router.get("/establishment-users/:id", establishmentUserController.getUserById); +router.get("/establishment-users/:id",[verifySignature, verifyToken], establishmentUserController.getUserById); /** * @swagger @@ -492,6 +546,9 @@ router.get("/establishment-users/:id", establishmentUserController.getUserById); * put: * summary: Update an Establishment User * tags: [Establishment Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -529,7 +586,7 @@ router.get("/establishment-users/:id", establishmentUserController.getUserById); * 404: * description: User not found */ -router.put("/establishment-users/:id", establishmentUserController.updateUser); +router.put("/establishment-users/:id",[verifySignature, verifyToken], establishmentUserController.updateUser); /** * @swagger @@ -537,6 +594,9 @@ router.put("/establishment-users/:id", establishmentUserController.updateUser); * delete: * summary: Delete an Establishment User * tags: [Establishment Users] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -550,7 +610,7 @@ router.put("/establishment-users/:id", establishmentUserController.updateUser); * 404: * description: User not found */ -router.delete("/establishment-users/:id", establishmentUserController.deleteUser); +router.delete("/establishment-users/:id",[verifySignature, verifyToken], establishmentUserController.deleteUser); @@ -572,6 +632,8 @@ router.delete("/establishment-users/:id", establishmentUserController.deleteUser * post: * summary: Login as establishment user * tags: [Establishments User Auth] + * security: + * - appSignature: [] * requestBody: * required: true * content: @@ -600,19 +662,22 @@ router.delete("/establishment-users/:id", establishmentUserController.deleteUser * 500: * description: Server error */ -router.post("/auth/user_login", establishmentUserAuthController.login); +router.post("/auth/user_login",[verifySignature], establishmentUserAuthController.login); -/** - * @swagger - * /api/auth/user_logout: - * post: - * summary: Logout user (client should discard JWT token) - * tags: [Establishments User Auth] - * responses: - * 200: - * description: Logout successful - */ -router.post("/auth/user_logout", establishmentUserAuthController.logout); +// /** +// * @swagger +// * /api/auth/user_logout: +// * post: +// * summary: Logout user (client should discard JWT token) +// * tags: [Establishments User Auth] +// * security: +// * - appSignature: [] +// * - bearerAuth: [] +// * responses: +// * 200: +// * description: Logout successful +// */ +// router.post("/auth/user_logout",[verifySignature, verifyToken], establishmentUserAuthController.logout); @@ -633,6 +698,9 @@ router.post("/auth/user_logout", establishmentUserAuthController.logout); * post: * summary: Create a new Product * tags: [Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -657,7 +725,7 @@ router.post("/auth/user_logout", establishmentUserAuthController.logout); * 201: * description: Product created successfully */ -router.post("/products", productController.createProduct); +router.post("/products",[verifySignature, verifyToken], productController.createProduct); /** * @swagger @@ -665,11 +733,14 @@ router.post("/products", productController.createProduct); * get: * summary: Get all Products * tags: [Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 200: * description: List of products */ -router.get("/products", productController.getAllProducts); +router.get("/products",[verifySignature, verifyToken], productController.getAllProducts); /** * @swagger @@ -677,6 +748,9 @@ router.get("/products", productController.getAllProducts); * get: * summary: Get Product by ID * tags: [Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -689,7 +763,7 @@ router.get("/products", productController.getAllProducts); * 404: * description: Product not found */ -router.get("/products/:id", productController.getProductById); +router.get("/products/:id", [verifySignature, verifyToken],productController.getProductById); /** * @swagger @@ -697,6 +771,9 @@ router.get("/products/:id", productController.getProductById); * put: * summary: Update a Product * tags: [Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -721,7 +798,7 @@ router.get("/products/:id", productController.getProductById); * 404: * description: Product not found */ -router.put("/products/:id", productController.updateProduct); +router.put("/products/:id",[verifySignature, verifyToken], productController.updateProduct); /** * @swagger @@ -729,6 +806,9 @@ router.put("/products/:id", productController.updateProduct); * delete: * summary: Delete a Product * tags: [Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -741,7 +821,7 @@ router.put("/products/:id", productController.updateProduct); * 404: * description: Product not found */ -router.delete("/products/:id", productController.deleteProduct); +router.delete("/products/:id",[verifySignature, verifyToken], productController.deleteProduct); @@ -762,6 +842,9 @@ router.delete("/products/:id", productController.deleteProduct); * post: * summary: Create a new EstablishmentProduct (link establishment with product) * tags: [Establishment Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -789,7 +872,7 @@ router.delete("/products/:id", productController.deleteProduct); * 500: * description: Server error */ -router.post("/establishment-products", establishmentProductController.createEstablishmentProduct); +router.post("/establishment-products",[verifySignature, verifyToken], establishmentProductController.createEstablishmentProduct); /** * @swagger @@ -797,6 +880,9 @@ router.post("/establishment-products", establishmentProductController.createEsta * get: * summary: Get all EstablishmentProducts * tags: [Establishment Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: query * name: establishment_id @@ -811,7 +897,7 @@ router.post("/establishment-products", establishmentProductController.createEsta * 500: * description: Server error */ -router.get("/establishment-products", establishmentProductController.getAllEstablishmentProducts); +router.get("/establishment-products",[verifySignature, verifyToken], establishmentProductController.getAllEstablishmentProducts); /** @@ -820,6 +906,9 @@ router.get("/establishment-products", establishmentProductController.getAllEstab * get: * summary: Get an EstablishmentProduct by ID * tags: [Establishment Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -835,7 +924,7 @@ router.get("/establishment-products", establishmentProductController.getAllEstab * 500: * description: Server error */ -router.get("/establishment-products/:id", establishmentProductController.getEstablishmentProductById); +router.get("/establishment-products/:id",[verifySignature, verifyToken], establishmentProductController.getEstablishmentProductById); /** * @swagger @@ -843,6 +932,9 @@ router.get("/establishment-products/:id", establishmentProductController.getEsta * put: * summary: Update an EstablishmentProduct by ID * tags: [Establishment Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -876,7 +968,7 @@ router.get("/establishment-products/:id", establishmentProductController.getEsta * 500: * description: Server error */ -router.put("/establishment-products/:id", establishmentProductController.updateEstablishmentProduct); +router.put("/establishment-products/:id",[verifySignature, verifyToken], establishmentProductController.updateEstablishmentProduct); /** * @swagger @@ -884,6 +976,9 @@ router.put("/establishment-products/:id", establishmentProductController.updateE * delete: * summary: Delete an EstablishmentProduct by ID * tags: [Establishment Products] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -899,7 +994,7 @@ router.put("/establishment-products/:id", establishmentProductController.updateE * 500: * description: Server error */ -router.delete("/establishment-products/:id", establishmentProductController.deleteEstablishmentProduct); +router.delete("/establishment-products/:id",[verifySignature, verifyToken], establishmentProductController.deleteEstablishmentProduct); @@ -923,6 +1018,9 @@ router.delete("/establishment-products/:id", establishmentProductController.dele * post: * summary: Create a new variation reason * tags: [Variation Reason Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -941,7 +1039,7 @@ router.delete("/establishment-products/:id", establishmentProductController.dele * 201: * description: Reason created successfully */ -router.post("/variation_reasons", variationReasonMasterController.createReason); +router.post("/variation_reasons",[verifySignature, verifyToken], variationReasonMasterController.createReason); /** * @swagger @@ -949,11 +1047,14 @@ router.post("/variation_reasons", variationReasonMasterController.createReason); * get: * summary: Get all variation reasons * tags: [Variation Reason Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 200: * description: List of reasons */ -router.get("/variation_reasons", variationReasonMasterController.getAllReasons); +router.get("/variation_reasons",[verifySignature, verifyToken], variationReasonMasterController.getAllReasons); /** * @swagger @@ -961,6 +1062,9 @@ router.get("/variation_reasons", variationReasonMasterController.getAllReasons); * get: * summary: Get a reason by ID * tags: [Variation Reason Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -974,7 +1078,7 @@ router.get("/variation_reasons", variationReasonMasterController.getAllReasons); * 404: * description: Reason not found */ -router.get("/variation_reasons/:id", variationReasonMasterController.getReasonById); +router.get("/variation_reasons/:id",[verifySignature, verifyToken], variationReasonMasterController.getReasonById); /** * @swagger @@ -982,6 +1086,9 @@ router.get("/variation_reasons/:id", variationReasonMasterController.getReasonBy * put: * summary: Update a variation reason * tags: [Variation Reason Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -1011,7 +1118,7 @@ router.get("/variation_reasons/:id", variationReasonMasterController.getReasonBy * 404: * description: Reason not found */ -router.put("/variation_reasons/:id", variationReasonMasterController.updateReason); +router.put("/variation_reasons/:id",[verifySignature, verifyToken], variationReasonMasterController.updateReason); /** * @swagger @@ -1019,6 +1126,9 @@ router.put("/variation_reasons/:id", variationReasonMasterController.updateReaso * delete: * summary: Delete a variation reason * tags: [Variation Reason Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -1032,7 +1142,7 @@ router.put("/variation_reasons/:id", variationReasonMasterController.updateReaso * 404: * description: Reason not found */ -router.delete("/variation_reasons/:id", variationReasonMasterController.deleteReason); +router.delete("/variation_reasons/:id",[verifySignature, verifyToken], variationReasonMasterController.deleteReason); @@ -1055,11 +1165,14 @@ router.delete("/variation_reasons/:id", variationReasonMasterController.deleteRe * get: * summary: Get all zero target reasons * tags: [Zero Target Reasons] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 200: * description: List of reasons */ -router.get("/zero_target_reason/", zeroTargetReasonMasterController.getAll); +router.get("/zero_target_reason/",[verifySignature, verifyToken], zeroTargetReasonMasterController.getAll); /** * @swagger @@ -1067,6 +1180,9 @@ router.get("/zero_target_reason/", zeroTargetReasonMasterController.getAll); * get: * summary: Get zero target reason by ID * tags: [Zero Target Reasons] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - name: id * in: path @@ -1077,7 +1193,7 @@ router.get("/zero_target_reason/", zeroTargetReasonMasterController.getAll); * 200: * description: Reason found */ -router.get("/zero_target_reason/:id", zeroTargetReasonMasterController.getById); +router.get("/zero_target_reason/:id",[verifySignature, verifyToken], zeroTargetReasonMasterController.getById); /** * @swagger @@ -1085,6 +1201,9 @@ router.get("/zero_target_reason/:id", zeroTargetReasonMasterController.getById); * post: * summary: Create a new zero target reason * tags: [Zero Target Reasons] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -1100,7 +1219,7 @@ router.get("/zero_target_reason/:id", zeroTargetReasonMasterController.getById); * 201: * description: Created successfully */ -router.post("/zero_target_reason/", zeroTargetReasonMasterController.create); +router.post("/zero_target_reason/",[verifySignature, verifyToken], zeroTargetReasonMasterController.create); /** * @swagger @@ -1108,6 +1227,9 @@ router.post("/zero_target_reason/", zeroTargetReasonMasterController.create); * put: * summary: Update zero target reason * tags: [Zero Target Reasons] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - name: id * in: path @@ -1127,7 +1249,7 @@ router.post("/zero_target_reason/", zeroTargetReasonMasterController.create); * 200: * description: Updated successfully */ -router.put("/zero_target_reason/:id", zeroTargetReasonMasterController.update); +router.put("/zero_target_reason/:id",[verifySignature, verifyToken], zeroTargetReasonMasterController.update); /** * @swagger @@ -1135,6 +1257,9 @@ router.put("/zero_target_reason/:id", zeroTargetReasonMasterController.update); * delete: * summary: Delete zero target reason * tags: [Zero Target Reasons] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - name: id * in: path @@ -1143,7 +1268,7 @@ router.put("/zero_target_reason/:id", zeroTargetReasonMasterController.update); * 200: * description: Deleted successfully */ -router.delete("/zero_target_reason/:id", zeroTargetReasonMasterController.delete); +router.delete("/zero_target_reason/:id",[verifySignature, verifyToken], zeroTargetReasonMasterController.delete); @@ -1162,11 +1287,14 @@ router.delete("/zero_target_reason/:id", zeroTargetReasonMasterController.delete * get: * summary: Get all units * tags: [Unit Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 200: * description: List of units */ -router.get("/unit_master", unitMasterController.getAllUnits); +router.get("/unit_master",[verifySignature, verifyToken], unitMasterController.getAllUnits); /** * @swagger @@ -1174,6 +1302,9 @@ router.get("/unit_master", unitMasterController.getAllUnits); * get: * summary: Get unit by ID * tags: [Unit Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -1184,7 +1315,7 @@ router.get("/unit_master", unitMasterController.getAllUnits); * 200: * description: Unit details */ -router.get("/unit_master/:id", unitMasterController.getUnitById); +router.get("/unit_master/:id",[verifySignature, verifyToken], unitMasterController.getUnitById); /** * @swagger @@ -1192,6 +1323,9 @@ router.get("/unit_master/:id", unitMasterController.getUnitById); * post: * summary: Create a new unit * tags: [Unit Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -1209,7 +1343,7 @@ router.get("/unit_master/:id", unitMasterController.getUnitById); * 201: * description: Unit created successfully */ -router.post("/unit_master", unitMasterController.createUnit); +router.post("/unit_master",[verifySignature, verifyToken], unitMasterController.createUnit); /** * @swagger @@ -1217,6 +1351,9 @@ router.post("/unit_master", unitMasterController.createUnit); * put: * summary: Update a unit * tags: [Unit Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -1240,7 +1377,7 @@ router.post("/unit_master", unitMasterController.createUnit); * 200: * description: Unit updated successfully */ -router.put("/unit_master/:id", unitMasterController.updateUnit); +router.put("/unit_master/:id",[verifySignature, verifyToken], unitMasterController.updateUnit); /** * @swagger @@ -1248,6 +1385,9 @@ router.put("/unit_master/:id", unitMasterController.updateUnit); * delete: * summary: Delete a unit * tags: [Unit Master] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - in: path * name: id @@ -1258,7 +1398,7 @@ router.put("/unit_master/:id", unitMasterController.updateUnit); * 200: * description: Unit deleted successfully */ -router.delete("/unit_master/:id", unitMasterController.deleteUnit); +router.delete("/unit_master/:id",[verifySignature, verifyToken], unitMasterController.deleteUnit); @@ -1277,6 +1417,9 @@ router.delete("/unit_master/:id", unitMasterController.deleteUnit); * post: * summary: Create submission with up to 10 products * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] * requestBody: * required: true * content: @@ -1316,7 +1459,7 @@ router.delete("/unit_master/:id", unitMasterController.deleteUnit); * 201: * description: Submission created */ -router.post("/submissions", submissionController.createSubmission); +router.post("/submissions",[verifySignature, verifyToken], submissionController.createSubmission); /** * @swagger @@ -1324,6 +1467,9 @@ router.post("/submissions", submissionController.createSubmission); * put: * summary: Update submission with products * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - name: id * in: path @@ -1369,7 +1515,7 @@ router.post("/submissions", submissionController.createSubmission); * 200: * description: Updated successfully */ -router.put("/submissions/:id", submissionController.updateSubmission); +router.put("/submissions/:id",[verifySignature, verifyToken], submissionController.updateSubmission); /** * @swagger @@ -1377,6 +1523,9 @@ router.put("/submissions/:id", submissionController.updateSubmission); * get: * summary: Get submission history for establishment * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - name: establishment_id * in: path @@ -1385,7 +1534,7 @@ router.put("/submissions/:id", submissionController.updateSubmission); * 200: * description: History list */ -router.get("/submissions/history/:establishment_id", submissionController.submissionHistory); +router.get("/submissions/history/:establishment_id",[verifySignature, verifyToken], submissionController.submissionHistory); /** * @swagger @@ -1393,11 +1542,14 @@ router.get("/submissions/history/:establishment_id", submissionController.submis * get: * summary: Get all submissions * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] * responses: * 200: * description: All submissions */ -router.get("/submissions", submissionController.submissionList); +router.get("/submissions",[verifySignature, verifyToken], submissionController.submissionList); /** * @swagger @@ -1405,6 +1557,9 @@ router.get("/submissions", submissionController.submissionList); * get: * summary: Get submission with product details * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] * parameters: * - name: id * in: path @@ -1413,7 +1568,96 @@ router.get("/submissions", submissionController.submissionList); * 200: * description: Submission details */ -router.get("/submissions/:id", submissionController.viewSubmissionDetails); +router.get("/submissions/:id",[verifySignature, verifyToken], submissionController.viewSubmissionDetails); + + + +/** + * @swagger + * /api/submissionEditRequest/{id}: + * put: + * summary: Update request for submission products + * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] + * parameters: + * - name: id + * in: path + * required: true + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * edit_request: { type: integer } + * responses: + * 200: + * description: Updated successfully + */ +router.put("/submissionEditRequest/:id",[verifySignature, verifyToken], submissionController.submissionEditRequest); + + +/** + * @swagger + * /api/enableOrDisableSubmissionEditAccess/{id}: + * put: + * summary: Allow or deny the edit request of submission products + * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] + * parameters: + * - name: id + * in: path + * required: true + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * edit_access: + * type: integer + * description: 1 for Enable, 0 for Disable + * responses: + * 200: + * description: Updated successfully + */ +router.put("/enableOrDisableSubmissionEditAccess/:id",[verifySignature, verifyToken], submissionController.enableOrDisableSubmissionEditAccess); + + +/** + * @swagger + * /api/approveOrRejectSubmission/{id}: + * put: + * summary: Approve or Reject the submission + * tags: [Submissions] + * security: + * - appSignature: [] + * - bearerAuth: [] + * parameters: + * - name: id + * in: path + * required: true + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * approve_reject_status: + * type: integer + * description: 1 for Approve, 2 for Reject + * responses: + * 200: + * description: Updated successfully + */ +router.put("/approveOrRejectSubmission/:id",[verifySignature, verifyToken], submissionController.approveOrRejectSubmission); diff --git a/server.js b/server.js index 40be25a..b4c073f 100644 --- a/server.js +++ b/server.js @@ -22,7 +22,7 @@ const swaggerOptions = { info: { title: "FCSC IPI Survey", version: "1.0.0", - description: "User management + Auth API using Sequelize and Swagger", + description: "Federal Competitiveness and Statistics Centre (FCSC) - Industrial Production Index (IPI)", }, components: { securitySchemes: { @@ -51,9 +51,9 @@ app.use("/api", routes); // Sync DB -db.sequelize.sync({ alter: true }).then(() => { - console.log("✅ Database connected & synced."); -}); +// db.sequelize.sync({ alter: true }).then(() => { +// console.log("✅ Database connected & synced."); +// });