diff --git a/framework/core/src/Discussion/DiscussionPolicy.php b/framework/core/src/Discussion/DiscussionPolicy.php index b0d462f80..5fcbd77aa 100644 --- a/framework/core/src/Discussion/DiscussionPolicy.php +++ b/framework/core/src/Discussion/DiscussionPolicy.php @@ -123,7 +123,7 @@ class DiscussionPolicy extends AbstractPolicy */ public function rename(User $actor, Discussion $discussion) { - if ($discussion->user_id == $actor->id) { + if ($discussion->user_id == $actor->id && $actor->can('reply', $discussion)) { $allowRenaming = $this->settings->get('allow_renaming'); if ($allowRenaming === '-1' @@ -141,7 +141,7 @@ class DiscussionPolicy extends AbstractPolicy */ public function hide(User $actor, Discussion $discussion) { - if ($discussion->user_id == $actor->id && $discussion->participant_count <= 1) { + if ($discussion->user_id == $actor->id && $discussion->participant_count <= 1 && $actor->can('reply', $discussion)) { return true; } } diff --git a/framework/core/src/Post/PostPolicy.php b/framework/core/src/Post/PostPolicy.php index 0ed52e9d1..b3ea4076e 100644 --- a/framework/core/src/Post/PostPolicy.php +++ b/framework/core/src/Post/PostPolicy.php @@ -107,7 +107,7 @@ class PostPolicy extends AbstractPolicy // A post is allowed to be edited if the user has permission to moderate // the discussion which it's in, or if they are the author and the post // hasn't been deleted by someone else. - if ($post->user_id == $actor->id && (! $post->hidden_at || $post->hidden_user_id == $actor->id)) { + if ($post->user_id == $actor->id && (! $post->hidden_at || $post->hidden_user_id == $actor->id) && $actor->can('reply', $post->discussion)) { $allowEditing = $this->settings->get('allow_post_editing'); if ($allowEditing === '-1'