Fix posts being incorrectly visible on user page. closes #680

- When no discussions are visible, the query that filters posts by discussion visibility was incorrectly making all posts visible.
- Also hide user profiles altogether if discussions are not visible.
This commit is contained in:
Toby Zerner 2016-03-10 17:50:29 +10:30
parent 2391471937
commit beb2f91fef
2 changed files with 14 additions and 0 deletions

View File

@ -11,6 +11,7 @@
namespace Flarum\Core\Access; namespace Flarum\Core\Access;
use Flarum\Core\User; use Flarum\Core\User;
use Illuminate\Database\Eloquent\Builder;
class UserPolicy extends AbstractPolicy class UserPolicy extends AbstractPolicy
{ {
@ -30,4 +31,15 @@ class UserPolicy extends AbstractPolicy
return true; return true;
} }
} }
/**
* @param User $actor
* @param Builder $query
*/
public function find(User $actor, Builder $query)
{
if ($actor->cannot('viewDiscussions')) {
$query->whereRaw('FALSE');
}
}
} }

View File

@ -96,6 +96,8 @@ class PostRepository
event(new ScopePostVisibility($discussion, $query, $actor)); event(new ScopePostVisibility($discussion, $query, $actor));
}); });
} }
$query->orWhereRaw('FALSE');
}) })
->get(); ->get();