From 8619df23c775fa21060423901f1a87a195a295a1 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 13 Dec 2023 09:01:44 +0100 Subject: [PATCH 1/2] Use new permission system and permit rolees on project --- .../homescreen/blocks/_homescreen_block.html.erb | 2 +- app/views/kittens/index.html.erb | 2 +- lib/open_project/proto_plugin/engine.rb | 16 +++++++++++----- spec/features/project_kittens_spec.rb | 3 +-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/views/homescreen/blocks/_homescreen_block.html.erb b/app/views/homescreen/blocks/_homescreen_block.html.erb index a51be36..bdda841 100644 --- a/app/views/homescreen/blocks/_homescreen_block.html.erb +++ b/app/views/homescreen/blocks/_homescreen_block.html.erb @@ -14,7 +14,7 @@
- <% if User.current.allowed_to?(:manage_kittens, nil, global: true) %> + <% if User.current.allowed_in_any_project?(:manage_kittens) %> <%= link_to new_kitten_plugin_project_kitten_path(project_id: Project.first.identifier), { class: 'button -alt-highlight', aria: {label: t(:label_kitten_new)}, diff --git a/app/views/kittens/index.html.erb b/app/views/kittens/index.html.erb index 7d12ec8..93b7615 100644 --- a/app/views/kittens/index.html.erb +++ b/app/views/kittens/index.html.erb @@ -2,7 +2,7 @@ <%= toolbar(title: t(:label_kittens)) do %> - <% if current_user.allowed_to?(:manage_kittens, @project, global: @project.nil?) %> + <% if (@project.present? && current_user.allowed_in_project?(:manage_kittens, @project)) || (@project.nil? && current_user.allowed_in_any_project?(:manage_kittens)) %>
  • <%= link_to(new_kitten_plugin_project_kitten_path, class: 'button') do %> <%= t(:label_kitten_new) %> diff --git a/lib/open_project/proto_plugin/engine.rb b/lib/open_project/proto_plugin/engine.rb index bae8026..2714efa 100644 --- a/lib/open_project/proto_plugin/engine.rb +++ b/lib/open_project/proto_plugin/engine.rb @@ -12,7 +12,7 @@ class Engine < ::Rails::Engine register( 'openproject-proto_plugin', :author_url => 'https://openproject.org', - :requires_openproject => '>= 6.0.0' + :requires_openproject => '>= 13.1.0' ) do # We define a new project module here for our controller including a permission. # The permission is necessary for us to be able to add menu items to the project @@ -23,12 +23,18 @@ class Engine < ::Rails::Engine # settings before you can see the menu entry. project_module :kittens_module do permission :view_kittens, - kittens: %i[index], - angular_kittens: %i[show] + { + kittens: %i[index], + angular_kittens: %i[show] + }, + permissible_on: [:project] permission :manage_kittens, - kittens: %i[new create edit destroy], - angular_kittens: %i[show] + { + kittens: %i[new create edit destroy], + angular_kittens: %i[show] + }, + permissible_on: [:project] end menu :project_menu, diff --git a/spec/features/project_kittens_spec.rb b/spec/features/project_kittens_spec.rb index 8fa72cc..2245407 100644 --- a/spec/features/project_kittens_spec.rb +++ b/spec/features/project_kittens_spec.rb @@ -39,8 +39,7 @@ let(:project) { FactoryBot.create :project, enabled_module_names: %w[kittens_module] } let(:user) do FactoryBot.create :user, - member_in_project: project, - member_with_permissions: permissions + member_with_permissions: { project => permissions } end before do From c612eff7b4b33a3d1825fa289b438f9b7e419cad Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 13 Dec 2023 09:02:05 +0100 Subject: [PATCH 2/2] Fix tests since we disabled global inclusion of RSpec methods --- spec/controllers/kittens_controller_spec.rb | 2 +- spec/features/project_kittens_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/controllers/kittens_controller_spec.rb b/spec/controllers/kittens_controller_spec.rb index 2572ff3..003e387 100644 --- a/spec/controllers/kittens_controller_spec.rb +++ b/spec/controllers/kittens_controller_spec.rb @@ -30,7 +30,7 @@ require 'spec_helper' -describe KittensController, type: :controller do +RSpec.describe KittensController, type: :controller do let(:user) { FactoryBot.create :admin } let(:project) { FactoryBot.create :project } diff --git a/spec/features/project_kittens_spec.rb b/spec/features/project_kittens_spec.rb index 2245407..126156a 100644 --- a/spec/features/project_kittens_spec.rb +++ b/spec/features/project_kittens_spec.rb @@ -34,7 +34,7 @@ # js:true will enable a JS-compatible browser (Chrome by default) # # Testing is done with Capybara and Selenium -describe 'Project kittens', type: :feature, js: true do +RSpec.describe 'Project kittens', type: :feature, js: true do let(:permissions) { %w[view_kittens manage_kittens] } let(:project) { FactoryBot.create :project, enabled_module_names: %w[kittens_module] } let(:user) do