Add a temporary check for service folder permission

Since we're calling `User.has_template_folder_permission` directly
in a few places (notably the `folder_path` template macro), we need
to check that the service has the feature flag enabled first. This is
usually done by the caller, but template macro doesn't have access to
`current_service`. To avoid passing it in each time the macro is called
we're adding a temporary check inside the method itself.

This commit can be reverted completely when we remove the service
feature flag.
This commit is contained in:
Alexey Bezhan
2019-03-29 16:44:57 +00:00
parent e6d4c7aaa8
commit 2478c6b608
2 changed files with 12 additions and 4 deletions

View File

@@ -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

View File

@@ -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