diff options
| -rw-r--r-- | app/controllers/compliance_control_blocks_controller.rb | 1 | ||||
| -rw-r--r-- | app/controllers/compliance_control_sets_controller.rb | 1 | ||||
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 1 | ||||
| -rw-r--r-- | app/helpers/compliance_control_sets_helper.rb | 34 | ||||
| -rw-r--r-- | app/policies/compliance_control_block_policy.rb | 20 | ||||
| -rw-r--r-- | app/policies/compliance_control_set_policy.rb | 6 | ||||
| -rw-r--r-- | app/views/compliance_control_sets/show.html.slim | 17 | ||||
| -rw-r--r-- | lib/stif/permission_translator.rb | 4 | ||||
| -rw-r--r-- | spec/policies/compliance_control_block_policy_spec.rb | 19 | ||||
| -rw-r--r-- | spec/policies/compliance_control_set_policy_spec.rb | 8 |
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 |
