Sửa lỗi quyền sở hữu scene

This commit is contained in:
2026-06-08 12:21:22 +07:00
parent d9ed8032d3
commit 90abf2418a
4 changed files with 61 additions and 45 deletions
+16 -12
View File
@@ -107,10 +107,9 @@ function initMap() {
return;
}
// Chỉ Admin (Chủ sở hữu) mới có quyền tạo Scene mới trực tiếp trên map qua contextmenu
const userRole = localStorage.getItem('role');
const isAdmin = userRole === 'Chủ sở hữu' || userRole === 'admin';
if (!isAdmin) return;
// Cho phép bất kỳ người dùng nào đã đăng nhập tạo Scene mới trên bản đồ
const token = localStorage.getItem('jwt');
if (!token) return;
const { lat, lng } = e.latlng;
openCreateSceneModal(lat, lng);
@@ -370,20 +369,25 @@ async function loadScenes() {
// Chỉ lặp qua danh sách Scene mẹ, lọc bỏ các hotspots trùng tọa độ
scenes.forEach((scene) => {
// Ép kiểu tọa độ về Number để tránh lỗi render bản đồ
const latNum = Number(scene.gps?.lat || scene.lat);
const lngNum = Number(scene.gps?.lng || scene.lng);
// 1. Kiểm tra tọa độ an toàn - Ngăn chặn treo map do NaN
const latNum = Number(scene.gps?.lat ?? scene.lat);
const lngNum = Number(scene.gps?.lng ?? scene.lng);
if (isNaN(latNum) || isNaN(lngNum)) return;
if (isNaN(latNum) || isNaN(lngNum)) {
console.error(`Bỏ qua Scene "${scene.name || scene.title}" do tọa độ lỗi:`, scene);
return;
}
// Logic lọc Ảnh mẹ: Mỗi tọa độ GPS chỉ tạo duy nhất 1 Marker đại diện
// 2. Logic lọc Ảnh mẹ: Sửa lỗi typo coordKey (dùng latNum 2 lần)
const coordKey = `${latNum.toFixed(6)},${lngNum.toFixed(6)}`;
if (seenCoordinates.has(coordKey)) return; // Bỏ qua nếu tọa độ này đã có Marker
if (seenCoordinates.has(coordKey)) return;
seenCoordinates.add(coordKey);
// Kiểm tra an toàn dữ liệu từ MongoDB trước khi truy cập
// 3. Truy cập Asset an toàn
const assetId = scene.assetId?._id || scene.assetId;
const sceneName = scene.name || scene.title;
if (!assetId) return; // Bỏ qua nếu không có ảnh liên kết
const sceneName = scene.name || scene.title || "Untitled Scene";
let thumbUrl = `${API_BASE_URL}/assets/view/${assetId}`;
if (token) thumbUrl += `?token=${token}`;