Skip to content

Commit 91df118

Browse files
committed
fix(deploy): coreect 403 issuue after production
1 parent 4631e45 commit 91df118

12 files changed

Lines changed: 133 additions & 93 deletions

File tree

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
"use strict";
22
// resource/middlewares/internal-auth.middleware.ts
33
Object.defineProperty(exports, "__esModule", { value: true });
4-
exports.internalAuth = void 0;
4+
exports.internalAuth = exports.identityAuth = void 0;
55
const auth_type_1 = require("../types/auth.type");
66
const garage_status_middleware_1 = require("./garage-status.middleware");
7-
const internalAuth = (req, res, next) => {
7+
/**
8+
* identityAuth - Middleware to extract user identity from Gateway headers
9+
* Does NOT enforce internal service token.
10+
*/
11+
const identityAuth = (req, res, next) => {
812
const userId = req.headers["x-user-id"];
913
const role = req.headers["x-user-role"];
1014
const email = req.headers["x-user-email"];
@@ -14,26 +18,33 @@ const internalAuth = (req, res, next) => {
1418
message: "Unauthorized - Missing gateway identity",
1519
});
1620
}
21+
req.user = {
22+
id: userId,
23+
role,
24+
email: email ?? "",
25+
status: auth_type_1.UserStatus.ACTIVE,
26+
};
27+
(0, garage_status_middleware_1.requireActiveGarage)(req, res, next);
28+
};
29+
exports.identityAuth = identityAuth;
30+
/**
31+
* internalAuth - Middleware to enforce INTERNAL_SERVICE_TOKEN
32+
* Usually for service-to-service communication.
33+
*/
34+
const internalAuth = (req, res, next) => {
1735
// Validate internal service token if provided
1836
const authHeader = req.headers.authorization;
1937
const token = authHeader?.startsWith("Bearer ")
2038
? authHeader.split(" ")[1]
2139
: null;
2240
if (process.env.INTERNAL_SERVICE_TOKEN &&
2341
token !== process.env.INTERNAL_SERVICE_TOKEN) {
24-
console.warn(`Internal token mismatch for user ${userId}`);
25-
// For now, only log warn or enforce? Let's enforce for security.
42+
console.warn(`Internal token mismatch for user ${req.headers["x-user-id"]}`);
2643
return res.status(403).json({
2744
success: false,
2845
message: "Forbidden - Invalid internal service token",
2946
});
3047
}
31-
req.user = {
32-
id: userId,
33-
role,
34-
email: email ?? "",
35-
status: auth_type_1.UserStatus.ACTIVE,
36-
};
37-
(0, garage_status_middleware_1.requireActiveGarage)(req, res, next);
48+
(0, exports.identityAuth)(req, res, next);
3849
};
3950
exports.internalAuth = internalAuth;

