diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 4e6272f04..e168e4ff7 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -17,6 +17,7 @@ use App\Transformer\Api\{ }; use League\Fractal\Serializer\ArraySerializer; use League\Fractal\Pagination\IlluminatePaginatorAdapter; +use App\Services\AccountService; use App\Services\CollectionService; use App\Services\FollowerService; use App\Services\StatusService; @@ -222,32 +223,33 @@ class CollectionController extends Controller $follows = false; $visibility = ['public']; - $profile = Profile::whereNull('status') - ->whereNull('domain') - ->findOrFail($id); - - if($pid) { - $follows = FollowerService::follows($pid, $profile->id); + $profile = AccountService::get($id, true); + if(!$profile || !isset($profile['id'])) { + return response()->json([], 404); } - if($profile->is_private) { + if($pid) { + $follows = FollowerService::follows($pid, $profile['id']); + } + + if($profile['locked']) { abort_if(!$pid, 404); if(!$user->is_admin) { - abort_if($profile->id != $pid && $follows == false, 404); + abort_if($profile['id'] != $pid && $follows == false, 404); } } - $owner = $pid ? $pid == $profile->id : false; + $owner = $pid ? $pid == $profile['id'] : false; if($follows) { $visibility = ['public', 'private']; } - if($pid && $pid == $profile->id) { + if($pid && $pid == $profile['id']) { $visibility = ['public', 'private', 'draft']; } - return Collection::whereProfileId($profile->id) + return Collection::whereProfileId($profile['id']) ->whereIn('visibility', $visibility) ->when(!$owner, function($q, $owner) { return $q->whereNotNull('published_at'); diff --git a/routes/api.php b/routes/api.php index 4ba95cdb8..03bd07b66 100644 --- a/routes/api.php +++ b/routes/api.php @@ -110,6 +110,12 @@ Route::group(['prefix' => 'api'], function() use($middleware) { Route::get('apps-and-applications', 'Api\ApiV1Dot1Controller@accountApps')->middleware($middleware); }); + Route::group(['prefix' => 'collections'], function () use($middleware) { + Route::get('accounts/{id}', 'CollectionController@getUserCollections')->middleware($middleware); + Route::get('items/{id}', 'CollectionController@getItems')->middleware($middleware); + Route::get('view/{id}', 'CollectionController@getCollection')->middleware($middleware); + }); + Route::group(['prefix' => 'direct'], function () use($middleware) { Route::get('thread', 'DirectMessageController@thread')->middleware($middleware); Route::post('thread/send', 'DirectMessageController@create')->middleware($middleware);