Я хочу вернуть сайты, на которых авторизованный пользователь доступен только для просмотра. Когда пользователь заходит на чужой сайт, а вы не входите в эту группу, вы не сможете его просмотреть. Это должно возвращать только те сайты, с которыми вы связаны. У меня есть модульный тест, и он проходит, но кажется, что есть лучший способ сделать это. ТИА
$user = $this->userRepo->findUserById($userId);
$userRepo = new UserRepository($user);
$sites = $userRepo->findSites();
$loggedUser = app('request')->user();
$loggedUserSites = $loggedUser->sites()->get()->all();
// Return only the sites of the user being access that is the same with the currently logged user
$sites = $sites->filter(function (Site $site) use ($loggedUserSites) {
foreach ($loggedUserSites as $userSite) {
if($site->id === $userSite->id) {
return $site;
};
}
});
// user 1: [1,2,3] - `/users/2/sites` - should return [1,2] (default since user 2 is only associated with this 2 sites)
// user 2: [1,2] - `/users/1/sites` - should return [1,2] (no 3 since user has no site #3)
Подробнее здесь: https://stackoverflow.com/questions/506 ... in-laravel