mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-08 03:48:25 -04:00
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:
@@ -443,10 +443,10 @@ class Service():
|
|||||||
|
|
||||||
user_folders = []
|
user_folders = []
|
||||||
for folder in self.all_template_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
|
continue
|
||||||
parent = self.get_template_folder(folder["parent_id"])
|
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)
|
user_folders.append(folder)
|
||||||
else:
|
else:
|
||||||
folder_attrs = {
|
folder_attrs = {
|
||||||
@@ -460,7 +460,7 @@ class Service():
|
|||||||
else:
|
else:
|
||||||
parent = self.get_template_folder(parent["parent_id"])
|
parent = self.get_template_folder(parent["parent_id"])
|
||||||
folder_attrs["parent_id"] = parent.get("id", None)
|
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
|
break
|
||||||
user_folders.append(folder_attrs)
|
user_folders.append(folder_attrs)
|
||||||
return user_folders
|
return user_folders
|
||||||
|
|||||||
@@ -151,7 +151,15 @@ class User(UserMixin):
|
|||||||
def has_permission_for_service(self, service_id, permission):
|
def has_permission_for_service(self, service_id, permission):
|
||||||
return permission in self._permissions.get(service_id, [])
|
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:
|
if self.platform_admin:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user