‎nodejs-autospace/resource-service/dist/modules/company/routes/company.routes.js‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ const admin_company_controller_1 = require("../controllers/admin.company.control
66
const company_validator_1 = require("../validators/company.validator");
77
const admin_company_controller_2 = require("../controllers/admin.company.controller");
88
const internal_company_controller_1 = require("../controllers/internal.company.controller");
9-
const internalAuth_middleware_1 = require("../../../middlewares/internalAuth.middleware");
109
const companyEmployee_controller_1 = require("../controllers/companyEmployee.controller");
10+
const internalAuth_middleware_1 = require("../../../middlewares/internalAuth.middleware");
1111
const router = (0, express_1.Router)();
12-
router.post("/create", internalAuth_middleware_1.internalAuth, company_validator_1.validateCreateCompany, company_controller_1.registerCompany);
13-
router.get("/my", internalAuth_middleware_1.internalAuth, company_controller_1.getMyCompany);
14-
router.get("/admin/all", internalAuth_middleware_1.internalAuth, company_controller_1.getAllCompaniesController);
15-
router.put("/admin/:id/active", internalAuth_middleware_1.internalAuth, admin_company_controller_1.approveCompany);
16-
router.put("/admin/:id/reject", internalAuth_middleware_1.internalAuth, admin_company_controller_1.rejectCompany);
17-
router.get("/admin/pending", internalAuth_middleware_1.internalAuth, admin_company_controller_2.getPendingCompanies);
18-
router.put("/:id", internalAuth_middleware_1.internalAuth, company_controller_1.updateCompanyProfileController);
19-
router.get("/:companyId/employees", internalAuth_middleware_1.internalAuth, companyEmployee_controller_1.getCompanyEmployeesController);
12+
router.post("/create", internalAuth_middleware_1.identityAuth, company_validator_1.validateCreateCompany, company_controller_1.registerCompany);
13+
router.get("/my", internalAuth_middleware_1.identityAuth, company_controller_1.getMyCompany);
14+
router.get("/admin/all", internalAuth_middleware_1.identityAuth, company_controller_1.getAllCompaniesController);
15+
router.put("/admin/:id/active", internalAuth_middleware_1.identityAuth, admin_company_controller_1.approveCompany);
16+
router.put("/admin/:id/reject", internalAuth_middleware_1.identityAuth, admin_company_controller_1.rejectCompany);
17+
router.get("/admin/pending", internalAuth_middleware_1.identityAuth, admin_company_controller_2.getPendingCompanies);
18+
router.put("/:id", internalAuth_middleware_1.identityAuth, company_controller_1.updateCompanyProfileController);
19+
router.get("/:companyId/employees", internalAuth_middleware_1.identityAuth, companyEmployee_controller_1.getCompanyEmployeesController);
2020
// internal (resource service-to- auth service) check is company approved while manager registers
2121
router.get("/internal/brn/:brn/validate", (req, res, next) => {
2222
next();

‎nodejs-autospace/resource-service/dist/modules/files/files.routes.js‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const express_1 = require("express");
44
const files_controller_1 = require("./files.controller");
55
const internalAuth_middleware_1 = require("../../middlewares/internalAuth.middleware");
66
const router = (0, express_1.Router)();
7-
router.post("/upload", internalAuth_middleware_1.internalAuth, files_controller_1.generateUploadUrl);
8-
router.post("/", internalAuth_middleware_1.internalAuth, files_controller_1.createFileRecord);
9-
router.get("/:id", internalAuth_middleware_1.internalAuth, files_controller_1.getFileById);
7+
router.post("/upload", internalAuth_middleware_1.identityAuth, files_controller_1.generateUploadUrl);
8+
router.post("/", internalAuth_middleware_1.identityAuth, files_controller_1.createFileRecord);
9+
router.get("/:id", internalAuth_middleware_1.identityAuth, files_controller_1.getFileById);
1010
exports.default = router;

‎nodejs-autospace/resource-service/dist/modules/garage/routes/garage.routes.js‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,30 +27,30 @@ router.get("/internal/slots/:slotId", internalAuth_middleware_1.internalAuth, (r
2727
}, garage_slot_controller_1.getSlotByIdInternal);
2828
// manager garageid for booking service
2929
router.get("/internal/:managerId/garageId", internalAuth_middleware_1.internalAuth, garage_slot_controller_1.getGarageByManager);
30-
router.post("/register", internalAuth_middleware_1.internalAuth, garage_validator_1.validateCreateGarage, garage_controller_1.createGarageController);
30+
router.post("/register", internalAuth_middleware_1.identityAuth, garage_validator_1.validateCreateGarage, garage_controller_1.createGarageController);
3131
router.get("/", garage_validator_1.validatePublicGarageQuery, public_garage_controller_1.getPublicGarageController);
32-
router.put("/admin/:id/active", internalAuth_middleware_1.internalAuth, admin_garage_controller_1.approveGarage);
33-
router.put("/admin/:id/reject", internalAuth_middleware_1.internalAuth, admin_garage_controller_1.rejectGarage);
34-
router.patch("/admin/:id/block", internalAuth_middleware_1.internalAuth, admin_garage_controller_1.blockGarage);
35-
router.patch("/admin/:id/unblock", internalAuth_middleware_1.internalAuth, admin_garage_controller_1.unblockGarage);
36-
router.get("/admin/pending", internalAuth_middleware_1.internalAuth, admin_garage_controller_1.getPendingGarages);
37-
router.post("/assign-manager", internalAuth_middleware_1.internalAuth, garage_controller_1.assignManagerController);
38-
router.get("/admin/all", internalAuth_middleware_1.internalAuth, admin_garage_controller_1.getAllGaragesController);
39-
router.get("/byCompany/:companyId", internalAuth_middleware_1.internalAuth, garage_controller_1.getGaragesByCompanyController);
40-
router.put("/:id", internalAuth_middleware_1.internalAuth, garage_controller_1.updateGarageProfileController);
41-
router.post("/:garageId/images", internalAuth_middleware_1.internalAuth, garage_image_controller_1.addGarageImageController);
42-
router.get("/:garageId/images", internalAuth_middleware_1.internalAuth, garage_image_controller_1.getGarageImagesController);
43-
router.get("/manager/my", internalAuth_middleware_1.internalAuth, garage_controller_1.getMyManagerGarageController);
44-
router.get("/:id", internalAuth_middleware_1.internalAuth, admin_garage_controller_1.getGarageByIdController);
32+
router.put("/admin/:id/active", internalAuth_middleware_1.identityAuth, admin_garage_controller_1.approveGarage);
33+
router.put("/admin/:id/reject", internalAuth_middleware_1.identityAuth, admin_garage_controller_1.rejectGarage);
34+
router.patch("/admin/:id/block", internalAuth_middleware_1.identityAuth, admin_garage_controller_1.blockGarage);
35+
router.patch("/admin/:id/unblock", internalAuth_middleware_1.identityAuth, admin_garage_controller_1.unblockGarage);
36+
router.get("/admin/pending", internalAuth_middleware_1.identityAuth, admin_garage_controller_1.getPendingGarages);
37+
router.post("/assign-manager", internalAuth_middleware_1.identityAuth, garage_controller_1.assignManagerController);
38+
router.get("/admin/all", internalAuth_middleware_1.identityAuth, admin_garage_controller_1.getAllGaragesController);
39+
router.get("/byCompany/:companyId", internalAuth_middleware_1.identityAuth, garage_controller_1.getGaragesByCompanyController);
40+
router.put("/:id", internalAuth_middleware_1.identityAuth, garage_controller_1.updateGarageProfileController);
41+
router.post("/:garageId/images", internalAuth_middleware_1.identityAuth, garage_image_controller_1.addGarageImageController);
42+
router.get("/:garageId/images", internalAuth_middleware_1.identityAuth, garage_image_controller_1.getGarageImagesController);
43+
router.get("/manager/my", internalAuth_middleware_1.identityAuth, garage_controller_1.getMyManagerGarageController);
44+
router.get("/:id", internalAuth_middleware_1.identityAuth, admin_garage_controller_1.getGarageByIdController);
4545
// slots
46-
router.post("/slots", garage_validator_1.validateCreateSlot, internalAuth_middleware_1.internalAuth, garage_slot_controller_1.createGarageSlotController);
47-
router.get("/slots/my", internalAuth_middleware_1.internalAuth, garage_slot_controller_1.getSlotController);
46+
router.post("/slots", garage_validator_1.validateCreateSlot, internalAuth_middleware_1.identityAuth, garage_slot_controller_1.createGarageSlotController);
47+
router.get("/slots/my", internalAuth_middleware_1.identityAuth, garage_slot_controller_1.getSlotController);
4848
// internal routes
4949
router.get("/internal/slots/available/:garageId/:floorNumber", internalAuth_middleware_1.internalAuth, booking_slot_controller_1.getAvailableSlots);
5050
//floor
51-
router.post("/floors", garage_validator_1.validateCreateFloor, internalAuth_middleware_1.internalAuth, garage_floor_controller_1.createGarageFloorController);
52-
router.get("/floors/my", internalAuth_middleware_1.internalAuth, garage_floor_controller_1.getMyFloorsController);
53-
router.get("/floors/:floorId/slots", internalAuth_middleware_1.internalAuth, garage_slot_controller_1.getSlotsByFloorController);
51+
router.post("/floors", garage_validator_1.validateCreateFloor, internalAuth_middleware_1.identityAuth, garage_floor_controller_1.createGarageFloorController);
52+
router.get("/floors/my", internalAuth_middleware_1.identityAuth, garage_floor_controller_1.getMyFloorsController);
53+
router.get("/floors/:floorId/slots", internalAuth_middleware_1.identityAuth, garage_slot_controller_1.getSlotsByFloorController);
5454
// user side
55-
router.get("/:garageId/slots", internalAuth_middleware_1.internalAuth, garage_slot_controller_1.getPublicAvailableSlotsController);
55+
router.get("/:garageId/slots", internalAuth_middleware_1.identityAuth, garage_slot_controller_1.getPublicAvailableSlotsController);
5656
exports.default = router;

‎nodejs-autospace/resource-service/dist/modules/valets/routes/internal-valet.routes.js‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ const internal_valet_controller_1 = require("../controllers/internal-valet.contr
55
const valet_controller_1 = require("../controllers/valet.controller");
66
const internalAuth_middleware_1 = require("../../../middlewares/internalAuth.middleware");
77
const router = (0, express_1.Router)();
8+
router.use(internalAuth_middleware_1.internalAuth); // Strictly enforce internal service token for all internal routes
89
router.post("/resolve-garage", internal_valet_controller_1.resolveGarage);
910
router.post("/register", internal_valet_controller_1.registerValet);
10-
router.get("/me", internalAuth_middleware_1.internalAuth, valet_controller_1.getMyValetController);
11+
router.get("/me", valet_controller_1.getMyValetController);
1112
router.get("/available/:garageId", internal_valet_controller_1.getAvailableValetController);
1213
router.patch("/:valetId/assign", internal_valet_controller_1.assignValetController);
1314
router.patch("/:valetId/reject", internal_valet_controller_1.rejectBookingController);

‎nodejs-autospace/resource-service/dist/modules/valets/routes/valet.routes.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const internalAuth_middleware_1 = require("../../../middlewares/internalAuth.mid
88
const internal_valet_controller_1 = require("../controllers/internal-valet.controller");
99
// import { getAvailableValetController } from "../controllers/internal-valet.controller";
1010
const router = (0, express_1.Router)();
11-
router.use(internalAuth_middleware_1.internalAuth); // Apply internal authentication middleware to all routes in this router
11+
router.use(internalAuth_middleware_1.identityAuth); // Use identityAuth instead of internalAuth for user-facing routes
1212
router.get("/me", valet_controller_1.getMyValetController);
1313
router.put("/:id/manager/approve", valets_validator_1.validateValetIdParam, valet_controller_1.approveValetController);
1414
router.put("/:id/manager/reject", valets_validator_1.validateValetIdParam, valet_controller_1.rejectValetController);

‎nodejs-autospace/resource-service/src/middlewares/internalAuth.middleware.ts‎

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ import { Request, Response, NextFunction } from "express";
44
import { UserRole, UserStatus } from "../types/auth.type";
55
import { requireActiveGarage } from "./garage-status.middleware";
66

7-
export const internalAuth = (
7+
/**
8+
* identityAuth - Middleware to extract user identity from Gateway headers
9+
* Does NOT enforce internal service token.
10+
*/
11+
export const identityAuth = (
812
req: Request,
913
res: Response,
1014
next: NextFunction,
@@ -20,6 +24,25 @@ export const internalAuth = (
2024
});
2125
}
2226

27+
req.user = {
28+
id: userId,
29+
role,
30+
email: email ?? "",
31+
status: UserStatus.ACTIVE,
32+
};
33+
34+
requireActiveGarage(req, res, next);
35+
};
36+
37+
/**
38+
* internalAuth - Middleware to enforce INTERNAL_SERVICE_TOKEN
39+
* Usually for service-to-service communication.
40+
*/
41+
export const internalAuth = (
42+
req: Request,
43+
res: Response,
44+
next: NextFunction,
45+
) => {
2346
// Validate internal service token if provided
2447
const authHeader = req.headers.authorization;
2548
const token = authHeader?.startsWith("Bearer ")
@@ -30,20 +53,14 @@ export const internalAuth = (
3053
process.env.INTERNAL_SERVICE_TOKEN &&
3154
token !== process.env.INTERNAL_SERVICE_TOKEN
3255
) {
33-
console.warn(`Internal token mismatch for user ${userId}`);
34-
// For now, only log warn or enforce? Let's enforce for security.
56+
console.warn(
57+
`Internal token mismatch for user ${req.headers["x-user-id"]}`,
58+
);
3559
return res.status(403).json({
3660
success: false,
3761
message: "Forbidden - Invalid internal service token",
3862
});
3963
}
4064

41-
req.user = {
42-
id: userId,
43-
role,
44-
email: email ?? "",
45-
status: UserStatus.ACTIVE,
46-
};
47-
48-
requireActiveGarage(req, res, next);
65+
identityAuth(req, res, next);
4966
};

‎nodejs-autospace/resource-service/src/modules/company/routes/company.routes.ts‎

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,25 @@ import {
1313
import { validateCreateCompany } from "../validators/company.validator";
1414
import { getPendingCompanies } from "../controllers/admin.company.controller";
1515
import { validateCompany } from "../controllers/internal.company.controller";
16-
import { internalAuth } from "../../../middlewares/internalAuth.middleware";
1716
import { getCompanyEmployeesController } from "../controllers/companyEmployee.controller";
17+
import {
18+
identityAuth,
19+
internalAuth,
20+
} from "../../../middlewares/internalAuth.middleware";
1821

1922
const router = Router();
2023

21-
router.post("/create", internalAuth, validateCreateCompany, registerCompany);
22-
router.get("/my", internalAuth, getMyCompany);
24+
router.post("/create", identityAuth, validateCreateCompany, registerCompany);
25+
router.get("/my", identityAuth, getMyCompany);
2326

24-
router.get("/admin/all", internalAuth, getAllCompaniesController);
25-
router.put("/admin/:id/active", internalAuth, approveCompany);
26-
router.put("/admin/:id/reject", internalAuth, rejectCompany);
27-
router.get("/admin/pending", internalAuth, getPendingCompanies);
28-
router.put("/:id", internalAuth, updateCompanyProfileController);
27+
router.get("/admin/all", identityAuth, getAllCompaniesController);
28+
router.put("/admin/:id/active", identityAuth, approveCompany);
29+
router.put("/admin/:id/reject", identityAuth, rejectCompany);
30+
router.get("/admin/pending", identityAuth, getPendingCompanies);
31+
router.put("/:id", identityAuth, updateCompanyProfileController);
2932
router.get(
3033
"/:companyId/employees",
31-
internalAuth,
34+
identityAuth,
3235
getCompanyEmployeesController,
3336
);
3437

‎nodejs-autospace/resource-service/src/modules/files/files.routes.ts‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ import {
55
createFileRecord,
66
getFileById,
77
} from "./files.controller";
8-
import { internalAuth } from "../../middlewares/internalAuth.middleware";
8+
import {
9+
identityAuth,
10+
internalAuth,
11+
} from "../../middlewares/internalAuth.middleware";
912

1013
const router = Router();
11-
router.post("/upload", internalAuth, generateUploadUrl);
12-
router.post("/", internalAuth, createFileRecord);
13-
router.get("/:id", internalAuth, getFileById);
14+
router.post("/upload", identityAuth, generateUploadUrl);
15+
router.post("/", identityAuth, createFileRecord);
16+
router.get("/:id", identityAuth, getFileById);
1417

1518
export default router;

0 commit comments

Comments
 (0)