Skip to content

Commit 3e40d8f

Browse files
committed
feat(front): 로그인시 백엔드에 필요한 로직들 수정
1 parent bfcbdb4 commit 3e40d8f

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

backend/src/main/java/com/backend/domain/user/controller/AuthController.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.backend.domain.user.controller;
22

3+
import com.backend.domain.user.dto.LoginResponse;
4+
import com.backend.domain.user.dto.UserDto;
35
import com.backend.domain.user.service.EmailService;
46
import com.backend.domain.user.service.JwtService;
7+
import com.backend.domain.user.service.UserService;
58
import com.backend.global.exception.ErrorCode;
69
import com.backend.global.response.ApiResponse;
10+
import com.backend.global.response.ResponseCode;
711
import jakarta.mail.MessagingException;
812
import jakarta.servlet.http.Cookie;
913
import jakarta.servlet.http.HttpServletResponse;
@@ -21,6 +25,7 @@
2125
public class AuthController {
2226
private final EmailService emailService;
2327
private final JwtService jwtService;
28+
private final UserService userService;
2429

2530
@Value("${jwt.access-token-expiration-in-milliseconds}")
2631
private int tokenValidityMilliSeconds;
@@ -81,11 +86,15 @@ record LoginRequest(
8186

8287

8388
@PostMapping("/api/login")
84-
public ApiResponse<String> login(
85-
@Valid @RequestBody LoginRequest loginRequest,
89+
public ApiResponse<LoginResponse> login(
90+
@RequestBody LoginRequest loginRequest,
8691
HttpServletResponse response
8792
){
8893
String token = jwtService.login(loginRequest.email, loginRequest.password);
94+
if (token == null) {
95+
// ★ 에러 분기도 LoginResponse로 타입을 고정해서 반환
96+
return ApiResponse.<LoginResponse>error(ResponseCode.UNAUTHORIZED);
97+
}
8998

9099
Cookie cookie = new Cookie("token", token);
91100
cookie.setHttpOnly(true); // JavaScript 접근 방지 (XSS 공격 방어)
@@ -95,7 +104,8 @@ public ApiResponse<String> login(
95104
cookie.setMaxAge(tokenValidityMilliSeconds);
96105

97106
response.addCookie(cookie); //응답에 쿠키 추가
98-
99-
return ApiResponse.success("success");
107+
var user = userService.findByEmail(loginRequest.email);
108+
return ApiResponse.success(new LoginResponse(new UserDto(user)));
100109
}
110+
101111
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
package com.backend.domain.user.dto;
22

3-
public class LoginResponse {
4-
}
3+
import com.backend.domain.user.dto.UserDto;
4+
5+
public record LoginResponse(UserDto user) {}

backend/src/main/java/com/backend/global/config/WebConfig.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ public void addCorsMappings(CorsRegistry registry) {
1515
registry.addMapping("/**")
1616
.allowedOrigins("http://localhost:3000")
1717
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
18-
.allowCredentials(true);
18+
.allowCredentials(false) // ← true에서 false로 변경
19+
.allowedHeaders("*") // ← 추가
20+
.exposedHeaders("Authorization"); // ← 추가
1921
}
2022
};
2123
}
22-
}
24+
}

backend/src/main/java/com/backend/global/response/ApiResponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ public static <T> ApiResponse<T> error(ResponseCode code) {
2424
return new ApiResponse<>(code.getCode(), code.getMessage(), null);
2525
}
2626

27+
public static <T> ApiResponse<T> error(ResponseCode code, String message) {
28+
return new ApiResponse<>(code.getCode(), message, null);
29+
}
30+
2731
public static <T> ApiResponse<T> error(ErrorCode code) {
2832
return new ApiResponse<>(code.getCode(), code.getMessage(), null);
2933
}

0 commit comments

Comments
 (0)