diff --git a/api/src/main/java/fr/gameovergne/api/controller/auth/AuthController.java b/api/src/main/java/fr/gameovergne/api/controller/auth/AuthController.java index 56bfb0a..123cd72 100644 --- a/api/src/main/java/fr/gameovergne/api/controller/auth/AuthController.java +++ b/api/src/main/java/fr/gameovergne/api/controller/auth/AuthController.java @@ -46,7 +46,7 @@ public class AuthController { .httpOnly(true) .secure(false) // true en prod .path("/") - .maxAge(0) // Expire immédiatement + .maxAge(0) // expire immédiatement .sameSite("Lax") .build(); response.addHeader(HttpHeaders.SET_COOKIE, cookie.toString()); @@ -65,8 +65,19 @@ public class AuthController { .orElse(ResponseEntity.notFound().build()); } + // --------- REFRESH TOKEN : accepte POST et GET --------- + @PostMapping("/refresh") - public ResponseEntity refresh(HttpServletRequest request, HttpServletResponse response) { + public ResponseEntity refreshPost(HttpServletRequest request, HttpServletResponse response) { + return handleRefresh(request, response); + } + + @GetMapping("/refresh") + public ResponseEntity refreshGet(HttpServletRequest request, HttpServletResponse response) { + return handleRefresh(request, response); + } + + private ResponseEntity handleRefresh(HttpServletRequest request, HttpServletResponse response) { String refreshToken = null; if (request.getCookies() != null) { refreshToken = Arrays.stream(request.getCookies()) @@ -75,17 +86,20 @@ public class AuthController { .map(Cookie::getValue) .orElse(null); } + if (refreshToken == null) { - // Pas de cookie -> pas d'erreur réseau + // Pas de cookie -> on ne casse pas le front, juste 204 return ResponseEntity.noContent().build(); } return authService.refresh(refreshToken) .map(authResponse -> createAuthResponse(authResponse, response)) - // Token inconnu/expiré -> pas d'erreur réseau non plus + // Token inconnu/expiré -> 204 aussi, pas d'erreur réseau .orElse(ResponseEntity.noContent().build()); } + // --------- Utilitaire pour poser le cookie + réponse --------- + private ResponseEntity createAuthResponse(AuthResponse authResponse, HttpServletResponse response) { ResponseCookie cookie = ResponseCookie.from("refreshToken", authResponse.refreshToken()) .httpOnly(true)