1
0
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:
Toby Zerner
2015-09-04 12:22:27 +09:30
parent 9277fca0ec
commit 276334ec52
4 changed files with 61 additions and 6 deletions

View File

@@ -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));
});
}
}
});
}
/**