aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorcedricnjanga2017-11-13 12:33:15 +0100
committercedricnjanga2017-11-13 12:43:15 +0100
commitb81cbd6de7944443f9a024acb5fa6cdfdfeaac63 (patch)
treed425705f149dfbcf840606570df10c9d1200708e /app
parentf74240182d95fd43f4aabc14b6560158dd276b21 (diff)
downloadchouette-core-b81cbd6de7944443f9a024acb5fa6cdfdfeaac63.tar.bz2
Refs #4952 Fix bug related to compliance control set action links display
Diffstat (limited to 'app')
-rw-r--r--app/controllers/compliance_control_blocks_controller.rb1
-rw-r--r--app/controllers/compliance_control_sets_controller.rb1
-rw-r--r--app/controllers/compliance_controls_controller.rb1
-rw-r--r--app/helpers/compliance_control_sets_helper.rb34
-rw-r--r--app/policies/compliance_control_block_policy.rb20
-rw-r--r--app/policies/compliance_control_set_policy.rb6
-rw-r--r--app/views/compliance_control_sets/show.html.slim17
7 files changed, 62 insertions, 18 deletions
diff --git a/app/controllers/compliance_control_blocks_controller.rb b/app/controllers/compliance_control_blocks_controller.rb
index 996f8a464..f53a1e04a 100644
--- a/app/controllers/compliance_control_blocks_controller.rb
+++ b/app/controllers/compliance_control_blocks_controller.rb
@@ -1,4 +1,5 @@
class ComplianceControlBlocksController < InheritedResources::Base
+ include PolicyChecker
defaults resource_class: ComplianceControlBlock
belongs_to :compliance_control_set
actions :all, :except => [:show, :index]
diff --git a/app/controllers/compliance_control_sets_controller.rb b/app/controllers/compliance_control_sets_controller.rb
index 956f26112..5c78d09e3 100644
--- a/app/controllers/compliance_control_sets_controller.rb
+++ b/app/controllers/compliance_control_sets_controller.rb
@@ -1,4 +1,5 @@
class ComplianceControlSetsController < InheritedResources::Base
+ include PolicyChecker
defaults resource_class: ComplianceControlSet
include RansackDateFilter
before_action only: [:index] { set_date_time_params("updated_at", DateTime) }
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index 816d8897b..5a9c0b671 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -1,4 +1,5 @@
class ComplianceControlsController < InheritedResources::Base
+ include PolicyChecker
defaults resource_class: ComplianceControl
belongs_to :compliance_control_set
actions :all, :except => [:index]
diff --git a/app/helpers/compliance_control_sets_helper.rb b/app/helpers/compliance_control_sets_helper.rb
index 6ba4bed4f..bb2a72623 100644
--- a/app/helpers/compliance_control_sets_helper.rb
+++ b/app/helpers/compliance_control_sets_helper.rb
@@ -4,4 +4,36 @@ module ComplianceControlSetsHelper
[current_organisation, Organisation.find_by_name("STIF")].uniq
end
-end
+ def flotted_links ccs_id = @compliance_control_set
+ links = [new_control(ccs_id), new_block(ccs_id)]
+ unless links.all? &:nil?
+ content_tag :div, class: 'select_toolbox' do
+ content_tag :ul do
+ links.collect {|link| concat content_tag(:li, link, class: 'st_action with_text') unless link.nil?}
+ end
+ end
+ end
+ end
+
+ def new_control ccs_id
+ if policy(ComplianceControl).create?
+ link_to select_type_compliance_control_set_compliance_controls_path(ccs_id) do
+ concat content_tag :span, nil, class: 'fa fa-plus'
+ concat content_tag :span, t('compliance_control_sets.actions.add_compliance_control')
+ end
+ else
+ nil
+ end
+ end
+
+ def new_block ccs_id
+ if policy(ComplianceControlBlock).create?
+ link_to new_compliance_control_set_compliance_control_block_path(ccs_id) do
+ concat content_tag :span, nil, class: 'fa fa-plus'
+ concat content_tag :span,t('compliance_control_sets.actions.add_compliance_control_block')
+ end
+ else
+ nil
+ end
+ end
+end \ No newline at end of file
diff --git a/app/policies/compliance_control_block_policy.rb b/app/policies/compliance_control_block_policy.rb
new file mode 100644
index 000000000..acbc1853f
--- /dev/null
+++ b/app/policies/compliance_control_block_policy.rb
@@ -0,0 +1,20 @@
+class ComplianceControlBlockPolicy < ApplicationPolicy
+ class Scope < Scope
+ def resolve
+ scope
+ end
+ end
+
+ def destroy?
+ user.has_permission?('compliance_control_blocks.destroy')
+ end
+
+ def create?
+ user.has_permission?('compliance_control_blocks.create')
+ end
+
+ def update?
+ user.has_permission?('compliance_control_blocks.update')
+ end
+
+end
diff --git a/app/policies/compliance_control_set_policy.rb b/app/policies/compliance_control_set_policy.rb
index 6288a2ff2..011f6c0c7 100644
--- a/app/policies/compliance_control_set_policy.rb
+++ b/app/policies/compliance_control_set_policy.rb
@@ -6,15 +6,15 @@ class ComplianceControlSetPolicy < ApplicationPolicy
end
def destroy?
- user.has_permission?('compliance_controls_sets.destroy')
+ user.has_permission?('compliance_control_sets.destroy')
end
def create?
- user.has_permission?('compliance_controls_sets.create')
+ user.has_permission?('compliance_control_sets.create')
end
def update?
- user.has_permission?('compliance_controls_sets.update')
+ user.has_permission?('compliance_control_sets.update')
end
def clone?
diff --git a/app/views/compliance_control_sets/show.html.slim b/app/views/compliance_control_sets/show.html.slim
index d086c07c8..89b645dd7 100644
--- a/app/views/compliance_control_sets/show.html.slim
+++ b/app/views/compliance_control_sets/show.html.slim
@@ -77,8 +77,8 @@
.span.fa.fa-cog
ul.dropdown-menu
li
- = link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id)
- = link_to t('compliance_control_sets.actions.destroy'), compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id), :method => :delete, :data => {:confirm => t('compliance_control_sets.actions.destroy_confirm')}
+ = link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id) if policy(ComplianceControlBlock).update?
+ = link_to t('compliance_control_sets.actions.destroy'), compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id), :method => :delete, :data => {:confirm => t('compliance_control_sets.actions.destroy_confirm')} if policy(ComplianceControlBlock).destroy?
.row
.col-lg-12
.select_table
@@ -108,15 +108,4 @@
cls: 'table has-filter has-search',
model: ComplianceControl
- .select_toolbox
- ul
- li.st_action.with_text
- = link_to select_type_compliance_control_set_compliance_controls_path(@compliance_control_set.id)
- span.fa.fa-plus
- span
- = t('compliance_control_sets.actions.add_compliance_control')
- li.st_action.with_text
- = link_to new_compliance_control_set_compliance_control_block_path(@compliance_control_set.id)
- span.fa.fa-plus
- span
- = t('compliance_control_sets.actions.add_compliance_control_block')
+ = flotted_links(@compliance_control_set.id) \ No newline at end of file