diff --git a/app/models/service.py b/app/models/service.py index 2787eb209..64805f430 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -443,10 +443,10 @@ class Service(): user_folders = [] for folder in self.all_template_folders: - if not user.has_template_folder_permission(folder): + if not user.has_template_folder_permission(folder, service=self): continue parent = self.get_template_folder(folder["parent_id"]) - if user.has_template_folder_permission(parent): + if user.has_template_folder_permission(parent, service=self): user_folders.append(folder) else: folder_attrs = { @@ -460,7 +460,7 @@ class Service(): else: parent = self.get_template_folder(parent["parent_id"]) folder_attrs["parent_id"] = parent.get("id", None) - if user.has_template_folder_permission(parent): + if user.has_template_folder_permission(parent, service=self): break user_folders.append(folder_attrs) return user_folders diff --git a/app/models/user.py b/app/models/user.py index 3c234eb3e..bf5d4feaa 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -151,7 +151,15 @@ class User(UserMixin): def has_permission_for_service(self, service_id, permission): return permission in self._permissions.get(service_id, []) - def has_template_folder_permission(self, template_folder): + def has_template_folder_permission(self, template_folder, service=None): + from app import current_service + + if service is None: + service = current_service + + if not service.has_permission('edit_folder_permissions'): + return True + if self.platform_admin: return True