diff --git a/muranodashboard/conf/murano_policy.json b/muranodashboard/conf/murano_policy.json index ac355dbc8..53da50951 100644 --- a/muranodashboard/conf/murano_policy.json +++ b/muranodashboard/conf/murano_policy.json @@ -31,6 +31,9 @@ "update_env_template": "rule:default", "delete_env_template": "rule:default", - "execute_action": "rule:default" + "execute_action": "rule:default", + + "mark_image": "rule:admin_api", + "remove_image_metadata": "rule:admin_api" } diff --git a/muranodashboard/images/tables.py b/muranodashboard/images/tables.py index b7f04fd68..9852bbbd0 100644 --- a/muranodashboard/images/tables.py +++ b/muranodashboard/images/tables.py @@ -18,6 +18,7 @@ from django.utils.translation import ungettext_lazy from horizon import exceptions from horizon import tables from openstack_dashboard.api import glance +from openstack_dashboard import policy from muranodashboard.common import utils as md_utils @@ -28,12 +29,12 @@ class MarkImage(tables.LinkAction): url = "horizon:app-catalog:images:mark_image" classes = ("ajax-modal",) icon = "plus" - - def allowed(self, request, image): - return request.user.is_superuser + policy_rules = (("murano", "mark_image"),) -class RemoveImageMetadata(tables.DeleteAction): +class RemoveImageMetadata(policy.PolicyTargetMixin, tables.DeleteAction): + policy_rules = (("murano", "remove_image_metadata"),) + @staticmethod def action_present(count): return ungettext_lazy( @@ -59,9 +60,6 @@ class RemoveImageMetadata(tables.DeleteAction): redirect=reverse( 'horizon:app-catalog:images:index')) - def allowed(self, request, image): - return request.user.is_superuser - class MarkedImagesTable(tables.DataTable): image = tables.Column(