aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/compliance_controls_controller.rb16
-rw-r--r--app/decorators/compliance_control_decorator.rb25
2 files changed, 41 insertions, 0 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index d198f2cdb..dad9b935a 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -1,7 +1,16 @@
class ComplianceControlsController < BreadcrumbController
+ include PolicyChecker
defaults resource_class: ComplianceControl
belongs_to :compliance_control_set
+ def index
+ index! do |format|
+ format.html {
+ @compliance_controls = decorate_compliance_controls(@compliance_controls)
+ }
+ end
+ end
+
def create
create!(notice: t('notice.compliance_control.created'))
end
@@ -16,6 +25,13 @@ class ComplianceControlsController < BreadcrumbController
end
private
+ def decorate_compliance_controls(compliance_controls)
+ ModelDecorator.decorate(
+ compliance_controls,
+ with: ComplianceControlDecorator,
+ )
+ end
+
def compliance_control_params
params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes)
end
diff --git a/app/decorators/compliance_control_decorator.rb b/app/decorators/compliance_control_decorator.rb
new file mode 100644
index 000000000..38b968ad1
--- /dev/null
+++ b/app/decorators/compliance_control_decorator.rb
@@ -0,0 +1,25 @@
+class ComplianceControlDecorator < Draper::Decorator
+ delegate_all
+
+ def action_links
+ links = []
+
+ if h.policy(object).destroy?
+ links << Link.new(
+ content: h.destroy_link_content,
+ href: h.compliance_control_set_compliance_control_path(object.compliance_control_set.id, object.id),
+ method: :delete,
+ data: { confirm: h.t('compliance_controls.actions.destroy_confirm') }
+ )
+ end
+
+ if h.policy(object).edit?
+ links << Link.new(
+ content: h.t('compliance_controls.actions.edit'),
+ href: h.edit_compliance_control_set_path(object.compliance_control_set.id, object.id)
+ )
+ end
+ links
+ end
+
+end