diff options
| author | cedricnjanga | 2017-11-13 12:33:15 +0100 | 
|---|---|---|
| committer | cedricnjanga | 2017-11-13 12:43:15 +0100 | 
| commit | b81cbd6de7944443f9a024acb5fa6cdfdfeaac63 (patch) | |
| tree | d425705f149dfbcf840606570df10c9d1200708e | |
| parent | f74240182d95fd43f4aabc14b6560158dd276b21 (diff) | |
| download | chouette-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.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 | 
