Thay đổi ngày 20260609
This commit is contained in:
+10
-11
@@ -856,34 +856,33 @@ router.put('/scenes/:id', protect, uploadSinglePanorama, async (req, res, next)
|
||||
|
||||
if (targetSceneIds.length > 0) {
|
||||
for (const targetId of targetSceneIds) {
|
||||
const updateData = { privacy: privacy };
|
||||
let newShareToken = null;
|
||||
let updateOperation = { $set: { privacy: privacy } };
|
||||
|
||||
// Nếu chuyển sang 'shared', đảm bảo scene con cũng có token riêng
|
||||
if (privacy === 'shared') {
|
||||
const target = await Scene.findById(targetId);
|
||||
if (target && !target.shareToken) {
|
||||
newShareToken = crypto.randomBytes(24).toString('hex');
|
||||
updateData.shareToken = newShareToken;
|
||||
updateOperation.$set.shareToken = crypto.randomBytes(24).toString('hex');
|
||||
// Đặt thời hạn token của scene con giống scene cha nếu có
|
||||
if (scene.shareTokenExpires) {
|
||||
updateData.shareTokenExpires = scene.shareTokenExpires;
|
||||
updateOperation.$set.shareTokenExpires = scene.shareTokenExpires;
|
||||
}
|
||||
} else if (target && target.shareToken) {
|
||||
// Nếu scene con đã có token, giữ nguyên
|
||||
updateData.shareToken = target.shareToken;
|
||||
updateOperation.$set.shareToken = target.shareToken;
|
||||
if (scene.shareTokenExpires) {
|
||||
updateData.shareTokenExpires = scene.shareTokenExpires;
|
||||
updateOperation.$set.shareTokenExpires = scene.shareTokenExpires;
|
||||
} else {
|
||||
updateData.shareTokenExpires = null;
|
||||
updateOperation.$set.shareTokenExpires = null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Nếu không phải 'shared', xóa token và thời hạn của scene con
|
||||
updateData.shareToken = null;
|
||||
updateData.shareTokenExpires = null;
|
||||
// Sử dụng $unset để loại bỏ trường thay vì đặt thành null,
|
||||
// điều này giúp tránh lỗi duplicate key nếu index không phải là sparse.
|
||||
updateOperation.$unset = { shareToken: "", shareTokenExpires: "" };
|
||||
}
|
||||
await Scene.updateOne({ _id: targetId }, { $set: updateData });
|
||||
await Scene.updateOne({ _id: targetId }, updateOperation);
|
||||
}
|
||||
console.log(`[Privacy Sync] Cascaded privacy status to ${targetSceneIds.length} linked scenes.`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user