Просмотр исходного кода

Fix unlisted post web redirect and api response

Daniel Supernault 2 лет назад
Родитель
Сommit
6033d83726

+ 3 - 1
app/Http/Controllers/PublicApiController.php

@@ -118,7 +118,9 @@ class PublicApiController extends Controller
         $status = Status::whereProfileId($profile->id)->findOrFail($postid);
         $this->scopeCheck($profile, $status);
         if(!$request->user()) {
-            $res = ['status' => StatusService::get($status->id)];
+            $cached = StatusService::get($status->id, false);
+            abort_if(!in_array($cached['visibility'], ['public', 'unlisted']), 403);
+            $res = ['status' => $cached];
         } else {
             $item = new Fractal\Resource\Item($status, new StatusStatelessTransformer());
             $res = [

+ 5 - 1
app/Http/Controllers/SpaController.php

@@ -27,7 +27,11 @@ class SpaController extends Controller
 			return view('layouts.spa');
 		}
 
-		$post = StatusService::get($id);
+		$post = StatusService::get($id, false);
+
+		if($post && !in_array($post['visibility'], ['public', 'unlisted'])) {
+			return redirect('/login');
+		}
 
 		if(
 			$post &&

+ 3 - 0
app/Util/Sentiment/Bouncer.php

@@ -6,6 +6,7 @@ use App\AccountInterstitial;
 use App\Status;
 use Cache;
 use Illuminate\Support\Str;
+use App\Services\StatusService;
 
 class Bouncer {
 
@@ -134,6 +135,8 @@ class Bouncer {
 		// $status->is_nsfw = true;
 		$status->save();
 
+		StatusService::del($status->id);
+
 		Cache::forget('pf:bouncer_v0:exemption_by_pid:' . $status->profile_id);
 		Cache::forget('pf:bouncer_v0:recent_by_pid:' . $status->profile_id);
 	}