Fix: Unknown site_uuid no longer filters all data out, so overview dashboard always shows charts

This commit is contained in:
ypratama committed 2026-09-02 09:23:38 +07:00
1 parent 450a8a5daa
commit 856acdb6da
3 files changed
+25 -11

No files matched your search

+5 -5
View File
@@ -7,7 +7,7 @@ const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const { Summary } = require('../../models/Schemas');
const { getTimeFilter } = require('./helpers');
const { getTimeFilter, isKnownSite } = require('./helpers');
// GET /api/dashboard/agents/uptime
router.get('/agents/uptime', async (req, res) => {
@@ -35,7 +35,7 @@ router.get('/agents/uptime', async (req, res) => {
req.user?.role === 'EXECUTIVE' ||
((!req.user?.site_uuid || req.user?.site_uuid === 'default') && ['SOC_ANALYST', 'ENGINEER'].includes(req.user?.role));
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all') {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
query.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (!isGlobalUser && req.user?.site_uuid) {
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
@@ -80,7 +80,7 @@ router.get('/agents', async (req, res) => {
const isGlobalUser = effectiveRole === 'SUPER_ADMIN' || effectiveRole === 'EXECUTIVE';
const requestedSiteUuid = req.headers['x-backone-site-uuid'];
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all') {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
query.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (effectiveRole === 'TENANT_ADMIN') {
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
@@ -117,7 +117,7 @@ router.get('/agents/storage', async (req, res) => {
((!req.user?.site_uuid || req.user?.site_uuid === 'default') && ['SOC_ANALYST', 'ENGINEER'].includes(req.user?.role));
let siteUuid = null;
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all') {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
siteUuid = requestedSiteUuid;
} else if (!isGlobalUser && req.user?.site_uuid) {
siteUuid = req.user.site_uuid;
@@ -181,7 +181,7 @@ router.get('/agents/list', async (req, res) => {
const effectiveRole = user?._originalRole || user?.role;
const isGlobalUser = effectiveRole === 'SUPER_ADMIN' || effectiveRole === 'EXECUTIVE';
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all') {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
filter.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (user?.site_uuid) {
filter.site_uuid = { $in: [user.site_uuid, 'global'] };
+16 -2
View File
@@ -1,5 +1,18 @@
const { CustomDeviceLabel, Flow } = require('../../models/Schemas');
// Valid tenant site UUIDs (from env). A global user requesting a site that is not
// in this list (e.g. a stale 'test-site' from the account's site_uuid column) must
// NOT silently filter everything out — treat it as "all sites" instead.
const KNOWN_SITES = (process.env.BACKONE_SITE_UUIDS || '')
.split(',')
.map(s => s.trim())
.filter(Boolean);
function isKnownSite(siteUuid) {
// Empty env => no known-site list configured, keep legacy behavior (filter anything).
return KNOWN_SITES.length === 0 || KNOWN_SITES.includes(siteUuid);
}
function getTimeFilter(req) {
// Explicit calendar date range (from the per-page date picker) takes priority
// over the global sidebar time range. Both dates are interpreted as WIB (UTC+7)
@@ -40,7 +53,7 @@ function getBaseFilter(req, timeFilter = null) {
req.user?.role === 'EXECUTIVE' ||
((!req.user?.site_uuid || req.user?.site_uuid === 'default') && ['SOC_ANALYST', 'ENGINEER'].includes(req.user?.role));
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all') {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
filter.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (!isGlobalUser && req.user?.site_uuid) {
filter.site_uuid = { $in: [req.user.site_uuid, 'global'] };
@@ -99,5 +112,6 @@ module.exports = {
getTimeFilter,
getBaseFilter,
getCustomLabelsMap,
topFlowField
topFlowField,
isKnownSite
};