From 3cdf363eabbaaa350b387724fab3d966242501a6 Mon Sep 17 00:00:00 2001 From: Ludy Date: Sat, 31 Jan 2026 20:42:41 +0100 Subject: [PATCH] fix(auth): align token refresh handling with updated backend response (#5609) # Description of Changes This pull request updates the authentication token refresh response structure to include both user and session information, and makes corresponding adjustments in the backend, frontend, and tests to support this change. Additionally, it adds improved logging to the frontend for better debugging. **Backend API response changes:** * The `/api/v1/auth/refresh` endpoint now returns a response containing both a `user` object and a nested `session` object with the new access token and expiry, instead of returning the token fields at the top level. **Test updates:** * The `refreshReturnsNewTokenWhenValid` test has been updated to expect the new response structure, checking for `session.access_token` and `session.expires_in` instead of the previous top-level fields. **Frontend improvements:** * Added a debug log message in `springAuthClient.ts` to indicate when the token has been refreshed successfully, aiding in debugging and monitoring. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --- .../proprietary/security/controller/api/AuthController.java | 5 ++++- .../security/controller/api/AuthControllerLoginTest.java | 4 ++-- frontend/src/proprietary/auth/springAuthClient.ts | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/AuthController.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/AuthController.java index 8c5e52dfe..c7ebdbdb4 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/AuthController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/AuthController.java @@ -286,7 +286,10 @@ public class AuthController { log.debug("Token refreshed for user: {}", username); - return ResponseEntity.ok(Map.of("access_token", newToken, "expires_in", 3600)); + return ResponseEntity.ok( + Map.of( + "user", buildUserResponse(user), + "session", Map.of("access_token", newToken, "expires_in", 3600))); } catch (Exception e) { log.error("Token refresh error", e); diff --git a/app/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/AuthControllerLoginTest.java b/app/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/AuthControllerLoginTest.java index 48e0700ac..29dabe152 100644 --- a/app/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/AuthControllerLoginTest.java +++ b/app/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/AuthControllerLoginTest.java @@ -182,8 +182,8 @@ class AuthControllerLoginTest { mockMvc.perform(post("/api/v1/auth/refresh")) .andExpect(status().isOk()) - .andExpect(jsonPath("$.access_token").value("new-token")) - .andExpect(jsonPath("$.expires_in").value(3600)); + .andExpect(jsonPath("$.session.access_token").value("new-token")) + .andExpect(jsonPath("$.session.expires_in").value(3600)); } @Test diff --git a/frontend/src/proprietary/auth/springAuthClient.ts b/frontend/src/proprietary/auth/springAuthClient.ts index 82deb3407..9d26b8e85 100644 --- a/frontend/src/proprietary/auth/springAuthClient.ts +++ b/frontend/src/proprietary/auth/springAuthClient.ts @@ -406,6 +406,8 @@ class SpringAuthClient { // Notify listeners this.notifyListeners('TOKEN_REFRESHED', session); + console.debug('[SpringAuth] Token refreshed successfully'); + return { data: { session }, error: null }; } catch (error: unknown) { console.error('[SpringAuth] refreshSession error:', error);