From 31f13b980b7f5adcc258d16530373f6457a8cd24 Mon Sep 17 00:00:00 2001 From: Kshitij <160704796+kshitij-ka@users.noreply.github.com> Date: Thu, 3 Jul 2025 03:19:15 +0530 Subject: [PATCH] Update login response to return both access and refresh tokens --- .../controller/AuthController.java | 15 ++++++++++++++- .../skycrateBackend/dto/LoginResponse.java | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/skycrate/backend/skycrateBackend/dto/LoginResponse.java diff --git a/src/main/java/com/skycrate/backend/skycrateBackend/controller/AuthController.java b/src/main/java/com/skycrate/backend/skycrateBackend/controller/AuthController.java index 2982181..4e203a2 100644 --- a/src/main/java/com/skycrate/backend/skycrateBackend/controller/AuthController.java +++ b/src/main/java/com/skycrate/backend/skycrateBackend/controller/AuthController.java @@ -5,6 +5,7 @@ import com.skycrate.backend.skycrateBackend.services.JwtService; import com.skycrate.backend.skycrateBackend.entity.User; import com.skycrate.backend.skycrateBackend.repository.UserRepository; import com.skycrate.backend.skycrateBackend.security.TokenBlacklistService; +import com.skycrate.backend.skycrateBackend.services.RefreshTokenService; import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @@ -28,7 +29,7 @@ public class AuthController { @PostMapping("/login") public ResponseEntity login(@RequestBody LoginRequest request, HttpServletRequest servletRequest) { - String ip = servletRequest.getRemoteAddr(); // or use request.getEmail() as key + String ip = servletRequest.getRemoteAddr(); if (rateLimiterService.isBlocked(ip)) { return ResponseEntity.status(429).body("Too many login attempts. Please try again later."); @@ -46,6 +47,18 @@ public class AuthController { User user = userRepository.findByEmail(request.getEmail()) .orElseThrow(() -> new RuntimeException("User not found")); + rateLimiterService.resetAttempts(ip); + + // ✅ Generate tokens + String accessToken = jwtService.generateToken(user); + RefreshToken refreshToken = refreshTokenService.createRefreshToken(user); + + return ResponseEntity.ok(new LoginResponse(accessToken, refreshToken.getToken())); + } + + User user = userRepository.findByEmail(request.getEmail()) + .orElseThrow(() -> new RuntimeException("User not found")); + rateLimiterService.resetAttempts(ip); String token = jwtService.generateToken(user); return ResponseEntity.ok().body(token); diff --git a/src/main/java/com/skycrate/backend/skycrateBackend/dto/LoginResponse.java b/src/main/java/com/skycrate/backend/skycrateBackend/dto/LoginResponse.java new file mode 100644 index 0000000..ff03ff1 --- /dev/null +++ b/src/main/java/com/skycrate/backend/skycrateBackend/dto/LoginResponse.java @@ -0,0 +1,17 @@ +package com.skycrate.backend.skycrateBackend.dto; + +public class LoginResponse { + private String accessToken; + private String refreshToken; + private String tokenType = "Bearer"; + + public LoginResponse(String accessToken, String refreshToken) { + this.accessToken = accessToken; + this.refreshToken = refreshToken; + } + + // Getters + public String getAccessToken() { return accessToken; } + public String getRefreshToken() { return refreshToken; } + public String getTokenType() { return tokenType; } +} \ No newline at end of file