aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcedricnjanga2017-11-13 12:33:15 +0100
committercedricnjanga2017-11-13 12:43:15 +0100
commitb81cbd6de7944443f9a024acb5fa6cdfdfeaac63 (patch)
treed425705f149dfbcf840606570df10c9d1200708e
parentf74240182d95fd43f4aabc14b6560158dd276b21 (diff)
downloadchouette-core-b81cbd6de7944443f9a024acb5fa6cdfdfeaac63.tar.bz2
Refs #4952 Fix bug related to compliance control set action links display
-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
-rw-r--r--lib/stif/permission_translator.rb4
-rw-r--r--spec/policies/compliance_control_block_policy_spec.rb19
-rw-r--r--spec/policies/compliance_control_set_policy_spec.rb8
10 files changed, 87 insertions, 24 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
diff --git a/lib/stif/permission_translator.rb b/lib/stif/permission_translator.rb
index 121e89694..2d267bc7b 100644
--- a/lib/stif/permission_translator.rb
+++ b/lib/stif/permission_translator.rb
@@ -29,8 +29,8 @@ module Stif
vehicle_journeys
api_keys
compliance_controls
- compliance_controls_sets
- compliance_controls_blocks
+ compliance_control_sets
+ compliance_control_blocks
compliance_check_sets
]
end
diff --git a/spec/policies/compliance_control_block_policy_spec.rb b/spec/policies/compliance_control_block_policy_spec.rb
new file mode 100644
index 000000000..02c4ae08d
--- /dev/null
+++ b/spec/policies/compliance_control_block_policy_spec.rb
@@ -0,0 +1,19 @@
+require 'rails_helper'
+
+RSpec.describe ComplianceControlBlockPolicy do
+
+ let( :record ){ build_stubbed :compliance_control_block }
+ before { stub_policy_scope(record) }
+
+ permissions :create? do
+ it_behaves_like 'permitted policy outside referential', 'compliance_control_blocks.create'
+ end
+
+ permissions :update? do
+ it_behaves_like 'permitted policy outside referential', 'compliance_control_blocks.update'
+ end
+
+ permissions :destroy? do
+ it_behaves_like 'permitted policy outside referential', 'compliance_control_blocks.destroy'
+ end
+end
diff --git a/spec/policies/compliance_control_set_policy_spec.rb b/spec/policies/compliance_control_set_policy_spec.rb
index 6ab0bd60c..9b89338d6 100644
--- a/spec/policies/compliance_control_set_policy_spec.rb
+++ b/spec/policies/compliance_control_set_policy_spec.rb
@@ -6,18 +6,18 @@ RSpec.describe ComplianceControlSetPolicy do
before { stub_policy_scope(record) }
permissions :create? do
- it_behaves_like 'permitted policy outside referential', 'compliance_controls_sets.create'
+ it_behaves_like 'permitted policy outside referential', 'compliance_control_sets.create'
end
permissions :update? do
- it_behaves_like 'permitted policy outside referential', 'compliance_controls_sets.update'
+ it_behaves_like 'permitted policy outside referential', 'compliance_control_sets.update'
end
permissions :clone? do
- it_behaves_like 'permitted policy outside referential', 'compliance_controls_sets.create'
+ it_behaves_like 'permitted policy outside referential', 'compliance_control_sets.create'
end
permissions :destroy? do
- it_behaves_like 'permitted policy outside referential', 'compliance_controls_sets.destroy'
+ it_behaves_like 'permitted policy outside referential', 'compliance_control_sets.destroy'
end
end