From 1a780a1c6a0a26c5689178336988d751b2b8097b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Tue, 20 Feb 2024 13:23:07 +0900 Subject: [PATCH] =?UTF-8?q?feature:=20User=EB=AA=A8=EB=93=88=20-=20?= =?UTF-8?q?=EC=95=94=ED=98=B8=EB=B3=80=EA=B2=BD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-db.yml | 2 +- .../pty/service/PtyCstmrDomainService.java | 5 --- .../controller/UserAccountController.java | 16 +++++-- .../model/update/UpdatePasswordRQ.java | 18 ++++++++ .../account/service/UserAccountService.java | 42 ++++++++++++++++--- 5 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/model/update/UpdatePasswordRQ.java diff --git a/common/config-db/src/main/resources/application-db.yml b/common/config-db/src/main/resources/application-db.yml index e8153f2..4085bd1 100644 --- a/common/config-db/src/main/resources/application-db.yml +++ b/common/config-db/src/main/resources/application-db.yml @@ -1,7 +1,7 @@ spring: jpa: hibernate: - ddl-auto: none` + ddl-auto: none naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl datasource: diff --git a/data/pty/src/main/java/kr/co/palnet/kac/data/pty/service/PtyCstmrDomainService.java b/data/pty/src/main/java/kr/co/palnet/kac/data/pty/service/PtyCstmrDomainService.java index 2f54c45..3be34c4 100644 --- a/data/pty/src/main/java/kr/co/palnet/kac/data/pty/service/PtyCstmrDomainService.java +++ b/data/pty/src/main/java/kr/co/palnet/kac/data/pty/service/PtyCstmrDomainService.java @@ -31,11 +31,6 @@ public class PtyCstmrDomainService { public PtyCstmrBas savePtyCstmrBas(PtyCstmrBas entity) { return ptyCstmrBasRepository.save(entity); } - - public Optional findPtyCstmrDtlById(Long cstmrSno){ - return ptyCstmrDtlRepository.findById(cstmrSno); - } - public PtyCstmrDtl savePtyCstmrDtl(PtyCstmrDtl entity){ return ptyCstmrDtlRepository.save(entity); } diff --git a/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/controller/UserAccountController.java b/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/controller/UserAccountController.java index 52650e1..9b15579 100644 --- a/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/controller/UserAccountController.java +++ b/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/controller/UserAccountController.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import kr.co.palnet.kac.api.v1.user.account.model.detail.SearchUserRS; import kr.co.palnet.kac.api.v1.user.account.model.register.FormRegisterRQ; +import kr.co.palnet.kac.api.v1.user.account.model.update.UpdatePasswordRQ; import kr.co.palnet.kac.api.v1.user.account.service.UserAccountService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -40,11 +41,20 @@ public class UserAccountController { @GetMapping("/profile") @Operation(summary = "회원정보 조회", description = "회원 정보를 조회합니다.") - public ResponseEntity profile(){ + public ResponseEntity getUserInfo(){ - SearchUserRS result = userAccountService.profile(); + SearchUserRS result = userAccountService.getUserInfo(); - return ResponseEntity.status(HttpStatus.OK).body(result); + return ResponseEntity.ok().body(result); + } + + @PutMapping("/update/pswd") + @Operation(summary = "회원암호 변경", description = "회원 암호를 변경합니다.") + public ResponseEntity updatePassword(@RequestBody UpdatePasswordRQ rq){ + + userAccountService.updatePassword(rq); + + return ResponseEntity.ok().build(); } diff --git a/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/model/update/UpdatePasswordRQ.java b/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/model/update/UpdatePasswordRQ.java new file mode 100644 index 0000000..99562fe --- /dev/null +++ b/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/model/update/UpdatePasswordRQ.java @@ -0,0 +1,18 @@ +package kr.co.palnet.kac.api.v1.user.account.model.update; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class UpdatePasswordRQ { + + @Schema(description = "유저의 기존 비밀번호", example = "palnet!234") + private String userPswd; + + @Schema(description = "유저의 새로운 비밀번호", example = "palnet1234") + private String newPswd; + + @Schema(description = "유저의 새로운 비밀번호(확인)", example = "palnet1234") + private String newPswdConfirm; + +} diff --git a/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/service/UserAccountService.java b/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/service/UserAccountService.java index 48b61a5..dcc1c6c 100644 --- a/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/service/UserAccountService.java +++ b/web/api-user/src/main/java/kr/co/palnet/kac/api/v1/user/account/service/UserAccountService.java @@ -5,6 +5,7 @@ import kr.co.palnet.kac.api.v1.user.account.model.PtyCstmrDtlDTO; import kr.co.palnet.kac.api.v1.user.account.model.detail.SearchUserRS; import kr.co.palnet.kac.api.v1.user.account.model.register.FormRegisterRQ; import kr.co.palnet.kac.api.v1.user.account.model.register.AgreeTermsModel; +import kr.co.palnet.kac.api.v1.user.account.model.update.UpdatePasswordRQ; import kr.co.palnet.kac.config.security.util.SessionHelper; import kr.co.palnet.kac.core.exception.BaseErrorCode; import kr.co.palnet.kac.core.exception.BaseException; @@ -44,11 +45,8 @@ public class UserAccountService { PtyCstmrBas registeredUser = ptyCstmrDomainService.getCstmrInfoByUserId(rq.getUserId()); if(registeredUser != null) throw new BaseException(BaseErrorCode.DATA_ALREADY_EXISTS); - rq.setHpno(rq.getHpno().replaceAll("-", "")); - - //처리 1. 민감정보 암호화 처리(비밀번호 , 이름 , 휴대폰번호 , 이메일) rq.setUserPswd(passwordEncoder.encode(rq.getUserPswd())); rq.setHpno(EncryptUtil.encrypt(rq.getHpno())); @@ -164,7 +162,7 @@ public class UserAccountService { } } - public SearchUserRS profile() { + public SearchUserRS getUserInfo() { Long cstmrSno = SessionHelper.getCstmrSno(); @@ -180,8 +178,8 @@ public class UserAccountService { result.setUserId(userEntity.getUserId()); result.setBrthdyDate(userDetailEntity.getBrthdyDate()); result.setCntryCd(userDetailEntity.getCntryCd()); - result.setEmail(userDetailEntity.getEmail()); - result.setHpno(userDetailEntity.getHpno()); + result.setEmail(EncryptUtil.decrypt(userDetailEntity.getEmail())); + result.setHpno(EncryptUtil.decrypt(userDetailEntity.getHpno())); result.setUpdateDt(userDetailEntity.getUpdateDt()); result.setUpdateuserId(userDetailEntity.getUpdateUserId()); result.setCptAuthCode(userEntity.getCptAuthCode()); @@ -191,4 +189,36 @@ public class UserAccountService { throw new BaseException(BaseErrorCode.DATA_EMPTY); } } + + @Transactional + public void updatePassword(UpdatePasswordRQ rq) { + + // 1. 토큰 유저 정보 불러오기 + Long cstmrSno = SessionHelper.getCstmrSno(); + + // 2. DB의 유저정보 조회 + Optional userEntityData = ptyCstmrDomainService.findPtyCstmrBasById(cstmrSno); + + if(userEntityData.isEmpty()) throw new BaseException(BaseErrorCode.DATA_EMPTY); + + // 5. 새로운 비밀번호 검증 + if(!rq.getNewPswd().equals(rq.getNewPswdConfirm())) { + // 5.e 새로운 비밀번호 일치하지 않으면 예외처리 + throw new BaseException(BaseErrorCode.FAILED); //임시...수정필요 + } + + // 6. 새로운 패스워드 암호화 + String encryptNewPwd = passwordEncoder.encode(rq.getNewPswd()); + + PtyCstmrBas userEntity = userEntityData.get(); + + // 7. 유저 정보 저장 + userEntity.setUserPswd(encryptNewPwd); + userEntity.setPswdUpdtDt(LocalDateTime.now()); + + ptyCstmrDomainService.savePtyCstmrBas(userEntity); + } + + + }