diff --git a/src/Http/Responses/DataResponse.php b/src/Http/Responses/DataResponse.php index 6c2103fa3bc..22497e07387 100644 --- a/src/Http/Responses/DataResponse.php +++ b/src/Http/Responses/DataResponse.php @@ -10,6 +10,7 @@ use Statamic\Facades\Site; use Statamic\Routing\ResolveRedirect; use Statamic\Statamic; +use Statamic\Tokens\Handlers\LivePreview; use Statamic\View\View; class DataResponse implements Responsable @@ -192,7 +193,7 @@ public function with($data) protected function isLivePreview() { - return $this->request->headers->get('X-Statamic-Live-Preview'); + return optional($this->request->statamicToken())->handler() === LivePreview::class; } protected function versionJavascriptModules($contents) diff --git a/src/Tokens/Handlers/LivePreview.php b/src/Tokens/Handlers/LivePreview.php index ba41616d5f5..67a07083cbe 100644 --- a/src/Tokens/Handlers/LivePreview.php +++ b/src/Tokens/Handlers/LivePreview.php @@ -14,8 +14,6 @@ public function handle(Token $token, $request, Closure $next) $item->repository()->substitute($item); - $request->headers->set('X-Statamic-Live-Preview', true); - $response = $next($request); $response->headers->set('X-Statamic-Live-Preview', true); diff --git a/tests/FrontendTest.php b/tests/FrontendTest.php index 259edd80b22..a314e6e561d 100644 --- a/tests/FrontendTest.php +++ b/tests/FrontendTest.php @@ -2,6 +2,7 @@ namespace Tests; +use Facades\Statamic\CP\LivePreview; use Facades\Tests\Factories\EntryFactory; use Illuminate\Http\Response; use Illuminate\Support\Carbon; @@ -231,10 +232,12 @@ public function drafts_are_visible_if_using_live_preview() { $this->withStandardBlueprints(); - $this->createPage('about')->published(false)->set('content', 'Testing 123')->save(); + $page = tap($this->createPage('about')->published(false)->set('content', 'Testing 123'))->save(); + + LivePreview::tokenize('test-token', $page); $response = $this - ->get('/about', ['X-Statamic-Live-Preview' => true]) + ->get('/about?token=test-token') ->assertStatus(200) ->assertHeader('X-Statamic-Draft', true); @@ -279,10 +282,12 @@ public function future_private_entries_viewable_in_live_preview() $this->viewShouldReturnRendered('default', 'The template contents'); tap($this->makeCollection()->dated(true)->futureDateBehavior('private'))->save(); - tap($this->makePage('about')->date('2019-01-02'))->save(); + $page = tap($this->makePage('about')->date('2019-01-02'))->save(); + + LivePreview::tokenize('test-token', $page); $this - ->get('/about', ['X-Statamic-Live-Preview' => true]) + ->get('/about?token=test-token') ->assertStatus(200) ->assertHeader('X-Statamic-Private', true); } @@ -325,10 +330,12 @@ public function past_private_entries_are_viewable_in_live_preview() $this->viewShouldReturnRendered('default', 'The template contents'); tap($this->makeCollection()->dated(true)->pastDateBehavior('private'))->save(); - tap($this->makePage('about')->date('2018-01-01'))->save(); + $page = tap($this->makePage('about')->date('2018-01-01'))->save(); + + LivePreview::tokenize('test-token', $page); $this - ->get('/about', ['X-Statamic-Live-Preview' => true]) + ->get('/about?token=test-token') ->assertStatus(200) ->assertHeader('X-Statamic-Private', true); } diff --git a/tests/Tokens/Handlers/LivePreviewTest.php b/tests/Tokens/Handlers/LivePreviewTest.php deleted file mode 100644 index 8129cd18361..00000000000 --- a/tests/Tokens/Handlers/LivePreviewTest.php +++ /dev/null @@ -1,40 +0,0 @@ -with($token) - ->andReturn(EntryFactory::collection('test')->create()); - - $response = new Response; - - $return = (new LivePreview)->handle( - $token, - $request = new Request, - fn () => $response - ); - - $this->assertSame($response, $return); - $this->assertTrue($request->headers->has('X-Statamic-Live-Preview')); - $this->assertTrue($response->headers->has('X-Statamic-Live-Preview')); - } -}