Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into lhj
; Please enter a commit message to explain why this merge is necessary, ; especially if it merges an updated upstream into a topic branch. ; ; Lines starting with ';' will be ignored, and an empty message aborts ; the commit.
This commit is contained in:
commit
d32e933c03
|
|
@ -1,6 +1,7 @@
|
||||||
import { Request, Response } from "express";
|
import { Request, Response } from "express";
|
||||||
import { getPool } from "../database/db";
|
import { getPool } from "../database/db";
|
||||||
import { logger } from "../utils/logger";
|
import { logger } from "../utils/logger";
|
||||||
|
import { AuthenticatedRequest } from "../types/auth";
|
||||||
import {
|
import {
|
||||||
syncScreenGroupsToMenu,
|
syncScreenGroupsToMenu,
|
||||||
syncMenuToScreenGroups,
|
syncMenuToScreenGroups,
|
||||||
|
|
@ -16,9 +17,9 @@ const pool = getPool();
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// 화면 그룹 목록 조회
|
// 화면 그룹 목록 조회
|
||||||
export const getScreenGroups = async (req: Request, res: Response) => {
|
export const getScreenGroups = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const { page = 1, size = 20, searchTerm } = req.query;
|
const { page = 1, size = 20, searchTerm } = req.query;
|
||||||
const offset = (parseInt(page as string) - 1) * parseInt(size as string);
|
const offset = (parseInt(page as string) - 1) * parseInt(size as string);
|
||||||
|
|
||||||
|
|
@ -90,10 +91,10 @@ export const getScreenGroups = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면 그룹 상세 조회
|
// 화면 그룹 상세 조회
|
||||||
export const getScreenGroup = async (req: Request, res: Response) => {
|
export const getScreenGroup = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
|
|
||||||
let query = `
|
let query = `
|
||||||
SELECT sg.*,
|
SELECT sg.*,
|
||||||
|
|
@ -136,10 +137,10 @@ export const getScreenGroup = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면 그룹 생성
|
// 화면 그룹 생성
|
||||||
export const createScreenGroup = async (req: Request, res: Response) => {
|
export const createScreenGroup = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const userCompanyCode = (req.user as any).companyCode;
|
const userCompanyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
const { group_name, group_code, main_table_name, description, icon, display_order, is_active, parent_group_id, target_company_code } = req.body;
|
const { group_name, group_code, main_table_name, description, icon, display_order, is_active, parent_group_id, target_company_code } = req.body;
|
||||||
|
|
||||||
if (!group_name || !group_code) {
|
if (!group_name || !group_code) {
|
||||||
|
|
@ -210,10 +211,10 @@ export const createScreenGroup = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면 그룹 수정
|
// 화면 그룹 수정
|
||||||
export const updateScreenGroup = async (req: Request, res: Response) => {
|
export const updateScreenGroup = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const userCompanyCode = (req.user as any).companyCode;
|
const userCompanyCode = req.user?.companyCode || "*";
|
||||||
const { group_name, group_code, main_table_name, description, icon, display_order, is_active, parent_group_id, target_company_code } = req.body;
|
const { group_name, group_code, main_table_name, description, icon, display_order, is_active, parent_group_id, target_company_code } = req.body;
|
||||||
|
|
||||||
// 회사 코드 결정: 최고 관리자가 특정 회사를 선택한 경우 해당 회사로, 아니면 현재 그룹의 회사 유지
|
// 회사 코드 결정: 최고 관리자가 특정 회사를 선택한 경우 해당 회사로, 아니면 현재 그룹의 회사 유지
|
||||||
|
|
@ -299,11 +300,11 @@ export const updateScreenGroup = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면 그룹 삭제
|
// 화면 그룹 삭제
|
||||||
export const deleteScreenGroup = async (req: Request, res: Response) => {
|
export const deleteScreenGroup = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
const client = await pool.connect();
|
const client = await pool.connect();
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
|
|
||||||
await client.query('BEGIN');
|
await client.query('BEGIN');
|
||||||
|
|
||||||
|
|
@ -366,10 +367,10 @@ export const deleteScreenGroup = async (req: Request, res: Response) => {
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// 그룹에 화면 추가
|
// 그룹에 화면 추가
|
||||||
export const addScreenToGroup = async (req: Request, res: Response) => {
|
export const addScreenToGroup = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
const { group_id, screen_id, screen_role, display_order, is_default } = req.body;
|
const { group_id, screen_id, screen_role, display_order, is_default } = req.body;
|
||||||
|
|
||||||
if (!group_id || !screen_id) {
|
if (!group_id || !screen_id) {
|
||||||
|
|
@ -406,10 +407,10 @@ export const addScreenToGroup = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 그룹에서 화면 제거
|
// 그룹에서 화면 제거
|
||||||
export const removeScreenFromGroup = async (req: Request, res: Response) => {
|
export const removeScreenFromGroup = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
|
|
||||||
let query = `DELETE FROM screen_group_screens WHERE id = $1`;
|
let query = `DELETE FROM screen_group_screens WHERE id = $1`;
|
||||||
const params: any[] = [id];
|
const params: any[] = [id];
|
||||||
|
|
@ -437,10 +438,10 @@ export const removeScreenFromGroup = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 그룹 내 화면 순서/역할 수정
|
// 그룹 내 화면 순서/역할 수정
|
||||||
export const updateScreenInGroup = async (req: Request, res: Response) => {
|
export const updateScreenInGroup = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const { screen_role, display_order, is_default } = req.body;
|
const { screen_role, display_order, is_default } = req.body;
|
||||||
|
|
||||||
let query = `
|
let query = `
|
||||||
|
|
@ -476,9 +477,9 @@ export const updateScreenInGroup = async (req: Request, res: Response) => {
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// 화면 필드 조인 목록 조회
|
// 화면 필드 조인 목록 조회
|
||||||
export const getFieldJoins = async (req: Request, res: Response) => {
|
export const getFieldJoins = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const { screen_id } = req.query;
|
const { screen_id } = req.query;
|
||||||
|
|
||||||
let query = `
|
let query = `
|
||||||
|
|
@ -517,10 +518,10 @@ export const getFieldJoins = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면 필드 조인 생성
|
// 화면 필드 조인 생성
|
||||||
export const createFieldJoin = async (req: Request, res: Response) => {
|
export const createFieldJoin = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
const {
|
const {
|
||||||
screen_id, layout_id, component_id, field_name,
|
screen_id, layout_id, component_id, field_name,
|
||||||
save_table, save_column, join_table, join_column, display_column,
|
save_table, save_column, join_table, join_column, display_column,
|
||||||
|
|
@ -558,10 +559,10 @@ export const createFieldJoin = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면 필드 조인 수정
|
// 화면 필드 조인 수정
|
||||||
export const updateFieldJoin = async (req: Request, res: Response) => {
|
export const updateFieldJoin = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const {
|
const {
|
||||||
layout_id, component_id, field_name,
|
layout_id, component_id, field_name,
|
||||||
save_table, save_column, join_table, join_column, display_column,
|
save_table, save_column, join_table, join_column, display_column,
|
||||||
|
|
@ -603,10 +604,10 @@ export const updateFieldJoin = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면 필드 조인 삭제
|
// 화면 필드 조인 삭제
|
||||||
export const deleteFieldJoin = async (req: Request, res: Response) => {
|
export const deleteFieldJoin = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
|
|
||||||
let query = `DELETE FROM screen_field_joins WHERE id = $1`;
|
let query = `DELETE FROM screen_field_joins WHERE id = $1`;
|
||||||
const params: any[] = [id];
|
const params: any[] = [id];
|
||||||
|
|
@ -637,9 +638,9 @@ export const deleteFieldJoin = async (req: Request, res: Response) => {
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// 데이터 흐름 목록 조회
|
// 데이터 흐름 목록 조회
|
||||||
export const getDataFlows = async (req: Request, res: Response) => {
|
export const getDataFlows = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const { group_id, source_screen_id } = req.query;
|
const { group_id, source_screen_id } = req.query;
|
||||||
|
|
||||||
let query = `
|
let query = `
|
||||||
|
|
@ -687,10 +688,10 @@ export const getDataFlows = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 데이터 흐름 생성
|
// 데이터 흐름 생성
|
||||||
export const createDataFlow = async (req: Request, res: Response) => {
|
export const createDataFlow = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
const {
|
const {
|
||||||
group_id, source_screen_id, source_action, target_screen_id, target_action,
|
group_id, source_screen_id, source_action, target_screen_id, target_action,
|
||||||
data_mapping, flow_type, flow_label, condition_expression, is_active
|
data_mapping, flow_type, flow_label, condition_expression, is_active
|
||||||
|
|
@ -726,10 +727,10 @@ export const createDataFlow = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 데이터 흐름 수정
|
// 데이터 흐름 수정
|
||||||
export const updateDataFlow = async (req: Request, res: Response) => {
|
export const updateDataFlow = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const {
|
const {
|
||||||
group_id, source_screen_id, source_action, target_screen_id, target_action,
|
group_id, source_screen_id, source_action, target_screen_id, target_action,
|
||||||
data_mapping, flow_type, flow_label, condition_expression, is_active
|
data_mapping, flow_type, flow_label, condition_expression, is_active
|
||||||
|
|
@ -769,10 +770,10 @@ export const updateDataFlow = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 데이터 흐름 삭제
|
// 데이터 흐름 삭제
|
||||||
export const deleteDataFlow = async (req: Request, res: Response) => {
|
export const deleteDataFlow = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
|
|
||||||
let query = `DELETE FROM screen_data_flows WHERE id = $1`;
|
let query = `DELETE FROM screen_data_flows WHERE id = $1`;
|
||||||
const params: any[] = [id];
|
const params: any[] = [id];
|
||||||
|
|
@ -803,9 +804,9 @@ export const deleteDataFlow = async (req: Request, res: Response) => {
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// 화면-테이블 관계 목록 조회
|
// 화면-테이블 관계 목록 조회
|
||||||
export const getTableRelations = async (req: Request, res: Response) => {
|
export const getTableRelations = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const { screen_id, group_id } = req.query;
|
const { screen_id, group_id } = req.query;
|
||||||
|
|
||||||
let query = `
|
let query = `
|
||||||
|
|
@ -852,10 +853,10 @@ export const getTableRelations = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면-테이블 관계 생성
|
// 화면-테이블 관계 생성
|
||||||
export const createTableRelation = async (req: Request, res: Response) => {
|
export const createTableRelation = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
const { group_id, screen_id, table_name, relation_type, crud_operations, description, is_active } = req.body;
|
const { group_id, screen_id, table_name, relation_type, crud_operations, description, is_active } = req.body;
|
||||||
|
|
||||||
if (!screen_id || !table_name) {
|
if (!screen_id || !table_name) {
|
||||||
|
|
@ -885,10 +886,10 @@ export const createTableRelation = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면-테이블 관계 수정
|
// 화면-테이블 관계 수정
|
||||||
export const updateTableRelation = async (req: Request, res: Response) => {
|
export const updateTableRelation = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
const { group_id, table_name, relation_type, crud_operations, description, is_active } = req.body;
|
const { group_id, table_name, relation_type, crud_operations, description, is_active } = req.body;
|
||||||
|
|
||||||
let query = `
|
let query = `
|
||||||
|
|
@ -920,10 +921,10 @@ export const updateTableRelation = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 화면-테이블 관계 삭제
|
// 화면-테이블 관계 삭제
|
||||||
export const deleteTableRelation = async (req: Request, res: Response) => {
|
export const deleteTableRelation = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const companyCode = (req.user as any).companyCode;
|
const companyCode = req.user?.companyCode || "*";
|
||||||
|
|
||||||
let query = `DELETE FROM screen_table_relations WHERE id = $1`;
|
let query = `DELETE FROM screen_table_relations WHERE id = $1`;
|
||||||
const params: any[] = [id];
|
const params: any[] = [id];
|
||||||
|
|
@ -953,7 +954,7 @@ export const deleteTableRelation = async (req: Request, res: Response) => {
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// 화면 레이아웃 요약 조회 (위젯 타입별 개수, 라벨 목록)
|
// 화면 레이아웃 요약 조회 (위젯 타입별 개수, 라벨 목록)
|
||||||
export const getScreenLayoutSummary = async (req: Request, res: Response) => {
|
export const getScreenLayoutSummary = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { screenId } = req.params;
|
const { screenId } = req.params;
|
||||||
|
|
||||||
|
|
@ -1021,7 +1022,7 @@ export const getScreenLayoutSummary = async (req: Request, res: Response) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 여러 화면의 레이아웃 요약 일괄 조회 (미니어처 렌더링용 좌표 포함)
|
// 여러 화면의 레이아웃 요약 일괄 조회 (미니어처 렌더링용 좌표 포함)
|
||||||
export const getMultipleScreenLayoutSummary = async (req: Request, res: Response) => {
|
export const getMultipleScreenLayoutSummary = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { screenIds } = req.body;
|
const { screenIds } = req.body;
|
||||||
|
|
||||||
|
|
@ -1221,7 +1222,7 @@ export const getMultipleScreenLayoutSummary = async (req: Request, res: Response
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
||||||
// 여러 화면의 서브 테이블 정보 조회 (메인 테이블 → 서브 테이블 관계)
|
// 여러 화면의 서브 테이블 정보 조회 (메인 테이블 → 서브 테이블 관계)
|
||||||
export const getScreenSubTables = async (req: Request, res: Response) => {
|
export const getScreenSubTables = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const { screenIds } = req.body;
|
const { screenIds } = req.body;
|
||||||
|
|
||||||
|
|
@ -2060,10 +2061,10 @@ export const getScreenSubTables = async (req: Request, res: Response) => {
|
||||||
* 화면관리 → 메뉴 동기화
|
* 화면관리 → 메뉴 동기화
|
||||||
* screen_groups를 menu_info로 동기화
|
* screen_groups를 menu_info로 동기화
|
||||||
*/
|
*/
|
||||||
export const syncScreenGroupsToMenuController = async (req: Request, res: Response) => {
|
export const syncScreenGroupsToMenuController = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const userCompanyCode = (req.user as any).companyCode;
|
const userCompanyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
const { targetCompanyCode } = req.body;
|
const { targetCompanyCode } = req.body;
|
||||||
|
|
||||||
// 최고 관리자가 특정 회사를 지정한 경우 해당 회사로
|
// 최고 관리자가 특정 회사를 지정한 경우 해당 회사로
|
||||||
|
|
@ -2111,10 +2112,10 @@ export const syncScreenGroupsToMenuController = async (req: Request, res: Respon
|
||||||
* 메뉴 → 화면관리 동기화
|
* 메뉴 → 화면관리 동기화
|
||||||
* menu_info를 screen_groups로 동기화
|
* menu_info를 screen_groups로 동기화
|
||||||
*/
|
*/
|
||||||
export const syncMenuToScreenGroupsController = async (req: Request, res: Response) => {
|
export const syncMenuToScreenGroupsController = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const userCompanyCode = (req.user as any).companyCode;
|
const userCompanyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
const { targetCompanyCode } = req.body;
|
const { targetCompanyCode } = req.body;
|
||||||
|
|
||||||
// 최고 관리자가 특정 회사를 지정한 경우 해당 회사로
|
// 최고 관리자가 특정 회사를 지정한 경우 해당 회사로
|
||||||
|
|
@ -2161,9 +2162,9 @@ export const syncMenuToScreenGroupsController = async (req: Request, res: Respon
|
||||||
/**
|
/**
|
||||||
* 동기화 상태 조회
|
* 동기화 상태 조회
|
||||||
*/
|
*/
|
||||||
export const getSyncStatusController = async (req: Request, res: Response) => {
|
export const getSyncStatusController = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const userCompanyCode = (req.user as any).companyCode;
|
const userCompanyCode = req.user?.companyCode || "*";
|
||||||
const { targetCompanyCode } = req.query;
|
const { targetCompanyCode } = req.query;
|
||||||
|
|
||||||
// 최고 관리자가 특정 회사를 지정한 경우 해당 회사로
|
// 최고 관리자가 특정 회사를 지정한 경우 해당 회사로
|
||||||
|
|
@ -2200,10 +2201,10 @@ export const getSyncStatusController = async (req: Request, res: Response) => {
|
||||||
* 전체 회사 동기화
|
* 전체 회사 동기화
|
||||||
* 모든 회사에 대해 양방향 동기화 수행 (최고 관리자만)
|
* 모든 회사에 대해 양방향 동기화 수행 (최고 관리자만)
|
||||||
*/
|
*/
|
||||||
export const syncAllCompaniesController = async (req: Request, res: Response) => {
|
export const syncAllCompaniesController = async (req: AuthenticatedRequest, res: Response) => {
|
||||||
try {
|
try {
|
||||||
const userCompanyCode = (req.user as any).companyCode;
|
const userCompanyCode = req.user?.companyCode || "*";
|
||||||
const userId = (req.user as any).userId;
|
const userId = req.user?.userId || "";
|
||||||
|
|
||||||
// 최고 관리자만 전체 동기화 가능
|
// 최고 관리자만 전체 동기화 가능
|
||||||
if (userCompanyCode !== "*") {
|
if (userCompanyCode !== "*") {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue