회사별 테이블 데이터 격리
This commit is contained in:
@@ -27,6 +27,7 @@ export class EntityJoinController {
|
||||
enableEntityJoin = true,
|
||||
additionalJoinColumns, // 추가 조인 컬럼 정보 (JSON 문자열)
|
||||
screenEntityConfigs, // 화면별 엔티티 설정 (JSON 문자열)
|
||||
autoFilter, // 🔒 멀티테넌시 자동 필터
|
||||
userLang, // userLang은 별도로 분리하여 search에 포함되지 않도록 함
|
||||
...otherParams
|
||||
} = req.query;
|
||||
@@ -36,6 +37,7 @@ export class EntityJoinController {
|
||||
size,
|
||||
enableEntityJoin,
|
||||
search,
|
||||
autoFilter,
|
||||
});
|
||||
|
||||
// 검색 조건 처리
|
||||
@@ -51,6 +53,31 @@ export class EntityJoinController {
|
||||
}
|
||||
}
|
||||
|
||||
// 🔒 멀티테넌시: 자동 필터 처리
|
||||
if (autoFilter) {
|
||||
try {
|
||||
const parsedAutoFilter =
|
||||
typeof autoFilter === "string" ? JSON.parse(autoFilter) : autoFilter;
|
||||
|
||||
if (parsedAutoFilter.enabled && (req as any).user) {
|
||||
const filterColumn = parsedAutoFilter.filterColumn || "company_code";
|
||||
const userField = parsedAutoFilter.userField || "companyCode";
|
||||
const userValue = ((req as any).user as any)[userField];
|
||||
|
||||
if (userValue) {
|
||||
searchConditions[filterColumn] = userValue;
|
||||
logger.info("🔒 Entity 조인에 멀티테넌시 필터 적용:", {
|
||||
filterColumn,
|
||||
userValue,
|
||||
tableName,
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
logger.warn("자동 필터 파싱 오류:", error);
|
||||
}
|
||||
}
|
||||
|
||||
// 추가 조인 컬럼 정보 처리
|
||||
let parsedAdditionalJoinColumns: any[] = [];
|
||||
if (additionalJoinColumns) {
|
||||
|
||||
Reference in New Issue
Block a user