ERP-node/backend-node/src/routes/roleRoutes.ts

80 lines
2.2 KiB
TypeScript

import { Router } from "express";
import {
getRoleGroups,
getRoleGroupById,
createRoleGroup,
updateRoleGroup,
deleteRoleGroup,
getRoleMembers,
addRoleMembers,
updateRoleMembers,
removeRoleMembers,
getMenuPermissions,
setMenuPermissions,
getUserRoleGroups,
getAllMenus,
} from "../controllers/roleController";
import { authenticateToken } from "../middleware/authMiddleware";
import { requireAdmin } from "../middleware/permissionMiddleware";
const router = Router();
// 모든 role 라우트에 인증 미들웨어 적용
router.use(authenticateToken);
/**
* 사용자 권한 그룹 조회 (/:id 보다 먼저 정의해야 함)
*/
// 현재 사용자가 속한 권한 그룹 조회
router.get("/user/my-groups", getUserRoleGroups);
// 특정 사용자가 속한 권한 그룹 조회
router.get("/user/:userId/groups", requireAdmin, getUserRoleGroups);
/**
* 권한 그룹 CRUD
*/
// 권한 그룹 목록 조회 (회사별)
router.get("/", requireAdmin, getRoleGroups);
// 권한 그룹 상세 조회
router.get("/:id", requireAdmin, getRoleGroupById);
// 권한 그룹 생성 (회사 관리자 이상)
router.post("/", requireAdmin, createRoleGroup);
// 권한 그룹 수정 (회사 관리자 이상)
router.put("/:id", requireAdmin, updateRoleGroup);
// 권한 그룹 삭제 (회사 관리자 이상)
router.delete("/:id", requireAdmin, deleteRoleGroup);
/**
* 권한 그룹 멤버 관리
*/
// 권한 그룹 멤버 목록 조회
router.get("/:id/members", requireAdmin, getRoleMembers);
// 권한 그룹 멤버 일괄 업데이트 (전체 교체)
router.put("/:id/members", requireAdmin, updateRoleMembers);
// 권한 그룹 멤버 추가 (여러 명)
router.post("/:id/members", requireAdmin, addRoleMembers);
// 권한 그룹 멤버 제거 (여러 명)
router.delete("/:id/members", requireAdmin, removeRoleMembers);
/**
* 메뉴 권한 관리
*/
// 전체 메뉴 목록 조회 (권한 설정용)
router.get("/menus/all", requireAdmin, getAllMenus);
// 메뉴 권한 목록 조회
router.get("/:id/menu-permissions", requireAdmin, getMenuPermissions);
// 메뉴 권한 설정
router.put("/:id/menu-permissions", requireAdmin, setMenuPermissions);
export default router;