diff options
| author | Robert | 2017-09-12 15:39:43 +0200 |
|---|---|---|
| committer | Robert | 2017-09-26 17:05:10 +0200 |
| commit | da6784bf12d31da369571dd7b16e8ee463e7f67c (patch) | |
| tree | f3b7906c0d3b6e1c15403e7def4e6702b52abbb7 | |
| parent | 94204f6a3876ad4e7577192005565eb629f40499 (diff) | |
| download | chouette-core-da6784bf12d31da369571dd7b16e8ee463e7f67c.tar.bz2 | |
Refs: #4440@1.5h;
ImportPolicy changing *.imports →' imports.*
| -rw-r--r-- | app/helpers/links_helper.rb | 7 | ||||
| -rw-r--r-- | app/models/vehicle_journey_import.rb | 2 | ||||
| -rw-r--r-- | app/policies/import_policy.rb | 12 | ||||
| -rw-r--r-- | lib/stif/permission_translator.rb | 2 | ||||
| -rw-r--r-- | spec/policies/import_policy_spec.rb | 41 |
5 files changed, 54 insertions, 10 deletions
diff --git a/app/helpers/links_helper.rb b/app/helpers/links_helper.rb index 93f06df3c..4fb7a797d 100644 --- a/app/helpers/links_helper.rb +++ b/app/helpers/links_helper.rb @@ -1,11 +1,4 @@ module LinksHelper - - def protected_element(&blk) - blk.() - rescue - nil - end - def destroy_link_content(translation_key = 'actions.destroy') content_tag(:span, nil, class: 'fa fa-trash mr-xs') + t(translation_key) end diff --git a/app/models/vehicle_journey_import.rb b/app/models/vehicle_journey_import.rb index 44a6d457e..250f3a9e9 100644 --- a/app/models/vehicle_journey_import.rb +++ b/app/models/vehicle_journey_import.rb @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- - class VehicleJourneyImport include ActiveModel::Validations include ActiveModel::Conversion diff --git a/app/policies/import_policy.rb b/app/policies/import_policy.rb index 9e1d99a66..b12dcc167 100644 --- a/app/policies/import_policy.rb +++ b/app/policies/import_policy.rb @@ -4,4 +4,16 @@ class ImportPolicy < ApplicationPolicy scope end end + + def create? + !archived? && user.has_permission?('imports.create') + end + + def destroy? + !archived? && user.has_permission?('imports.destroy') + end + + def update? + !archived? && user.has_permission?('imports.update') + end end diff --git a/lib/stif/permission_translator.rb b/lib/stif/permission_translator.rb index 963c5df6e..2bc565968 100644 --- a/lib/stif/permission_translator.rb +++ b/lib/stif/permission_translator.rb @@ -30,7 +30,7 @@ module Stif def destructive_permissions_for(models) @__destructive_permissions_for__ ||= - models.product( %w{create destroy import update} ).map{ |model_action| model_action.join('.') } + models.product( %w{create destroy update} ).map{ |model_action| model_action.join('.') } end def extra_permission_translation extra_permission diff --git a/spec/policies/import_policy_spec.rb b/spec/policies/import_policy_spec.rb new file mode 100644 index 000000000..fd9f3172c --- /dev/null +++ b/spec/policies/import_policy_spec.rb @@ -0,0 +1,41 @@ +RSpec.describe ImportPolicy, type: :policy do + + let( :record ){ build_stubbed :import } + before { stub_policy_scope(record) } + + # + # Non Destructive + # --------------- + + context 'Non Destructive actions →' do + permissions :index? do + it_behaves_like 'always allowed', 'anything', archived: true + end + permissions :show? do + it_behaves_like 'always allowed', 'anything', archived: true + end + end + + + # + # Destructive + # ----------- + + context 'Destructive actions →' do + permissions :create? do + it_behaves_like 'permitted policy', 'imports.create', archived: true + end + permissions :destroy? do + it_behaves_like 'permitted policy', 'imports.destroy', archived: true + end + permissions :edit? do + it_behaves_like 'permitted policy', 'imports.update', archived: true + end + permissions :new? do + it_behaves_like 'permitted policy', 'imports.create', archived: true + end + permissions :update? do + it_behaves_like 'permitted policy', 'imports.update', archived: true + end + end +end |
