diff options
| -rw-r--r-- | app/policies/company_policy.rb | 20 | ||||
| -rw-r--r-- | app/policies/line_policy.rb | 12 | ||||
| -rw-r--r-- | app/policies/network_policy.rb | 11 | ||||
| -rw-r--r-- | app/policies/stop_area_policy.rb | 12 | ||||
| -rw-r--r-- | spec/fixtures/zip/.gitkeep | 0 | ||||
| -rw-r--r-- | spec/policies/access_link_policy_spec.rb | 10 | ||||
| -rw-r--r-- | spec/policies/company_policy_spec.rb | 10 | ||||
| -rw-r--r-- | spec/policies/line_policy_spec.rb | 10 | ||||
| -rw-r--r-- | spec/policies/network_policy_spec.rb | 10 | ||||
| -rw-r--r-- | spec/policies/stop_area_policy_spec.rb | 10 |
10 files changed, 76 insertions, 29 deletions
diff --git a/app/policies/company_policy.rb b/app/policies/company_policy.rb index 45386aba4..eb2b868d9 100644 --- a/app/policies/company_policy.rb +++ b/app/policies/company_policy.rb @@ -1,7 +1,19 @@ class CompanyPolicy < ApplicationPolicy - class Scope < Scope - def resolve - scope - end + class Scope < Scope + def resolve + scope end end + + def create? + !archived? && organisation_match? && user.has_permission?('companies.create') + end + + def update? + !archived? && organisation_match? && user.has_permission?('companies.update') + end + + def destroy? + !archived? && organisation_match? && user.has_permission?('companies.destroy') + end +end diff --git a/app/policies/line_policy.rb b/app/policies/line_policy.rb index acb0d79e7..a39beb788 100644 --- a/app/policies/line_policy.rb +++ b/app/policies/line_policy.rb @@ -6,6 +6,18 @@ class LinePolicy < ApplicationPolicy end end + def create? + !archived? && organisation_match? && user.has_permission?('lines.create') + end + + def update? + !archived? && organisation_match? && user.has_permission?('lines.update') + end + + def destroy? + !archived? && organisation_match? && user.has_permission?('lines.destroy') + end + def create_footnote? !archived? && organisation_match? && user.has_permission?('footnotes.create') end diff --git a/app/policies/network_policy.rb b/app/policies/network_policy.rb index 9f86451a5..7adc48589 100644 --- a/app/policies/network_policy.rb +++ b/app/policies/network_policy.rb @@ -4,4 +4,15 @@ class NetworkPolicy < ApplicationPolicy scope end end + def create? + !archived? && organisation_match? && user.has_permission?('networks.create') + end + + def update? + !archived? && organisation_match? && user.has_permission?('networks.update') + end + + def destroy? + !archived? && organisation_match? && user.has_permission?('networks.destroy') + end end diff --git a/app/policies/stop_area_policy.rb b/app/policies/stop_area_policy.rb index de8ecda8d..6f147efef 100644 --- a/app/policies/stop_area_policy.rb +++ b/app/policies/stop_area_policy.rb @@ -4,4 +4,16 @@ class StopAreaPolicy < ApplicationPolicy scope end end + + def create? + !archived? && organisation_match? && user.has_permission?('stop_areas.create') + end + + def update? + !archived? && organisation_match? && user.has_permission?('stop_areas.update') + end + + def destroy? + !archived? && organisation_match? && user.has_permission?('stop_areas.destroy') + end end diff --git a/spec/fixtures/zip/.gitkeep b/spec/fixtures/zip/.gitkeep new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/spec/fixtures/zip/.gitkeep diff --git a/spec/policies/access_link_policy_spec.rb b/spec/policies/access_link_policy_spec.rb index 6194ae55c..65b7bbee9 100644 --- a/spec/policies/access_link_policy_spec.rb +++ b/spec/policies/access_link_policy_spec.rb @@ -3,18 +3,18 @@ RSpec.describe AccessLinkPolicy, type: :policy do let( :record ){ build_stubbed :access_link } permissions :create? do - it_behaves_like 'permitted policy and same organisation', "access_links.create", archived: true + it_behaves_like 'permitted policy and same organisation', "access_links.create", archived: true end permissions :destroy? do - it_behaves_like 'permitted policy and same organisation', "access_links.destroy", archived: true + it_behaves_like 'permitted policy and same organisation', "access_links.destroy", archived: true end permissions :edit? do - it_behaves_like 'permitted policy and same organisation', "access_links.update", archived: true + it_behaves_like 'permitted policy and same organisation', "access_links.update", archived: true end permissions :new? do - it_behaves_like 'permitted policy and same organisation', "access_links.create", archived: true + it_behaves_like 'permitted policy and same organisation', "access_links.create", archived: true end permissions :update? do - it_behaves_like 'permitted policy and same organisation', "access_links.update", archived: true + it_behaves_like 'permitted policy and same organisation', "access_links.update", archived: true end end diff --git a/spec/policies/company_policy_spec.rb b/spec/policies/company_policy_spec.rb index 2d249a2be..152b61199 100644 --- a/spec/policies/company_policy_spec.rb +++ b/spec/policies/company_policy_spec.rb @@ -24,19 +24,19 @@ RSpec.describe CompanyPolicy, type: :policy do context 'Destructive actions →' do permissions :create? do - it_behaves_like 'always forbidden', 'companies.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'companies.create', archived: true end permissions :destroy? do - it_behaves_like 'always forbidden', 'companies.destroy', archived: true + it_behaves_like 'permitted policy and same organisation', 'companies.destroy', archived: true end permissions :edit? do - it_behaves_like 'always forbidden', 'companies.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'companies.update', archived: true end permissions :new? do - it_behaves_like 'always forbidden', 'companies.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'companies.create', archived: true end permissions :update? do - it_behaves_like 'always forbidden', 'companies.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'companies.update', archived: true end end end diff --git a/spec/policies/line_policy_spec.rb b/spec/policies/line_policy_spec.rb index 334073506..da99d1726 100644 --- a/spec/policies/line_policy_spec.rb +++ b/spec/policies/line_policy_spec.rb @@ -24,19 +24,19 @@ RSpec.describe LinePolicy, type: :policy do context 'Destructive actions →' do permissions :create? do - it_behaves_like 'always forbidden', 'lines.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'lines.create', archived: true end permissions :destroy? do - it_behaves_like 'always forbidden', 'lines.destroy', archived: true + it_behaves_like 'permitted policy and same organisation', 'lines.destroy', archived: true end permissions :edit? do - it_behaves_like 'always forbidden', 'lines.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'lines.update', archived: true end permissions :new? do - it_behaves_like 'always forbidden', 'lines.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'lines.create', archived: true end permissions :update? do - it_behaves_like 'always forbidden', 'lines.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'lines.update', archived: true end end diff --git a/spec/policies/network_policy_spec.rb b/spec/policies/network_policy_spec.rb index c09546c22..aeffdd0d2 100644 --- a/spec/policies/network_policy_spec.rb +++ b/spec/policies/network_policy_spec.rb @@ -24,19 +24,19 @@ RSpec.describe Chouette::NetworkPolicy, type: :policy do context 'Destructive actions →' do permissions :create? do - it_behaves_like 'always forbidden', 'networks.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'networks.create', archived: true end permissions :destroy? do - it_behaves_like 'always forbidden', 'networks.destroy', archived: true + it_behaves_like 'permitted policy and same organisation', 'networks.destroy', archived: true end permissions :edit? do - it_behaves_like 'always forbidden', 'networks.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'networks.update', archived: true end permissions :new? do - it_behaves_like 'always forbidden', 'networks.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'networks.create', archived: true end permissions :update? do - it_behaves_like 'always forbidden', 'networks.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'networks.update', archived: true end end end diff --git a/spec/policies/stop_area_policy_spec.rb b/spec/policies/stop_area_policy_spec.rb index 8fe59c8e3..45a938564 100644 --- a/spec/policies/stop_area_policy_spec.rb +++ b/spec/policies/stop_area_policy_spec.rb @@ -24,19 +24,19 @@ RSpec.describe StopAreaPolicy, type: :policy do context 'Destructive actions →' do permissions :create? do - it_behaves_like 'always forbidden', 'stop_areas.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'stop_areas.create', archived: true end permissions :destroy? do - it_behaves_like 'always forbidden', 'stop_areas.destroy', archived: true + it_behaves_like 'permitted policy and same organisation', 'stop_areas.destroy', archived: true end permissions :edit? do - it_behaves_like 'always forbidden', 'stop_areas.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'stop_areas.update', archived: true end permissions :new? do - it_behaves_like 'always forbidden', 'stop_areas.create', archived: true + it_behaves_like 'permitted policy and same organisation', 'stop_areas.create', archived: true end permissions :update? do - it_behaves_like 'always forbidden', 'stop_areas.update', archived: true + it_behaves_like 'permitted policy and same organisation', 'stop_areas.update', archived: true end end end |
