Sửa lỗi quyền sở hữu scene
This commit is contained in:
+16
-12
@@ -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}`;
|
||||
|
||||
Reference in New Issue
Block a user