Update CollectionController, fix broken unauthenticated access. Fixes #3242

This commit is contained in:
Daniel Supernault 2022-02-16 00:58:19 -07:00
parent 46ebe46ff7
commit bd249f0c39
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -17,6 +17,7 @@ use App\Transformer\Api\{
}; };
use League\Fractal\Serializer\ArraySerializer; use League\Fractal\Serializer\ArraySerializer;
use League\Fractal\Pagination\IlluminatePaginatorAdapter; use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use App\Services\StatusService;
class CollectionController extends Controller class CollectionController extends Controller
{ {
@ -166,12 +167,16 @@ class CollectionController extends Controller
if($collection->visibility !== 'public') { if($collection->visibility !== 'public') {
abort_if(!Auth::check() || Auth::user()->profile_id != $collection->profile_id, 404); abort_if(!Auth::check() || Auth::user()->profile_id != $collection->profile_id, 404);
} }
$posts = $collection->posts()->orderBy('order', 'asc')->get();
$fractal = new Fractal\Manager(); $res = CollectionItem::whereCollectionId($id)
$fractal->setSerializer(new ArraySerializer()); ->pluck('object_id')
$resource = new Fractal\Resource\Collection($posts, new StatusTransformer()); ->map(function($id) {
$res = $fractal->createData($resource)->toArray(); return StatusService::get($id);
})
->filter(function($post) {
return $post && isset($post['account']);
})
->values();
return response()->json($res); return response()->json($res);
} }
@ -197,11 +202,12 @@ class CollectionController extends Controller
->paginate(9) ->paginate(9)
->map(function($collection) { ->map(function($collection) {
return [ return [
'id' => $collection->id, 'id' => (string) $collection->id,
'title' => $collection->title, 'title' => $collection->title,
'description' => $collection->description, 'description' => $collection->description,
'thumb' => $collection->posts()->first()->thumb(), 'thumb' => $collection->posts()->first()->thumb(),
'url' => $collection->url(), 'url' => $collection->url(),
'post_count' => $collection->posts()->count(),
'published_at' => $collection->published_at 'published_at' => $collection->published_at
]; ];
}); });