From 219b4886c4c862641577a208fe594b4381fd7b5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sen=C3=A9n=20Rodero=20Rodr=C3=ADguez?= Date: Wed, 23 Dec 2020 14:25:04 +0100 Subject: [PATCH 1/2] Allow SDG managers to manage local targets --- app/models/abilities/sdg/manager.rb | 1 + spec/models/abilities/sdg/manager.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/app/models/abilities/sdg/manager.rb b/app/models/abilities/sdg/manager.rb index f3368fa87..313a7888e 100644 --- a/app/models/abilities/sdg/manager.rb +++ b/app/models/abilities/sdg/manager.rb @@ -6,5 +6,6 @@ class Abilities::SDG::Manager can :read, ::SDG::Goal can :read, ::SDG::Target + can :manage, ::SDG::LocalTarget end end diff --git a/spec/models/abilities/sdg/manager.rb b/spec/models/abilities/sdg/manager.rb index 004ad0ada..f8a4e598e 100644 --- a/spec/models/abilities/sdg/manager.rb +++ b/spec/models/abilities/sdg/manager.rb @@ -9,6 +9,7 @@ describe "Abilities::SDG::Manager" do it { should be_able_to(:read, SDG::Goal) } it { should be_able_to(:read, SDG::Target) } + it { should be_able_to(:manage, SDG::LocalTarget) } it { should_not be_able_to(:read, SDG::Manager) } it { should_not be_able_to(:create, SDG::Manager) } From db06bb2c9e0cde94c53c8955561f45c508986b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sen=C3=A9n=20Rodero=20Rodr=C3=ADguez?= Date: Wed, 23 Dec 2020 14:25:49 +0100 Subject: [PATCH 2/2] Load records using cancancan load_and_authorize_resource method --- .../sdg_management/local_targets_controller.rb | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/app/controllers/sdg_management/local_targets_controller.rb b/app/controllers/sdg_management/local_targets_controller.rb index d23fe06a7..0d03a743f 100644 --- a/app/controllers/sdg_management/local_targets_controller.rb +++ b/app/controllers/sdg_management/local_targets_controller.rb @@ -1,19 +1,16 @@ class SDGManagement::LocalTargetsController < SDGManagement::BaseController include Translatable - LocalTarget = ::SDG::LocalTarget + load_and_authorize_resource class: "SDG::LocalTarget" def index - @local_targets = LocalTarget.all.sort + @local_targets = @local_targets.sort end def new - @local_target = LocalTarget.new end def create - @local_target = LocalTarget.new(local_target_params) - if @local_target.save redirect_to sdg_management_local_targets_path, notice: t("sdg_management.local_targets.create.notice") else @@ -22,12 +19,9 @@ class SDGManagement::LocalTargetsController < SDGManagement::BaseController end def edit - @local_target = LocalTarget.find(params[:id]) end def update - @local_target = LocalTarget.find(params[:id]) - if @local_target.update(local_target_params) redirect_to sdg_management_local_targets_path, notice: t("sdg_management.local_targets.update.notice") else @@ -36,7 +30,6 @@ class SDGManagement::LocalTargetsController < SDGManagement::BaseController end def destroy - @local_target = LocalTarget.find(params[:id]) @local_target.destroy! redirect_to sdg_management_local_targets_path, notice: t("sdg_management.local_targets.destroy.notice") end @@ -44,7 +37,7 @@ class SDGManagement::LocalTargetsController < SDGManagement::BaseController private def local_target_params - translations_attributes = translation_params(LocalTarget) + translations_attributes = translation_params(::SDG::LocalTarget) params.require(:sdg_local_target).permit(:code, :target_id, translations_attributes) end end