Skip to content

Commit 7620396

Browse files
committed
Add AttachAccessTokenFromCookie middleware and update Kernel and SocialAuthController
This commit introduces the AttachAccessTokenFromCookie middleware, which injects the access token from a cookie into the Authorization header if not already present. Additionally, it updates the Kernel to include this middleware in the API middleware stack. The SocialAuthController is modified to set the domain for the access token cookie based on the environment, enhancing security and functionality in token management.
1 parent 9b871a9 commit 7620396

File tree

5 files changed

+33
-3
lines changed

5 files changed

+33
-3
lines changed

app/Http/Controllers/Auth/SocialAuthController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,10 @@ public function handleGoogleCallback(): RedirectResponse
5555
// Refresh Token (Créer un jeton de durée de vie plus longue pour le rafraîchissement)
5656
$refreshToken = $user->createToken('GoogleRefreshToken', [], Carbon::now()->addDays(30))->accessToken;
5757

58-
$domain = config('app.env') === 'production' ? parse_url(config('app.url'), PHP_URL_HOST) : null;
58+
$domain = (config('app.env') === 'production') ? '.akevas.com' : null;
5959
$secure = config('app.env') === 'production';
6060

61+
6162
return redirect("{$frontendUrl}/auth/callback")->cookie('accessToken', $accessToken,
6263
Carbon::now()->addMinutes(config('passport.token_ttl'))->timestamp,
6364
'/', $domain, $secure, true, false, 'none') // ttl, path, domain, secure, httpOnly, raw, sameSite

app/Http/Kernel.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,11 @@ class Kernel extends HttpKernel
4343

4444
'api' => [
4545
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
46+
\App\Http\Middleware\AttachAccessTokenFromCookie::class,
4647
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
4748
\Illuminate\Routing\Middleware\SubstituteBindings::class,
48-
// \App\Http\Middleware\EncryptCookies::class,
49+
50+
//\App\Http\Middleware\EncryptCookies::class,
4951
],
5052
];
5153

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
8+
class AttachAccessTokenFromCookie
9+
{
10+
11+
public function handle(Request $request, Closure $next)
12+
{
13+
// 1. Vérifier si l'en-tête Authorization est déjà présent (pour ne pas écraser)
14+
if (!$request->headers->has('Authorization') && $request->cookie('accessToken')) {
15+
16+
// 2. Lire le token depuis le cookie 'accessToken'
17+
$accessToken = $request->cookie('accessToken');
18+
19+
// 3. Injecter le token dans l'en-tête Authorization au format Bearer
20+
$request->headers->set('Authorization', 'Bearer ' . $accessToken);
21+
}
22+
23+
return $next($request);
24+
}
25+
}

app/Http/Middleware/EncryptCookies.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class EncryptCookies extends Middleware
1212
* @var array<int, string>
1313
*/
1414
protected $except = [
15-
//
15+
'accessToken', // ⬅️ Ajouter le cookie d'authentification
16+
'refreshToken', // ⬅️ Ajouter le cookie de rafraîchissement
1617
];
1718
}

config/cors.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
'exposed_headers' => ["*"],
2929

3030
'max_age' => 0,
31+
"Access-Control-Allow-Credentials" =>true,
3132

3233
'supports_credentials' => true,
3334
// Très important !

0 commit comments

Comments
 (0)