From b3678f55a1c61d5b39191a7f7791a6981892f3b9 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 21 Jul 2022 12:14:37 +0530 Subject: [PATCH 1/3] FIX: correctly add `restrict_replies_bypass_groups` param to the permitted list. --- plugin.rb | 6 ++-- spec/requests/categories_controller_spec.rb | 35 +++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 spec/requests/categories_controller_spec.rb diff --git a/plugin.rb b/plugin.rb index 84eaf87..35dab10 100644 --- a/plugin.rb +++ b/plugin.rb @@ -39,8 +39,10 @@ def can_create_post_on_topic?(topic) def category_params return super if !SiteSetting.restricted_replies_enabled super.tap do |value| - if params["custom_fields"] && groups = params["custom_fields"]["restrict_replies_bypass_groups"] - value["custom_fields"]["restrict_replies_bypass_groups"] = groups + if params["custom_fields"] && value["custom_fields"] && groups = params["custom_fields"]["restrict_replies_bypass_groups"] + custom_fields = value["custom_fields"].to_unsafe_h + custom_fields["restrict_replies_bypass_groups"] = groups + value.merge!(custom_fields: custom_fields) end end end diff --git a/spec/requests/categories_controller_spec.rb b/spec/requests/categories_controller_spec.rb new file mode 100644 index 0000000..bcbbc38 --- /dev/null +++ b/spec/requests/categories_controller_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +describe CategoriesController do + let(:admin) { Fabricate(:admin) } + let!(:category) { Fabricate(:category, user: admin) } + + context '#update' do + before do + SiteSetting.restricted_replies_enabled = true + sign_in(admin) + end + + it "updates `restrict_replies_bypass_groups` custom field correctly" do + readonly = CategoryGroup.permission_types[:readonly] + create_post = CategoryGroup.permission_types[:create_post] + tag_group = Fabricate(:tag_group) + + put "/categories/#{category.id}.json", params: { + name: "hello", + color: "ff0", + text_color: "fff", + slug: "hello-category", + auto_close_hours: 72, + custom_fields: { + "restrict_replies": true, + "restrict_replies_bypass_groups" => [1,2] + } + } + + expect(response.status).to eq(200) + category.reload + expect(category.custom_fields).to eq("restrict_replies" => true, "restrict_replies_bypass_groups" => [1,2]) + end + end +end From bee36062e5214ca9d7b05e382c41dfc4a04cc8f9 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 21 Jul 2022 12:17:35 +0530 Subject: [PATCH 2/3] Make rubocop happy. --- spec/requests/categories_controller_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/requests/categories_controller_spec.rb b/spec/requests/categories_controller_spec.rb index bcbbc38..dca3eeb 100644 --- a/spec/requests/categories_controller_spec.rb +++ b/spec/requests/categories_controller_spec.rb @@ -23,13 +23,13 @@ auto_close_hours: 72, custom_fields: { "restrict_replies": true, - "restrict_replies_bypass_groups" => [1,2] + "restrict_replies_bypass_groups" => [1, 2] } } expect(response.status).to eq(200) category.reload - expect(category.custom_fields).to eq("restrict_replies" => true, "restrict_replies_bypass_groups" => [1,2]) + expect(category.custom_fields).to eq("restrict_replies" => true, "restrict_replies_bypass_groups" => [1, 2]) end end end From 93d54e63e5d2dd9149756ad6d9ed5889b7b92cc6 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Wed, 27 Jul 2022 21:57:14 +0530 Subject: [PATCH 3/3] no longer need to override category params https://github.com/discourse/discourse/pull/17692 --- plugin.rb | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/plugin.rb b/plugin.rb index 35dab10..31f44ac 100644 --- a/plugin.rb +++ b/plugin.rb @@ -34,22 +34,5 @@ def can_create_post_on_topic?(topic) Guardian.class_exec do prepend topic_overrides end - - category_overrides = Module.new do - def category_params - return super if !SiteSetting.restricted_replies_enabled - super.tap do |value| - if params["custom_fields"] && value["custom_fields"] && groups = params["custom_fields"]["restrict_replies_bypass_groups"] - custom_fields = value["custom_fields"].to_unsafe_h - custom_fields["restrict_replies_bypass_groups"] = groups - value.merge!(custom_fields: custom_fields) - end - end - end - end - - CategoriesController.class_exec do - prepend category_overrides - end end end