aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuc Donnet2018-02-27 14:31:54 +0100
committerGitHub2018-02-27 14:31:54 +0100
commit7faeee11f427c7d0fd9be18aae5b7f60ff3981a0 (patch)
treef619876c9816635835533d4deb9724b4761f710d
parentd2c4ef4ae82f156cabf467814d76c2785a580e22 (diff)
parent3d61b582389e0e1db73dc698d4c20f50153ea3fc (diff)
downloadchouette-core-7faeee11f427c7d0fd9be18aae5b7f60ff3981a0.tar.bz2
Merge pull request #340 from af83/5950_allow_user_to_see_ccset_from_other_organisation
Refs #5950 Fix 404 error when user wants to see CCSet from other orga…
-rw-r--r--app/controllers/compliance_control_sets_controller.rb18
-rw-r--r--app/policies/application_policy.rb1
-rw-r--r--app/policies/compliance_control_set_policy.rb4
3 files changed, 15 insertions, 8 deletions
diff --git a/app/controllers/compliance_control_sets_controller.rb b/app/controllers/compliance_control_sets_controller.rb
index 8f9251155..6461b38c8 100644
--- a/app/controllers/compliance_control_sets_controller.rb
+++ b/app/controllers/compliance_control_sets_controller.rb
@@ -36,11 +36,15 @@ class ComplianceControlSetsController < ChouetteController
private
def collection
- scope = self.ransack_period_range(scope: ComplianceControlSet.all, error_message: t('imports.filters.error_period_filter'), query: :where_updated_at_between)
- @q_for_form = scope.ransack(params[:q])
- compliance_control_sets = @q_for_form.result
- compliance_control_sets = joins_with_associated_objects(compliance_control_sets).order(sort_column + ' ' + sort_direction) if sort_column && sort_direction
- @compliance_control_sets = compliance_control_sets.paginate(page: params[:page], per_page: 30)
+ @compliance_control_sets ||= begin
+ scope = end_of_association_chain.all
+ scope = self.ransack_period_range(scope: scope, error_message: t('imports.filters.error_period_filter'), query: :where_updated_at_between)
+ @q_for_form = scope.ransack(params[:q])
+ compliance_control_sets = @q_for_form.result
+ compliance_control_sets = joins_with_associated_objects(compliance_control_sets).order(sort_column + ' ' + sort_direction) if sort_column && sort_direction
+ compliance_control_sets = compliance_control_sets.paginate(page: params[:page], per_page: 30)
+ end
+
end
def decorate_compliance_control_sets(compliance_control_sets)
@@ -82,9 +86,9 @@ class ComplianceControlSetsController < ChouetteController
case params[:sort]
when 'owner_jdc'
collection.joins("LEFT JOIN organisations ON compliance_control_sets.organisation_id = organisations.id")
- when 'control_numbers'
+ when 'control_numbers'
collection.joins("LEFT JOIN compliance_controls ON compliance_controls.compliance_control_set_id = compliance_control_sets.id").group(:id)
- else
+ else
collection
end
end
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb
index c44937c9e..33d88660c 100644
--- a/app/policies/application_policy.rb
+++ b/app/policies/application_policy.rb
@@ -95,7 +95,6 @@ class ApplicationPolicy
referential.try(:organisation_id) || record.try(:organisation_id)
end
-
#
# Helpers
# -------
diff --git a/app/policies/compliance_control_set_policy.rb b/app/policies/compliance_control_set_policy.rb
index 011f6c0c7..55507ffd9 100644
--- a/app/policies/compliance_control_set_policy.rb
+++ b/app/policies/compliance_control_set_policy.rb
@@ -5,6 +5,10 @@ class ComplianceControlSetPolicy < ApplicationPolicy
end
end
+ def show?
+ organisation_match?
+ end
+
def destroy?
user.has_permission?('compliance_control_sets.destroy')
end