mirror of
https://github.com/flarum/framework.git
synced 2024-12-02 23:23:52 +08:00
Make "own" permissions depend on the user's ability to reply
Permission to rename/hide/edit one's own discussion/post is only granted if the user has permission to reply to the discussion. This makes sense if you think of these actions as forms of "replying" to a discussion. Fixes #1419 because suspended users do not have permission to reply to discussions, therefore they will not be granted these "own" permissions.
This commit is contained in:
parent
9fabcff497
commit
698436e7b0
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue
Block a user