mirror of
https://github.com/flarum/core.git
synced 2025-10-10 22:44:25 +02:00
Improve some post/discussion permission logic
- Allow users to see their own posts, even if they have been hidden by someone else - Don't require hiding a post to be necessarily attributed to a user - Hide discussions with zero posts, unless the user can edit posts, or they are the discussion author
This commit is contained in:
@@ -13,7 +13,9 @@ namespace Flarum\Core\Discussions;
|
||||
use Flarum\Core\Search\GambitManager;
|
||||
use Flarum\Core\Users\User;
|
||||
use Flarum\Events\ModelAllow;
|
||||
use Flarum\Events\ScopeModelVisibility;
|
||||
use Flarum\Events\RegisterDiscussionGambits;
|
||||
use Flarum\Events\ScopeEmptyDiscussionVisibility;
|
||||
use Flarum\Support\ServiceProvider;
|
||||
use Flarum\Extend;
|
||||
use Illuminate\Contracts\Container\Container;
|
||||
@@ -53,6 +55,19 @@ class DiscussionsServiceProvider extends ServiceProvider
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$events->listen(ScopeModelVisibility::class, function (ScopeModelVisibility $event) {
|
||||
if ($event->model instanceof Discussion) {
|
||||
if (! $event->actor->hasPermission('discussion.editPosts')) {
|
||||
$event->query->where(function ($query) use ($event) {
|
||||
$query->where('comments_count', '>', '0')
|
||||
->orWhere('start_user_id', $event->actor->id);
|
||||
|
||||
event(new ScopeEmptyDiscussionVisibility($query, $event->actor));
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user