Browse Source

Update ApiV1Controller

Daniel Supernault 5 năm trước cách đây
mục cha
commit
eeca1fbc54

+ 36 - 9
app/Http/Controllers/Api/ApiV1Controller.php

@@ -205,19 +205,32 @@ class ApiV1Controller extends Controller
     public function accountFollowersById(Request $request, $id)
     public function accountFollowersById(Request $request, $id)
     {
     {
         abort_if(!$request->user(), 403);
         abort_if(!$request->user(), 403);
+
+        $user = $request->user();
         $profile = Profile::whereNull('status')->findOrFail($id);
         $profile = Profile::whereNull('status')->findOrFail($id);
+        $limit = $request->input('limit') ?? 40;
 
 
         if($profile->domain) {
         if($profile->domain) {
             $res = [];
             $res = [];
         } else {
         } else {
-            $settings = $profile->user->settings;
-            if($settings->show_profile_followers == true) {
-                $limit = $request->input('limit') ?? 40;
+            if($profile->id == $user->profile_id) {
                 $followers = $profile->followers()->paginate($limit);
                 $followers = $profile->followers()->paginate($limit);
                 $resource = new Fractal\Resource\Collection($followers, new AccountTransformer());
                 $resource = new Fractal\Resource\Collection($followers, new AccountTransformer());
                 $res = $this->fractal->createData($resource)->toArray();
                 $res = $this->fractal->createData($resource)->toArray();
             } else {
             } else {
-                $res = [];
+                if($profile->is_private) {
+                    abort_if(!$profile->followedBy($user->profile), 403);
+                }
+                $settings = $profile->user->settings;
+                if( in_array($user->profile_id, $profile->blockedIds()->toArray()) || 
+                    $settings->show_profile_followers == false
+                ) {
+                    $res = [];
+                } else {
+                    $followers = $profile->followers()->paginate($limit);
+                    $resource = new Fractal\Resource\Collection($followers, new AccountTransformer());
+                    $res = $this->fractal->createData($resource)->toArray();
+                }
             }
             }
         }
         }
         return response()->json($res);
         return response()->json($res);
@@ -233,22 +246,36 @@ class ApiV1Controller extends Controller
     public function accountFollowingById(Request $request, $id)
     public function accountFollowingById(Request $request, $id)
     {
     {
         abort_if(!$request->user(), 403);
         abort_if(!$request->user(), 403);
+
+        $user = $request->user();
         $profile = Profile::whereNull('status')->findOrFail($id);
         $profile = Profile::whereNull('status')->findOrFail($id);
+        $limit = $request->input('limit') ?? 40;
 
 
         if($profile->domain) {
         if($profile->domain) {
             $res = [];
             $res = [];
         } else {
         } else {
-            $settings = $profile->user->settings;
-            if($settings->show_profile_following == true) {
-                $limit = $request->input('limit') ?? 40;
+            if($profile->id == $user->profile_id) {
                 $following = $profile->following()->paginate($limit);
                 $following = $profile->following()->paginate($limit);
                 $resource = new Fractal\Resource\Collection($following, new AccountTransformer());
                 $resource = new Fractal\Resource\Collection($following, new AccountTransformer());
                 $res = $this->fractal->createData($resource)->toArray();
                 $res = $this->fractal->createData($resource)->toArray();
             } else {
             } else {
-                $res = [];
+                if($profile->is_private) {
+                    abort_if(!$profile->followedBy($user->profile), 403);
+                }
+                $settings = $profile->user->settings;
+                if( in_array($user->profile_id, $profile->blockedIds()->toArray()) || 
+                    $settings->show_profile_following == false
+                ) {
+                    $res = [];
+                } else {
+                    $following = $profile->following()->paginate($limit);
+                    $resource = new Fractal\Resource\Collection($following, new AccountTransformer());
+                    $res = $this->fractal->createData($resource)->toArray();
+                }
             }
             }
         }
         }
 
 
+
         return response()->json($res);
         return response()->json($res);
     }
     }
 
 
@@ -1764,7 +1791,7 @@ class ApiV1Controller extends Controller
                 abort_if(!in_array($status->scope, ['public','unlisted']), 403);
                 abort_if(!in_array($status->scope, ['public','unlisted']), 403);
             }
             }
         }
         }
-        
+
         Status::whereProfileId($user->profile_id)
         Status::whereProfileId($user->profile_id)
           ->whereReblogOfId($status->id)
           ->whereReblogOfId($status->id)
           ->delete();
           ->delete();