From 9f68959a297849c6cb20b06d7e720918aa6254f2 Mon Sep 17 00:00:00 2001 From: Bailey Taylor Date: Fri, 10 Oct 2025 10:50:42 +0800 Subject: [PATCH] Added a keep-alive function to the AuthController --- .../controller/AuthController.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/com/psg/dlsysinfo/dl_sysinfo_server/controller/AuthController.java b/src/main/java/com/psg/dlsysinfo/dl_sysinfo_server/controller/AuthController.java index 1853dd8..648ae63 100644 --- a/src/main/java/com/psg/dlsysinfo/dl_sysinfo_server/controller/AuthController.java +++ b/src/main/java/com/psg/dlsysinfo/dl_sysinfo_server/controller/AuthController.java @@ -162,6 +162,31 @@ public class AuthController { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Incorrect current password"); } } + @PostMapping("/refresh") + public ResponseEntity refreshToken(HttpServletRequest request, HttpServletResponse response) { + String token = tokenResolver.resolveToken(request); + + if (token != null && jwtUtil.validateToken(token)) { + String username = jwtUtil.extractUsername(token); + // Generate new token with extended expiry + String newToken = jwtUtil.generateToken(...); // same params as login + + // Set new cookie + ResponseCookie cookie = ResponseCookie.from("authToken", newToken) + .httpOnly(true) + .secure(true) + .path("/") + .sameSite("None") + .maxAge(60 * 60) + .domain(resolveCookieDomain(request)) + .build(); + + response.addHeader(HttpHeaders.SET_COOKIE, cookie.toString()); + return ResponseEntity.ok(Map.of("message", "Token refreshed")); + } + + return ResponseEntity.status(401).body(Map.of("error", "Invalid token")); + } }