From 7c6b496f21961919c00b5cb536b03341dec5d39b Mon Sep 17 00:00:00 2001 From: Simon Hamp Date: Fri, 19 May 2023 15:30:33 +0100 Subject: [PATCH 1/4] Add route --- routes/api.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/routes/api.php b/routes/api.php index d9453c4..c7a5d5a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,6 +1,7 @@ withoutMiddleware(\App\Http\Middleware\VerifyCsrfToken::class); + +Route::get('_native/api/cookie', CreateSecurityCookieController::class); From 9da005a8acab8e6224a01b749e0d14af3afda7f9 Mon Sep 17 00:00:00 2001 From: Simon Hamp Date: Fri, 19 May 2023 15:30:41 +0100 Subject: [PATCH 2/4] Add controller --- .../CreateSecurityCookieController.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/Http/Controllers/CreateSecurityCookieController.php diff --git a/src/Http/Controllers/CreateSecurityCookieController.php b/src/Http/Controllers/CreateSecurityCookieController.php new file mode 100644 index 0000000..97d1410 --- /dev/null +++ b/src/Http/Controllers/CreateSecurityCookieController.php @@ -0,0 +1,22 @@ +get('secret') !== config('native-php.secret')) { + return abort(403); + } + + return redirect('/')->cookie(cookie( + name: '_php_native', + value: config('native-php.secret'), + domain: 'localhost', + httpOnly: true, + )); + } +} From c444b141795450bef28cc13c7652292387f8100c Mon Sep 17 00:00:00 2001 From: Simon Hamp Date: Fri, 19 May 2023 15:30:52 +0100 Subject: [PATCH 3/4] Add exclusion to middleware --- src/Http/Middleware/PreventRegularBrowserAccess.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Http/Middleware/PreventRegularBrowserAccess.php b/src/Http/Middleware/PreventRegularBrowserAccess.php index 4241f88..3e79885 100644 --- a/src/Http/Middleware/PreventRegularBrowserAccess.php +++ b/src/Http/Middleware/PreventRegularBrowserAccess.php @@ -9,6 +9,11 @@ class PreventRegularBrowserAccess { public function handle(Request $request, Closure $next) { + // Explicitly skip for the cookie-setting route + if ($request->path() === '_native/api/cookie') { + return $next($request); + } + $cookie = $request->cookie('_php_native'); $header = $request->header('X-Native-PHP-Secret'); From c84cabbce505559d673b37adb2d04a2e445678cf Mon Sep 17 00:00:00 2001 From: Simon Hamp Date: Fri, 26 May 2023 19:20:36 +0100 Subject: [PATCH 4/4] Ignore .DS_Store files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a7f372d..e26945a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ phpstan.neon testbench.yaml vendor node_modules +.DS_Store