auto commit
This commit is contained in:
parent
9ee1e2cceb
commit
f83eaf1f5d
@ -5,7 +5,6 @@ const authService = require("../../../services/auth.service");
|
|||||||
const { body } = require("express-validator");
|
const { body } = require("express-validator");
|
||||||
const validate = require("../../../middleware/validator.middleware");
|
const validate = require("../../../middleware/validator.middleware");
|
||||||
const authMiddleware = require("../../../middleware/auth.middleware");
|
const authMiddleware = require("../../../middleware/auth.middleware");
|
||||||
const PermissionUtils = require("../../../utils/permission.utils");
|
|
||||||
|
|
||||||
router.post(
|
router.post(
|
||||||
"/login",
|
"/login",
|
||||||
@ -35,16 +34,4 @@ router.post("/logout", authMiddleware, async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// src/controllers/app/auth/auth.controller.js
|
|
||||||
router.get("/menu", authMiddleware, async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
const accessibleMenus = await PermissionUtils.getUserAccessibleMenus(
|
|
||||||
req.user
|
|
||||||
);
|
|
||||||
res.json(accessibleMenus);
|
|
||||||
} catch (error) {
|
|
||||||
next(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
@ -1,91 +1,14 @@
|
|||||||
// src/routes/index.js
|
// src/routes/index.js
|
||||||
// const logger = require("../config/logger");
|
|
||||||
// const adminRoutes = require("./admin");
|
|
||||||
// const appRoutes = require("./app");
|
|
||||||
|
|
||||||
// function registerRoutes(app) {
|
|
||||||
// // 기본 경로에 라우터 연결
|
|
||||||
// app.use("/api/v1/admin", adminRoutes);
|
|
||||||
// app.use("/api/v1/app", appRoutes);
|
|
||||||
|
|
||||||
// // 등록된 라우트 출력 (디버깅용)
|
|
||||||
// const routes = [];
|
|
||||||
// app._router.stack.forEach((middleware) => {
|
|
||||||
// if (middleware.route) {
|
|
||||||
// routes.push(
|
|
||||||
// `${Object.keys(middleware.route.methods)} ${middleware.route.path}`
|
|
||||||
// );
|
|
||||||
// } else if (middleware.name === "router") {
|
|
||||||
// middleware.handle.stack.forEach((handler) => {
|
|
||||||
// if (handler.route) {
|
|
||||||
// routes.push(
|
|
||||||
// `${Object.keys(handler.route.methods)} ${handler.route.path}`
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
// logger.info("Registered routes:");
|
|
||||||
// routes.forEach((route) => logger.info(route));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// module.exports = registerRoutes;
|
|
||||||
|
|
||||||
const express = require("express");
|
|
||||||
const menuConfig = require("../config/menuConfig");
|
|
||||||
const menuAccessMiddleware = require("../middleware/menu.middleware");
|
|
||||||
const logger = require("../config/logger");
|
const logger = require("../config/logger");
|
||||||
|
const adminRoutes = require("./admin");
|
||||||
|
const appRoutes = require("./app");
|
||||||
|
|
||||||
function registerRoutes(app) {
|
function registerRoutes(app) {
|
||||||
// Admin 라우트 등록
|
// 기본 경로에 라우터 연결
|
||||||
const adminRouter = express.Router();
|
app.use("/api/v1/admin", adminRoutes);
|
||||||
Object.entries(menuConfig.admin).forEach(([key, config]) => {
|
app.use("/api/v1/app", appRoutes);
|
||||||
registerRouteWithPermissions(adminRouter, key, config);
|
|
||||||
});
|
|
||||||
app.use("/api/v1/admin", adminRouter);
|
|
||||||
|
|
||||||
// App 라우트 등록
|
// 등록된 라우트 출력 (디버깅용)
|
||||||
const appRouter = express.Router();
|
|
||||||
Object.entries(menuConfig.app).forEach(([key, config]) => {
|
|
||||||
registerRouteWithPermissions(appRouter, key, config);
|
|
||||||
});
|
|
||||||
app.use("/api/v1/app", appRouter);
|
|
||||||
|
|
||||||
// 등록된 라우트 로깅
|
|
||||||
logRegisteredRoutes(app);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 권한이 적용된 라우트 등록
|
|
||||||
*/
|
|
||||||
function registerRouteWithPermissions(router, key, config) {
|
|
||||||
const controller = require(`../controllers/${config.path.slice(
|
|
||||||
1
|
|
||||||
)}.controller`);
|
|
||||||
const path = `/${key}`;
|
|
||||||
|
|
||||||
router.use(path, menuAccessMiddleware(config.path), controller);
|
|
||||||
|
|
||||||
// 서브메뉴 등록
|
|
||||||
if (config.subMenus) {
|
|
||||||
Object.entries(config.subMenus).forEach(([subKey, subConfig]) => {
|
|
||||||
const subController = require(`../controllers/${subConfig.path.slice(
|
|
||||||
1
|
|
||||||
)}.controller`);
|
|
||||||
router.use(
|
|
||||||
`${path}/${subKey}`,
|
|
||||||
menuAccessMiddleware(subConfig.path),
|
|
||||||
subController
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 등록된 라우트 로깅
|
|
||||||
*/
|
|
||||||
function logRegisteredRoutes(app) {
|
|
||||||
const routes = [];
|
const routes = [];
|
||||||
app._router.stack.forEach((middleware) => {
|
app._router.stack.forEach((middleware) => {
|
||||||
if (middleware.route) {
|
if (middleware.route) {
|
||||||
|
@ -122,9 +122,12 @@ const getMenuItems = (
|
|||||||
|
|
||||||
// 관리자 권한 체크
|
// 관리자 권한 체크
|
||||||
const isAdmin = ["super_admin", "company_admin"].includes(role);
|
const isAdmin = ["super_admin", "company_admin"].includes(role);
|
||||||
const hasAnyAdminPermission = Object.values(ADMIN_PERMISSIONS).some(
|
// 관리자가 아닌 경우에만 권한 체크
|
||||||
(permission) => hasPermission(permission)
|
const hasAnyAdminPermission =
|
||||||
);
|
!isAdmin &&
|
||||||
|
Object.values(ADMIN_PERMISSIONS).some((permission) =>
|
||||||
|
hasPermission(permission)
|
||||||
|
);
|
||||||
|
|
||||||
// 관리자 메뉴 아이템
|
// 관리자 메뉴 아이템
|
||||||
const adminMenuItem = {
|
const adminMenuItem = {
|
||||||
@ -175,13 +178,15 @@ const getMenuItems = (
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
// 관리자 권한이 있는 메뉴 아이템만 필터링
|
// 관리자면 모든 메뉴 표시, 아닌 경우 권한 체크
|
||||||
const filteredAdminItems = {
|
const filteredAdminItems = {
|
||||||
...adminMenuItem,
|
...adminMenuItem,
|
||||||
items: adminMenuItem.items.filter((item) => hasPermission(item.permission)),
|
items: isAdmin
|
||||||
|
? adminMenuItem.items // 관리자는 모든 메뉴 표시
|
||||||
|
: adminMenuItem.items.filter((item) => hasPermission(item.permission)), // 권한 체크
|
||||||
};
|
};
|
||||||
|
|
||||||
// 관리자 권한이 있고, 접근 가능한 메뉴가 하나라도 있는 경우에만 관리자 메뉴 추가
|
// 관리자이거나 권한이 있는 메뉴가 있는 경우에만 관리자 메뉴 추가
|
||||||
return isAdmin ||
|
return isAdmin ||
|
||||||
(hasAnyAdminPermission && filteredAdminItems.items.length > 0)
|
(hasAnyAdminPermission && filteredAdminItems.items.length > 0)
|
||||||
? [...baseMenuItems, filteredAdminItems]
|
? [...baseMenuItems, filteredAdminItems]
|
||||||
|
Loading…
Reference in New Issue
Block a user