Update login response to return both access and refresh tokens
This commit is contained in:
@@ -5,6 +5,7 @@ import com.skycrate.backend.skycrateBackend.services.JwtService;
|
|||||||
import com.skycrate.backend.skycrateBackend.entity.User;
|
import com.skycrate.backend.skycrateBackend.entity.User;
|
||||||
import com.skycrate.backend.skycrateBackend.repository.UserRepository;
|
import com.skycrate.backend.skycrateBackend.repository.UserRepository;
|
||||||
import com.skycrate.backend.skycrateBackend.security.TokenBlacklistService;
|
import com.skycrate.backend.skycrateBackend.security.TokenBlacklistService;
|
||||||
|
import com.skycrate.backend.skycrateBackend.services.RefreshTokenService;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -28,7 +29,7 @@ public class AuthController {
|
|||||||
|
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
public ResponseEntity<?> login(@RequestBody LoginRequest request, HttpServletRequest servletRequest) {
|
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)) {
|
if (rateLimiterService.isBlocked(ip)) {
|
||||||
return ResponseEntity.status(429).body("Too many login attempts. Please try again later.");
|
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())
|
User user = userRepository.findByEmail(request.getEmail())
|
||||||
.orElseThrow(() -> new RuntimeException("User not found"));
|
.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);
|
rateLimiterService.resetAttempts(ip);
|
||||||
String token = jwtService.generateToken(user);
|
String token = jwtService.generateToken(user);
|
||||||
return ResponseEntity.ok().body(token);
|
return ResponseEntity.ok().body(token);
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user