Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

FIX: Don't allow TL4 users to unconditionally accept solutions #305

Merged
merged 1 commit into from
Aug 9, 2024

Conversation

OsamaSayegh
Copy link
Member

A while ago the accept_all_solutions_allowed_groups setting was introduced to replace the accept_all_solutions_trust_level setting and to make the plugin more flexible by allowing admins to choose groups that are allowed to accept solutions instead of trust levels.

The new group-based setting includes the TL4 group by default. However, removing the TL4 group from the setting doesn't actually remove TL4 users permission to accept solution.

The reason for this bug is that the can_accept_answer? guardian method calls can_perform_action_available_to_group_moderators? which always allows TL4 users to perform category moderator actions:

https://github.com/discourse/discourse/blob/56524f4bdf9d45eddf7967ccead169ec6dd6cbb8/lib/guardian/topic_guardian.rb#L342-L348

This PR fixes the bug by checking if the user is a moderator on the topic's category (by calling the is_category_group_moderator? guardian method) instead of checking if the user can perform category moderator actions. In our case, is_category_group_moderator? is equivalent to can_perform_action_available_to_group_moderators? except for the TL4 check which is what we need.

Internal topic: t/134675.

@OsamaSayegh OsamaSayegh merged commit 77c07ed into main Aug 9, 2024
4 checks passed
@OsamaSayegh OsamaSayegh deleted the fix/remove-hardcoded-logic-for-tl4 branch August 9, 2024 11:59
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants