대시보드 조회 시 company_code 기반 접근 권한으로 변경
This commit is contained in:
parent
b43bf57ea9
commit
1849bf6654
|
|
@ -299,6 +299,8 @@ export class DashboardService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 대시보드 상세 조회
|
* 대시보드 상세 조회
|
||||||
|
* - company_code가 일치하면 해당 회사 사용자는 모두 조회 가능
|
||||||
|
* - company_code가 '*'인 경우 최고 관리자만 조회 가능
|
||||||
*/
|
*/
|
||||||
static async getDashboardById(
|
static async getDashboardById(
|
||||||
dashboardId: string,
|
dashboardId: string,
|
||||||
|
|
@ -310,44 +312,43 @@ export class DashboardService {
|
||||||
let dashboardQuery: string;
|
let dashboardQuery: string;
|
||||||
let dashboardParams: any[];
|
let dashboardParams: any[];
|
||||||
|
|
||||||
if (userId) {
|
if (companyCode) {
|
||||||
if (companyCode) {
|
// 회사 코드가 있으면 해당 회사 대시보드 또는 공개 대시보드 조회 가능
|
||||||
|
// 최고 관리자(companyCode = '*')는 모든 대시보드 조회 가능
|
||||||
|
if (companyCode === '*') {
|
||||||
dashboardQuery = `
|
dashboardQuery = `
|
||||||
SELECT d.*
|
SELECT d.*
|
||||||
FROM dashboards d
|
FROM dashboards d
|
||||||
WHERE d.id = $1 AND d.deleted_at IS NULL
|
WHERE d.id = $1 AND d.deleted_at IS NULL
|
||||||
AND d.company_code = $2
|
|
||||||
AND (d.created_by = $3 OR d.is_public = true)
|
|
||||||
`;
|
|
||||||
dashboardParams = [dashboardId, companyCode, userId];
|
|
||||||
} else {
|
|
||||||
dashboardQuery = `
|
|
||||||
SELECT d.*
|
|
||||||
FROM dashboards d
|
|
||||||
WHERE d.id = $1 AND d.deleted_at IS NULL
|
|
||||||
AND (d.created_by = $2 OR d.is_public = true)
|
|
||||||
`;
|
|
||||||
dashboardParams = [dashboardId, userId];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (companyCode) {
|
|
||||||
dashboardQuery = `
|
|
||||||
SELECT d.*
|
|
||||||
FROM dashboards d
|
|
||||||
WHERE d.id = $1 AND d.deleted_at IS NULL
|
|
||||||
AND d.company_code = $2
|
|
||||||
AND d.is_public = true
|
|
||||||
`;
|
|
||||||
dashboardParams = [dashboardId, companyCode];
|
|
||||||
} else {
|
|
||||||
dashboardQuery = `
|
|
||||||
SELECT d.*
|
|
||||||
FROM dashboards d
|
|
||||||
WHERE d.id = $1 AND d.deleted_at IS NULL
|
|
||||||
AND d.is_public = true
|
|
||||||
`;
|
`;
|
||||||
dashboardParams = [dashboardId];
|
dashboardParams = [dashboardId];
|
||||||
|
} else {
|
||||||
|
dashboardQuery = `
|
||||||
|
SELECT d.*
|
||||||
|
FROM dashboards d
|
||||||
|
WHERE d.id = $1 AND d.deleted_at IS NULL
|
||||||
|
AND d.company_code = $2
|
||||||
|
`;
|
||||||
|
dashboardParams = [dashboardId, companyCode];
|
||||||
}
|
}
|
||||||
|
} else if (userId) {
|
||||||
|
// 회사 코드 없이 userId만 있는 경우 (본인 생성 또는 공개)
|
||||||
|
dashboardQuery = `
|
||||||
|
SELECT d.*
|
||||||
|
FROM dashboards d
|
||||||
|
WHERE d.id = $1 AND d.deleted_at IS NULL
|
||||||
|
AND (d.created_by = $2 OR d.is_public = true)
|
||||||
|
`;
|
||||||
|
dashboardParams = [dashboardId, userId];
|
||||||
|
} else {
|
||||||
|
// 비로그인 사용자는 공개 대시보드만
|
||||||
|
dashboardQuery = `
|
||||||
|
SELECT d.*
|
||||||
|
FROM dashboards d
|
||||||
|
WHERE d.id = $1 AND d.deleted_at IS NULL
|
||||||
|
AND d.is_public = true
|
||||||
|
`;
|
||||||
|
dashboardParams = [dashboardId];
|
||||||
}
|
}
|
||||||
|
|
||||||
const dashboardResult = await PostgreSQLService.query(
|
const dashboardResult = await PostgreSQLService.query(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue