46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
// src/controllers/app/department/department.controller.js
|
|
const express = require("express");
|
|
const router = express.Router();
|
|
const departmentService = require("../../../services/department.service");
|
|
const authMiddleware = require("../../../middleware/auth.middleware");
|
|
const roleCheck = require("../../../middleware/roleCheck.middleware");
|
|
const { query } = require("express-validator");
|
|
const validate = require("../../../middleware/validator.middleware");
|
|
|
|
// 인증 및 권한 확인
|
|
router.use(authMiddleware);
|
|
router.use(roleCheck(["super_admin", "company_admin", "branch_admin", "user"]));
|
|
|
|
// 부서 목록 조회 (트리 구조 또는 평면 구조로 조회 가능)
|
|
router.get(
|
|
"/",
|
|
[
|
|
query("format")
|
|
.optional()
|
|
.isIn(["tree", "flat"])
|
|
.withMessage("유효한 형식이 아닙니다"),
|
|
query("includeInactive")
|
|
.optional()
|
|
.isBoolean()
|
|
.withMessage("유효한 값이 아닙니다"),
|
|
validate,
|
|
],
|
|
async (req, res, next) => {
|
|
try {
|
|
const format = req.query.format || "flat";
|
|
const includeInactive = req.query.includeInactive === "true";
|
|
|
|
const department = await departmentService.findAll(
|
|
req.user,
|
|
format,
|
|
includeInactive
|
|
);
|
|
res.json(department);
|
|
} catch (error) {
|
|
next(error);
|
|
}
|
|
}
|
|
);
|
|
|
|
module.exports = router;
|