1
0
Fork 0
forked from mirror/pixelfed

Update PublicApiController

This commit is contained in:
Daniel Supernault 2019-02-15 12:58:27 -07:00
parent eb33e95e3f
commit fed94de4b0
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -174,12 +174,13 @@ class PublicApiController extends Controller
switch ($status->scope) { switch ($status->scope) {
case 'public': case 'public':
case 'unlisted': case 'unlisted':
break;
case 'private': case 'private':
$user = Auth::check() ? Auth::user() : false; $user = Auth::check() ? Auth::user() : false;
if($user && $profile->is_private) { if(!$user) {
$follows = Follower::whereProfileId($user->profile->id) abort(403);
->whereFollowingId($profile->id) } else {
->exists(); $follows = $profile->followedBy(Auth::user()->profile);
if($follows == false && $profile->id !== $user->profile->id) { if($follows == false && $profile->id !== $user->profile->id) {
abort(404); abort(404);
} }
@ -430,7 +431,14 @@ class PublicApiController extends Controller
$only_media = $request->only_media ?? false; $only_media = $request->only_media ?? false;
$user = Auth::user(); $user = Auth::user();
$account = Profile::findOrFail($id); $account = Profile::findOrFail($id);
$statuses = $account->statuses()->getQuery()->whereNull('uri'); $statuses = $account->statuses()
->getQuery()
->whereNull('uri');
if(!$user || $user->profile->id != $account->id && !$user->profile->follows($account)) {
$statuses = $statuses->whereVisibility('public');
} else {
$statuses = $statuses->whereIn('visibility', ['public', 'unlisted', 'private']);
}
if($only_media == true) { if($only_media == true) {
$statuses = $statuses $statuses = $statuses
->whereHas('media') ->whereHas('media')
@ -453,7 +461,7 @@ class PublicApiController extends Controller
->orderBy('id', 'DESC') ->orderBy('id', 'DESC')
->paginate($limit); ->paginate($limit);
} else { } else {
$statuses = $statuses->whereVisibility('public')->orderBy('id', 'desc')->paginate($limit); $statuses = $statuses->orderBy('id', 'desc')->paginate($limit);
} }
$resource = new Fractal\Resource\Collection($statuses, new StatusTransformer()); $resource = new Fractal\Resource\Collection($statuses, new StatusTransformer());
$res = $this->fractal->createData($resource)->toArray(); $res = $this->fractal->createData($resource)->toArray();