From e8078d5dd009fae07ddc1105623b71636567723f Mon Sep 17 00:00:00 2001 From: hagjoon Date: Fri, 2 Sep 2022 09:55:42 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20-=20=EA=B8=B0=EC=A1=B4=20=EB=B9=84?= =?UTF-8?q?=EB=B0=80=EB=B2=88=ED=98=B8,=20=EC=83=88=20=EB=B9=84=EB=B0=80?= =?UTF-8?q?=EB=B2=88=ED=98=B8=20=EA=B2=80=EC=A6=9D=20=EB=B0=8F=20=EC=95=94?= =?UTF-8?q?=ED=98=B8=ED=99=94=20=ED=9B=84=20DB=20=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cstmr/controller/AcntCstmrController.java | 37 +++++++++-- .../acnt/cstmr/model/AcntCstmrPwModel.java | 17 +++++ .../acnt/cstmr/model/AnctCstmerRlModel.java | 4 ++ .../acnt/cstmr/service/AcntCstmrService.java | 65 ++++++++++++++++--- .../pty/PtyCstmrQueryRepository.java | 27 ++++++++ 5 files changed, 135 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrPwModel.java diff --git a/src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java b/src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java index 8e80d25..dbcb39e 100644 --- a/src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java +++ b/src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java @@ -2,9 +2,13 @@ package com.palnet.biz.api.acnt.cstmr.controller; import java.security.Principal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrGroupModel; +import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrPwModel; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -16,6 +20,7 @@ import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRqModel; import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRsModel; import com.palnet.biz.api.acnt.cstmr.model.AnctCstmerRlModel; import com.palnet.biz.api.acnt.cstmr.service.AcntCstmrService; +import com.palnet.biz.api.acnt.jwt.model.JwtUserModel; import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel; import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel; import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel; @@ -24,8 +29,11 @@ import com.palnet.biz.api.comn.response.BasicResponse; import com.palnet.biz.api.comn.response.ErrorResponse; import com.palnet.biz.api.comn.response.SuccessResponse; import com.palnet.biz.api.ctr.cntrl.service.CtrCntrlService; +import com.palnet.biz.jpa.entity.PtyCstmrBas; +import com.palnet.biz.jpa.entity.PtyCstmrDtl; import com.palnet.biz.sample.entity.SampleEntity; import com.palnet.biz.sample.service.SampleService; +import com.palnet.comn.exception.CustomException; import com.palnet.comn.model.GPHistoryModel; import lombok.RequiredArgsConstructor; @@ -60,14 +68,13 @@ public class AcntCstmrController { return ResponseEntity.ok().body(new SuccessResponse(result)); } - @GetMapping(value = "/profile/{id}") - public ResponseEntity mypage(@PathVariable Integer id){ + @GetMapping(value = "/profile/{cstmrSno}") + public ResponseEntity mypage(@PathVariable Integer cstmrSno){ List result = null; try { - result = service.list(id); - log.info("result 값 확인하기 >>>>>>>>>>>>>>>>>>>>>>>>",result); + result = service.list(cstmrSno); } catch (Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) @@ -78,7 +85,27 @@ public class AcntCstmrController { return ResponseEntity.ok().body(new SuccessResponse(result)); } - + + @PostMapping(value = "/profile/pswdupdate") + public ResponseEntity passwordupdate(@RequestBody AcntCstmrPwModel rq){ + Map resultMap = new HashMap(); + try { + PtyCstmrBas result = service.updatepas(rq); + resultMap.put("result", result); + + } catch (CustomException e) { + log.error("IGNOE : {}", e); + resultMap.put("result", false); + resultMap.put("errorCode", e.getErrorCode()); + resultMap.put("errorMessage", e.getMessage()); + return ResponseEntity.ok().body(new SuccessResponse(resultMap)); + } catch (Exception e) { + log.error("IGONE : {}", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ErrorResponse("Server Error", "-1")); + } + + return ResponseEntity.ok().body(new SuccessResponse<>(resultMap)); + } diff --git a/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrPwModel.java b/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrPwModel.java new file mode 100644 index 0000000..400f98f --- /dev/null +++ b/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrPwModel.java @@ -0,0 +1,17 @@ +package com.palnet.biz.api.acnt.cstmr.model; + +import java.util.Date; + +import lombok.Data; + +@Data +public class AcntCstmrPwModel { + + private Date pswdupdtDt; + + private String userPswd; + + private String newPswd; + + private String newPswdConfirm; +} diff --git a/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmerRlModel.java b/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmerRlModel.java index e8a94b7..69fbb38 100644 --- a/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmerRlModel.java +++ b/src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmerRlModel.java @@ -21,4 +21,8 @@ public class AnctCstmerRlModel { private String userId; + private Date updateDt; + + private String updateuserId; + } diff --git a/src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java b/src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java index ab36257..f11f8ff 100644 --- a/src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java +++ b/src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java @@ -10,6 +10,8 @@ import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrGroupModel; +import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrPwModel; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +25,8 @@ import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRqModel; import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRsModel; import com.palnet.biz.api.acnt.cstmr.model.AnctCstmerRlModel; import com.palnet.biz.api.acnt.cstmr.model.AnctCstmrTermsModel; +import com.palnet.biz.api.acnt.jwt.model.JwtUserModel; +import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.acnt.terms.model.AcntTermsRqModel; import com.palnet.biz.api.acnt.terms.model.AcntTermsRsModel; import com.palnet.biz.jpa.entity.PtyCstmrBas; @@ -66,6 +70,9 @@ public class AcntCstmrService { @Autowired private EntityManagerFactory emf; + @Autowired + private JwtTokenUtil jwtTokenUtil; + /** * * @@ -184,16 +191,54 @@ public class AcntCstmrService { } -public List list(int cstmrSno) { - - List resultList = query.list(cstmrSno); - - for(AnctCstmerRlModel model : resultList) { - model.setEmail(EncryptUtils.decrypt(model.getEmail())); - model.setMemberName(EncryptUtils.decrypt(model.getMemberName())); - model.setHpno(EncryptUtils.decrypt(model.getHpno())); + public List list(int cstmrSno) { + + List resultList = query.list(cstmrSno); + + for(AnctCstmerRlModel model : resultList) { + model.setEmail(EncryptUtils.decrypt(model.getEmail())); + model.setMemberName(EncryptUtils.decrypt(model.getMemberName())); + model.setHpno(EncryptUtils.decrypt(model.getHpno())); + } + + return resultList; } - - return resultList; + + + public PtyCstmrBas updatepas(AcntCstmrPwModel rq) { + // 1. 토큰 유저 정보 불러오기 + Integer userId = jwtTokenUtil.getCstmrSnoByToken(); + + // 2. DB의 유저정보 조회 +// AcntCstmrRqModel result = query.findpassword(userId); + PtyCstmrBas userEntity = ptyCstmrBasRepository.findById(userId).orElse(null); + + // 3. RQ의 유저 패스워드를 암호화 처리 + rq.setUserPswd(EncryptUtils.sha256Encrypt(rq.getUserPswd())); + + // 4. RQ의 암호화한 패스워드와 DB에서 조회한 유저의 패스워드랑 비교 + if(!rq.getUserPswd().equals(userEntity.getUserPswd())) { + log.info("RQ 비밀번호 : {}, DB 비밀번호 : {}", rq.getUserPswd(), userEntity.getUserPswd()); + + // 4.e 일치하지 않으면 예외처리 (패스워드 불일치) + throw new CustomException(ErrorCode.FAIL); // 임시,, 수정해야함 + } + + // 5. 새로운 비밀번호 검증 + if(!rq.getNewPswd().equals(rq.getNewPswdConfirm())) { + // 5.e 새로운 비밀번호 일치하지 않으면 예외처리 + throw new CustomException(ErrorCode.FAIL); //임시...수정필요 + } + + // 6. 새로운 패스워드 암호화 + String encryptNewPwd = EncryptUtils.sha256Encrypt(rq.getNewPswd()); + + // 7. 유저 정보 저장 + userEntity.setUserPswd(encryptNewPwd); + userEntity.setPswdUpdtDt(DateUtils.nowDate()); + + PtyCstmrBas updateUserEntity = ptyCstmrBasRepository.save(userEntity); + + return updateUserEntity; } } diff --git a/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java b/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java index 401176a..a65f65a 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java @@ -1,5 +1,7 @@ package com.palnet.biz.jpa.repository.pty; +import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrPwModel; +import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRqModel; import com.palnet.biz.api.acnt.cstmr.model.AnctCstmerRlModel; import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel; import com.palnet.biz.jpa.entity.*; @@ -197,4 +199,29 @@ public class PtyCstmrQueryRepository{ return list; } + + + + public AcntCstmrRqModel findpassword(String userId) { + QPtyCstmrBas basEntity = QPtyCstmrBas.ptyCstmrBas; + + BooleanBuilder builder = new BooleanBuilder(); + builder.and(basEntity.userId.eq(userId)); + + PtyCstmrBas entity = query.select(basEntity) + .from(basEntity) + .where(builder) + .fetchFirst(); + + if(entity != null) { + JwtUserModel model = new JwtUserModel(); + model.setCstmrSno(entity.getCstmrSno()); + model.setUserPswd(entity.getUserPswd()); + } + + return null; + } + + + }