Skip to content

Commit ebc45b8

Browse files
authored
Merge pull request #22 from TeamAiary/fix/modify-userapi-exception
fix: 유효성 검증 마무리 및 interceptor 예외 로직 추가
2 parents f837f30 + 5b6f778 commit ebc45b8

5 files changed

Lines changed: 16 additions & 16 deletions

File tree

src/main/java/com/aiary/be/auth/application/AuthService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ public class AuthService {
2121

2222
// 회원가입: 신규 유저 등록
2323
public void save(SignupRequest request) {
24+
if(userRepository.findUserByEmail(request.email()).isPresent()){
25+
throw CustomException.from(UserErrorCode.DUPLICATE_EMAIL);
26+
}
27+
2428
User newUser = new User(
2529
request.email(),
2630
request.password(),

src/main/java/com/aiary/be/global/exception/errorCode/UserErrorCode.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.aiary.be.global.exception.errorCode;
22

33
import lombok.RequiredArgsConstructor;
4+
import org.springframework.boot.autoconfigure.graphql.GraphQlProperties.Http;
45
import org.springframework.http.HttpStatus;
56

67
@RequiredArgsConstructor
78
public enum UserErrorCode implements ErrorCode {
89
NOT_FOUND(HttpStatus.NOT_FOUND, "U001", "존재하지 않는 유저 아이디입니다."),
9-
INVALID_EMAIL_PASSWORD(HttpStatus.UNAUTHORIZED, "U002", "잘못된 이메일, 비밀번호 조합입니다.");
10+
INVALID_EMAIL_PASSWORD(HttpStatus.UNAUTHORIZED, "U002", "잘못된 이메일, 비밀번호 조합입니다."),
11+
REQUIRED_LOGIN(HttpStatus.UNAUTHORIZED, "U003", "로그인이 필요합니다."),
12+
DUPLICATE_EMAIL(HttpStatus.BAD_REQUEST, "U004", "이미 존재하는 이메일입니다.");
1013

1114
private final HttpStatus httpStatus;
1215
private final String code;

src/main/java/com/aiary/be/global/interceptor/LoginCheckInterceptor.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.aiary.be.global.interceptor;
22

33

4+
import com.aiary.be.global.exception.CustomException;
5+
import com.aiary.be.global.exception.errorCode.UserErrorCode;
46
import com.aiary.be.user.presentation.dto.UserResponse;
57
import jakarta.servlet.http.HttpServletRequest;
68
import jakarta.servlet.http.HttpServletResponse;
@@ -24,22 +26,10 @@ public boolean preHandle(
2426

2527
if(session==null || session.getAttribute("loggedInUser")==null){
2628
log.warn("인증되지 않은 사용자, url: {}", request.getRequestURI());
27-
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
28-
response.setContentType("application/json;charset=UTF-8");
29-
response.getWriter().write("{\"message\": \"로그인이 필요합니다.\"}");
3029

31-
return false;
32-
}
33-
34-
// 이후 다른 페이지 인가 구현 예정
35-
// if(request.getRequestURI().startsWith("/api/admin") &&
36-
// !session.getAttribute("userRole").equals("ADMIN")){
37-
// log.warn("일반 사용자는 이용할 수 없습니다.");
38-
// ...
39-
// }
30+
throw CustomException.from(UserErrorCode.REQUIRED_LOGIN);
4031

41-
// controller에서 자주 사용할 만한 것들은 @RequestAttribute()로 받아서 사용할 수 있도록 전달할 수 있다.
42-
// request.setAttribute("userEmail", session.getAttribute("userEmail"));
32+
}
4333
UserResponse userResponse = (UserResponse) session.getAttribute("loggedInUser");
4434
request.setAttribute("userId", userResponse.userId());
4535
return true;

src/main/java/com/aiary/be/user/presentation/UserApiController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.aiary.be.user.application.UserService;
55
import com.aiary.be.user.presentation.dto.UserRequest;
66
import com.aiary.be.user.presentation.dto.UserResponse;
7+
import jakarta.validation.Valid;
78
import lombok.RequiredArgsConstructor;
89
import org.springframework.http.HttpStatus;
910
import org.springframework.http.ResponseEntity;
@@ -27,7 +28,7 @@ public ResponseEntity<?> readMyProfile(
2728
@PatchMapping
2829
public ResponseEntity<?> updateMyProfile(
2930
@RequestAttribute("userId") Long userId,
30-
@RequestBody UserRequest userRequest
31+
@Valid @RequestBody UserRequest userRequest
3132
) {
3233
userService.updateUser(userId, userRequest);
3334

src/main/java/com/aiary/be/user/presentation/dto/UserRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.aiary.be.user.presentation.dto;
22

33
import com.aiary.be.user.domain.Gender;
4+
import jakarta.validation.constraints.Email;
45

56
// user 정보 update에만 사용되는 dto
67
// 나중에 login/signup request 등이랑 통합 예정
78
// 얘는 전달하지 않는 필드는 update하지 않기 때문에 valid를 추가하지 않았음
89
public record UserRequest(
10+
@Email(message = "올바른 이메일 형식이 아닙니다.")
911
String email,
1012
String password,
1113
String userName,

0 commit comments

Comments
 (0)