diff --git a/app/lib/guardian_extensions.rb b/app/lib/guardian_extensions.rb index 2d6193b..1a0ff7c 100644 --- a/app/lib/guardian_extensions.rb +++ b/app/lib/guardian_extensions.rb @@ -28,7 +28,7 @@ module DiscourseSolved if current_user.in_any_groups?(SiteSetting.accept_all_solutions_allowed_groups_map) return true end - return true if can_perform_action_available_to_group_moderators?(topic) + return true if is_category_group_moderator?(topic.category) topic.user_id == current_user.id && !topic.closed && SiteSetting.accept_solutions_topic_author end diff --git a/config/settings.yml b/config/settings.yml index fa115f3..db66249 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -11,7 +11,7 @@ discourse_solved: enum: "TrustLevelSetting" hidden: true accept_all_solutions_allowed_groups: - default: "14" # auto group trust_level_4 + default: "1|2|14" # auto group admin, moderators and trust_level_4 mandatory_values: "1|2" # auto group admins, moderators type: group_list client: false diff --git a/spec/lib/guardian_extensions_spec.rb b/spec/lib/guardian_extensions_spec.rb index a956f79..f9faccb 100644 --- a/spec/lib/guardian_extensions_spec.rb +++ b/spec/lib/guardian_extensions_spec.rb @@ -57,5 +57,11 @@ describe DiscourseSolved::GuardianExtensions do topic.update!(user: user) expect(guardian.can_accept_answer?(topic, post)).to eq(true) end + + it "returns false if the user is trust level 4 but the trust level 4 group is not allowd to accept solutions" do + SiteSetting.accept_all_solutions_allowed_groups = Fabricate(:group).id + user.update!(trust_level: TrustLevel[4]) + expect(guardian.can_accept_answer?(topic, post)).to eq(false) + end end end