From 6291ab33987d28bd287d71444cf7cb75ce6a060b Mon Sep 17 00:00:00 2001 From: 6suhyeon Date: Sun, 22 Jun 2025 02:45:12 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HalfFifty_BE/build.gradle | 3 -- .../HalfFifty_BE/user/bean/LoginBean.java | 30 +++++++++++++++++++ .../user/bean/small/CreateUserDAOBean.java | 1 - .../user/bean/small/GetUserDAOBean.java | 4 +++ .../user/controller/UserController.java | 19 ++++++++++++ .../user/domain/DTO/RequestUserLoginDTO.java | 9 ++++++ .../user/repository/UserRepositoryJPA.java | 1 + .../user/service/UserService.java | 11 ++++++- 8 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/LoginBean.java create mode 100644 HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/domain/DTO/RequestUserLoginDTO.java diff --git a/HalfFifty_BE/build.gradle b/HalfFifty_BE/build.gradle index 900ea17..1102d5b 100644 --- a/HalfFifty_BE/build.gradle +++ b/HalfFifty_BE/build.gradle @@ -25,11 +25,9 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' -// implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' -// implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' @@ -38,7 +36,6 @@ dependencies { testImplementation 'org.springframework.security:spring-security-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' implementation 'software.amazon.awssdk:lambda:2.20.26' // AWS Lambda SDK - } tasks.named('test') { diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/LoginBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/LoginBean.java new file mode 100644 index 0000000..3e85626 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/LoginBean.java @@ -0,0 +1,30 @@ +package HalfFifty.HalfFifty_BE.user.bean; + +import HalfFifty.HalfFifty_BE.user.bean.small.GetUserDAOBean; +import HalfFifty.HalfFifty_BE.user.domain.DTO.RequestUserLoginDTO; +import HalfFifty.HalfFifty_BE.user.domain.UserDAO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +@Component +public class LoginBean { + GetUserDAOBean getUserDAOBean; + + @Autowired + public LoginBean(GetUserDAOBean getUserDAOBean) { + this.getUserDAOBean = getUserDAOBean; + } + + public UUID exec(RequestUserLoginDTO requestUserLoginDTO) { + // id와 password로 객체 찾기 + System.out.println("requestUserLoginDTO = " + requestUserLoginDTO.getAppleId()); + System.out.println("requestUserLoginDTO = " + requestUserLoginDTO.getPassword()); + UserDAO userDAO = getUserDAOBean.exec(requestUserLoginDTO.getAppleId(), requestUserLoginDTO.getPassword()); + if (userDAO == null) return null; + + // 찾은 객체의 키값 반환 + return userDAO.getUserId(); + } +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/CreateUserDAOBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/CreateUserDAOBean.java index 457cfa0..a84eebf 100644 --- a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/CreateUserDAOBean.java +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/CreateUserDAOBean.java @@ -12,7 +12,6 @@ public class CreateUserDAOBean { // 유저 객체 생성 public UserDAO exec(RequestUserSaveDTO requestUserSaveDTO) { return UserDAO.builder() - .userId(UUID.randomUUID()) .appleId(requestUserSaveDTO.getAppleId()) .password(requestUserSaveDTO.getPassword()) .username(requestUserSaveDTO.getUsername()) diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/GetUserDAOBean.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/GetUserDAOBean.java index 7424001..ffffb9b 100644 --- a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/GetUserDAOBean.java +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/bean/small/GetUserDAOBean.java @@ -20,4 +20,8 @@ public GetUserDAOBean(UserRepositoryJPA userRepositoryJPA) { public UserDAO exec(UUID userId) { return userRepositoryJPA.findById(userId).orElse(null); } + + public UserDAO exec(String appleId, String password) { + return userRepositoryJPA.findByAppleIdAndPassword(appleId, password); + } } diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/controller/UserController.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/controller/UserController.java index fa77135..023037d 100644 --- a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/controller/UserController.java +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/controller/UserController.java @@ -1,5 +1,6 @@ package HalfFifty.HalfFifty_BE.user.controller; +import HalfFifty.HalfFifty_BE.user.domain.DTO.RequestUserLoginDTO; import HalfFifty.HalfFifty_BE.user.domain.DTO.RequestUserSaveDTO; import HalfFifty.HalfFifty_BE.user.domain.DTO.RequestUserUpdateDTO; import HalfFifty.HalfFifty_BE.user.domain.DTO.ResponseUserGetDTO; @@ -78,4 +79,22 @@ public ResponseEntity> saveUser(@RequestBody RequestUserSave // status, body 설정해서 응답 리턴 return ResponseEntity.status(HttpStatus.OK).body(requestMap); } + + @GetMapping("/login") + public ResponseEntity> login(@RequestBody RequestUserLoginDTO requestUserLoginDTO) { + // 유저 로그인 service + UUID userId = userService.login(requestUserLoginDTO); + + // 유저 로그인 성공 여부 + boolean success = userId != null; + + // Map을 통해 메시지와 id 값 json 테이터로 변환 + Map requestMap = new HashMap<>(); + requestMap.put("success", success); + requestMap.put("message", success ? "유저 로그인 성공" : "유저 로그인 실패"); + requestMap.put("userId", userId); + + // status, body 설정해서 응답 리턴 + return ResponseEntity.status(HttpStatus.OK).body(requestMap); + } } diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/domain/DTO/RequestUserLoginDTO.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/domain/DTO/RequestUserLoginDTO.java new file mode 100644 index 0000000..f04c366 --- /dev/null +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/domain/DTO/RequestUserLoginDTO.java @@ -0,0 +1,9 @@ +package HalfFifty.HalfFifty_BE.user.domain.DTO; + +import lombok.Data; + +@Data +public class RequestUserLoginDTO { + String appleId; + String password; +} diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/repository/UserRepositoryJPA.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/repository/UserRepositoryJPA.java index cbbd38a..bca0c2e 100644 --- a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/repository/UserRepositoryJPA.java +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/repository/UserRepositoryJPA.java @@ -8,4 +8,5 @@ @Repository public interface UserRepositoryJPA extends JpaRepository { + UserDAO findByAppleIdAndPassword(String appleId, String password); } diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/service/UserService.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/service/UserService.java index e845a86..bcdebf9 100644 --- a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/service/UserService.java +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/user/service/UserService.java @@ -3,6 +3,8 @@ import HalfFifty.HalfFifty_BE.user.bean.GetUserBean; import HalfFifty.HalfFifty_BE.user.bean.SaveUserBean; import HalfFifty.HalfFifty_BE.user.bean.UpdateUserBean; +import HalfFifty.HalfFifty_BE.user.bean.LoginBean; +import HalfFifty.HalfFifty_BE.user.domain.DTO.RequestUserLoginDTO; import HalfFifty.HalfFifty_BE.user.domain.DTO.RequestUserSaveDTO; import HalfFifty.HalfFifty_BE.user.domain.DTO.RequestUserUpdateDTO; import HalfFifty.HalfFifty_BE.user.domain.DTO.ResponseUserGetDTO; @@ -16,12 +18,14 @@ public class UserService { SaveUserBean saveUserBean; GetUserBean getUserBean; UpdateUserBean updateUserBean; + LoginBean loginBean; @Autowired - public UserService(SaveUserBean saveUserBean, GetUserBean getUserBean, UpdateUserBean updateUserBean) { + public UserService(SaveUserBean saveUserBean, GetUserBean getUserBean, UpdateUserBean updateUserBean, LoginBean loginBean) { this.saveUserBean = saveUserBean; this.getUserBean = getUserBean; this.updateUserBean = updateUserBean; + this.loginBean = loginBean; } // 유저 프로필 조회 @@ -38,4 +42,9 @@ public UUID updateUser(RequestUserUpdateDTO requestUserUpdateDTO) { public UUID exec(RequestUserSaveDTO requestUserSaveDTO) { return saveUserBean.exec(requestUserSaveDTO); } + + // 유저 로그인 + public UUID login(RequestUserLoginDTO requestUserLoginDTO) { + return loginBean.exec(requestUserLoginDTO); + } }