From 37187459312b85b781a23cd55fa4790bd6921bb3 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Tue, 12 May 2026 21:31:28 +0200
Subject: [PATCH] teamsbot auth fixes
---
modules/interfaces/interfaceDbManagement.py | 38 ++++++++++++---------
modules/routes/routeDataFiles.py | 2 +-
2 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/modules/interfaces/interfaceDbManagement.py b/modules/interfaces/interfaceDbManagement.py
index f74de871..6a3c27b5 100644
--- a/modules/interfaces/interfaceDbManagement.py
+++ b/modules/interfaces/interfaceDbManagement.py
@@ -1274,17 +1274,20 @@ class ComponentObjects:
if getattr(permissions, "update", None) != AccessLevel.ALL:
raise PermissionError("Setting global scope requires ALL permission")
- self.db.recordModify(FileFolder, folderId, {"scope": scope})
+ allFolderIds = self._collectChildFolderIds(folderId)
+ for fid in allFolderIds:
+ self.db.recordModify(FileFolder, fid, {"scope": scope})
filesUpdated = 0
if cascadeToFiles:
- items = self.db.getRecordset(FileItem, recordFilter={"folderId": folderId})
- for item in items:
- owner = item.get("sysCreatedBy") if isinstance(item, dict) else getattr(item, "sysCreatedBy", None)
- if owner == self.userId:
- iid = item.get("id") if isinstance(item, dict) else getattr(item, "id", None)
- self.db.recordModify(FileItem, iid, {"scope": scope})
- filesUpdated += 1
+ for fid in allFolderIds:
+ items = self.db.getRecordset(FileItem, recordFilter={"folderId": fid})
+ for item in items:
+ owner = item.get("sysCreatedBy") if isinstance(item, dict) else getattr(item, "sysCreatedBy", None)
+ if owner == self.userId:
+ iid = item.get("id") if isinstance(item, dict) else getattr(item, "id", None)
+ self.db.recordModify(FileItem, iid, {"scope": scope})
+ filesUpdated += 1
return {"folderId": folderId, "scope": scope, "filesUpdated": filesUpdated}
@@ -1294,16 +1297,19 @@ class ComponentObjects:
raise FileNotFoundError(f"Folder {folderId} not found")
self._requireFolderWriteAccess(folder, folderId, "update")
- self.db.recordModify(FileFolder, folderId, {"neutralize": neutralize})
+ allFolderIds = self._collectChildFolderIds(folderId)
+ for fid in allFolderIds:
+ self.db.recordModify(FileFolder, fid, {"neutralize": neutralize})
- items = self.db.getRecordset(FileItem, recordFilter={"folderId": folderId})
filesUpdated = 0
- for item in items:
- owner = item.get("sysCreatedBy") if isinstance(item, dict) else getattr(item, "sysCreatedBy", None)
- if owner == self.userId:
- iid = item.get("id") if isinstance(item, dict) else getattr(item, "id", None)
- self.db.recordModify(FileItem, iid, {"neutralize": neutralize})
- filesUpdated += 1
+ for fid in allFolderIds:
+ items = self.db.getRecordset(FileItem, recordFilter={"folderId": fid})
+ for item in items:
+ owner = item.get("sysCreatedBy") if isinstance(item, dict) else getattr(item, "sysCreatedBy", None)
+ if owner == self.userId:
+ iid = item.get("id") if isinstance(item, dict) else getattr(item, "id", None)
+ self.db.recordModify(FileItem, iid, {"neutralize": neutralize})
+ filesUpdated += 1
return {"folderId": folderId, "neutralize": neutralize, "filesUpdated": filesUpdated}
diff --git a/modules/routes/routeDataFiles.py b/modules/routes/routeDataFiles.py
index 3a951f3e..b22dacae 100644
--- a/modules/routes/routeDataFiles.py
+++ b/modules/routes/routeDataFiles.py
@@ -413,7 +413,7 @@ def patch_folder_scope(
scope = body.get("scope")
if not scope:
raise HTTPException(status_code=400, detail="scope is required")
- cascadeToFiles = body.get("cascadeToFiles", False)
+ cascadeToFiles = body.get("cascadeChildren", body.get("cascadeToFiles", False))
managementInterface = interfaceDbManagement.getInterface(
currentUser,
mandateId=str(context.mandateId) if context.mandateId else None,