shjung 2 anni fa
parent
commit
e0787749ac

+ 2 - 2
src/main/java/com/its/op/controller/its/database/TbIfscController.java

@@ -55,7 +55,7 @@ public class TbIfscController {
         return this.service.updateById(id, req);
     }*/
 
-    @ApiOperation(value = "정보제공구간 링크구성정보조회-개별(TB_IFSC_LINK_RLTN)", response = TbIfscLinkRltnDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "정보제공구간 링크구성정보조회-개별(TB_IFSC_RLTN_LINK)", response = TbIfscLinkRltnDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/rltn/{id}", produces = {"application/json; charset=utf8"})
     public List<TbIfscLinkRltnDto> findLinkRltnById(
             @ApiParam(name = "id", value = "정보제공구간 ID", example = "2200000488", required = true)
@@ -63,7 +63,7 @@ public class TbIfscController {
         return this.linkRltnService.findLinkRltnById(id);
     }
 
-    @ApiOperation(value = "정보제공구간 링크구성정보변경/생성-개별(TB_IFSC_LINK_RLTN)", response = TbIfscLinkRltnDto.class)
+    @ApiOperation(value = "정보제공구간 링크구성정보변경/생성-개별(TB_IFSC_RLTN_LINK)", response = TbIfscLinkRltnDto.class)
     @PutMapping(value = "/rltn/{id}", produces = {"application/json; charset=utf8"})
     public List<TbIfscLinkRltnDto> updateLinkRltn(
             @ApiParam(name = "id", value = "정보제공구간 ID", example = "2200000488", required = true)

+ 2 - 2
src/main/java/com/its/op/controller/its/database/TbRoadController.java

@@ -54,7 +54,7 @@ public class TbRoadController {
         return this.service.updateById(id, req);
     }*/
 
-    @ApiOperation(value = "도로 정보제공구간구성정보조회-개별(TB_ROAD_IFSC_RLTN)", response = TbRoadRltnIfscDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "도로 정보제공구간구성정보조회-개별(TB_ROAD_RLTN_IFSC)", response = TbRoadRltnIfscDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/rltn/{id}", produces = {"application/json; charset=utf8"})
     public List<TbRoadRltnIfscDto> findLinkRltnById(
             @ApiParam(name = "id", value = "도로 ID", example = "3200000006", required = true)
@@ -62,7 +62,7 @@ public class TbRoadController {
         return this.ifscRltnService.findIfscRltnById(id);
     }
 
-    @ApiOperation(value = "도로 정보제공구간구성정보변경/생성-개별(TB_ROAD_IFSC_RLTN)", response = TbRoadRltnIfscDto.class)
+    @ApiOperation(value = "도로 정보제공구간구성정보변경/생성-개별(TB_ROAD_RLTN_IFSC)", response = TbRoadRltnIfscDto.class)
     @PutMapping(value = "/rltn/{id}", produces = {"application/json; charset=utf8"})
     public List<TbRoadRltnIfscDto> updateIfscRltn(
             @ApiParam(name = "id", value = "도로 ID", example = "3200000006", required = true)

+ 2 - 2
src/main/java/com/its/op/controller/its/statistics/TrafficStatisticsController.java

@@ -257,7 +257,7 @@ public class TrafficStatisticsController {
     }
 
     //////////// 링크 시간대검색
-    @ApiOperation(value = "시간대검색-링크 15분(TB_LINK_15M_STAT)", response = TrafficStatDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "시간대검색-링크 15분(TB_LINK_STAT_15M)", response = TrafficStatDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/hour/link-15m", produces = {"application/json; charset=utf8"})
     public List<TrafficStatDto> findAllLink15MHour(
             @ApiParam(name = "LINK_ID", value = "링크 ID", example = "2280168600", required = true)
@@ -387,7 +387,7 @@ public class TrafficStatisticsController {
 
     //////////// 링크 지정시각검색
     //////////// TODO: 지정일은 반드시 조회조건에 포함시켜야 한다.
-    @ApiOperation(value = "지정시각검색-링크 15분(TB_LINK_15M_STAT)", response = TrafficStatDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "지정시각검색-링크 15분(TB_LINK_STAT_15M)", response = TrafficStatDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/spec/link-15m", produces = {"application/json; charset=utf8"})
     public List<TrafficStatDto> findAllLink15MSpec(
             @ApiParam(name = "LINK_ID", value = "링크 ID", example = "2280168600", required = true)

+ 2 - 2
src/main/java/com/its/op/dao/repository/its/oper/TbUserCnncHsRepository.java

@@ -30,13 +30,13 @@ public interface TbUserCnncHsRepository extends JpaRepository<TbUserCnncHs, TbUs
 
     @Transactional
     @Modifying
-    @Query(value = "insert into tb_usercnnc_hs(login_hms, user_id, logout_hms) values(:loginHms, :userId, :logoutHms)", nativeQuery = true)
+    @Query(value = "insert into tb_user_cnnc_hs(login_hms, user_id, logout_hms) values(:loginHms, :userId, :logoutHms)", nativeQuery = true)
     Integer insertData(@Param("loginHms") String loginHms, @Param("userId") String userId, @Param("logoutHms") String logoutHms);
 
     @Transactional
     @Modifying
     @Query(value =
-            "update tb_usercnnc_hs set logout_hms = :logoutHms " +
+            "update tb_user_cnnc_hs set logout_hms = :logoutHms " +
             " where login_hms = :loginHms and user_id = :userId",
             nativeQuery = true)
     Integer updateData(@Param("loginHms") String loginHms, @Param("userId") String userId, @Param("logoutHms") String logoutHms);

+ 17 - 0
src/main/java/com/its/op/dao/repository/its/oper/TbUserInfrRepository.java

@@ -26,4 +26,21 @@ public interface TbUserInfrRepository extends JpaRepository<TbUserInfr, String>,
            "   and p.gropId = (select m.gropId from TbUserInfr m " +
            "                    where m.userId = :userId)")
     List<UserGropMenuInf> findByIdMenuAthr(@Param("userId") String userId);
+
+    /**
+     * 암호화
+     * @param pswd
+     * @return
+     */
+    @Query(value = "SELECT crypto_encrypt(:pswd) AS PSWD FROM DUAL", nativeQuery = true)
+    String getCryptoEncrypt(@Param("pswd") String pswd);
+
+    /**
+     * 복호화
+     * @param pswd
+     * @return
+     */
+    @Query(value = "SELECT crypto_decrypt(:pswd) AS PSWD FROM DUAL", nativeQuery = true)
+    String getCryptoDecrypt(@Param("pswd") String pswd);
+
 }

+ 10 - 6
src/main/java/com/its/op/entity/its/oper/TbUserInfr.java

@@ -9,10 +9,7 @@ import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.io.Serializable;
 
 /**
@@ -97,6 +94,13 @@ public class TbUserInfr implements Serializable {
     @Column(name = "DEL_YN", columnDefinition = "CHAR", length = 1)
     private String delYn;
 
+    @ApiModelProperty("비밀번호2")  // Y CHAR(1)
+    @Transient
+    private String pswd;
+
+    public void setPswd(String pswd) {
+        this.pswd = pswd;
+    }
     public TbUserInfrDto toDto() {
         return TbUserInfrDto.builder()
                 .userId(this.userId)
@@ -163,8 +167,8 @@ public class TbUserInfr implements Serializable {
         this.delYn = "Y";
     }
 
-    public void updatePswd(TbUserInfrDto.TbUserPswdUpdReq req) {
-        this.pwd = req.getPwd();
+    public void updatePswd(String pwd) {
+        this.pwd = pwd;
     }
 
 }

+ 1 - 0
src/main/java/com/its/op/security/WebLoginService.java

@@ -25,6 +25,7 @@ public class WebLoginService implements UserDetailsService {
         //log.info("loadUserByUsername: {}", userId);
         Optional<TbUserInfr> optUserInfr = this.userRepo.findById(userId);
         if (optUserInfr.isPresent()) {
+            optUserInfr.get().setPswd((this.userRepo.getCryptoDecrypt(optUserInfr.get().getPwd())));
             return optUserInfr.get().toVo();
         }
         else {

+ 1 - 1
src/main/java/com/its/op/security/WebPasswordEncoder.java

@@ -35,7 +35,7 @@ public class WebPasswordEncoder implements PasswordEncoder {
 
     @Override
     public boolean upgradeEncoding(String encodedPassword) {
-        //log.error("upgradeEncoding: {}", encodedPassword);
+        log.info("upgradeEncoding: {}", encodedPassword);
         if (encodedPassword == null || encodedPassword.length() == 0) {
             log.warn("Empty encoded password");
             return false;

+ 34 - 5
src/main/java/com/its/op/service/its/oper/TbUserInfrService.java

@@ -110,18 +110,47 @@ public class TbUserInfrService {
         return result;
     }
 
+    /**
+     * 클라이언트 단에서 암호화 한값을 다시 복호화
+     * @param pswd
+     * @return
+     */
+    public String encoding(String pswd) {
+        return pswd;
+    }
+
     // 운영자 비밀번호 변경
     @Transactional
     public TbUserInfrDto updatePswdById(String id, TbUserInfrDto.TbUserPswdUpdReq req) throws NoSuchElementException {
 
         TbUserInfr entity = requireOne(id);
-        if (!entity.getPwd().equals(req.getOldPwd())) {
-            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + id);
+        /**
+         * 클라이언트 단에서 비밀번호 암호화 한 경우
+         */
+        String orgPswd = encoding(req.getPwd());
+
+        if (req.getOldPwd().equals(orgPswd)) {
+            // 비밀번호를 변경하지 않은 것임.(getPwd() => 암화화된 비밀번호가 들어가 있음)
+            throw new NoSuchElementException("현재 비빌번호와 같습니다[1]: " + id);
         }
-        if (entity.getPwd().equals(req.getPwd())) {
-            throw new NoSuchElementException("현재 비빌번호와 같습니다: " + id);
+
+        /**
+         * 입력한 비밀번호를 암호화 한다.
+         */
+        String pswd = this.repo.getCryptoEncrypt(orgPswd);
+        if (entity.getPwd().equals(pswd)) {
+            // 입력한 비밀번호 암호화한 값이 이전 비밀번호 암호화 내용과 같음
+            throw new NoSuchElementException("현재 비빌번호와 같습니다[2]: " + id);
         }
-        entity.updatePswd(req);
+
+//        if (!entity.getPwd().equals(req.getOldPwd())) {
+//            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + id);
+//        }
+//        if (entity.getPwd().equals(req.getPwd())) {
+//            throw new NoSuchElementException("현재 비빌번호와 같습니다: " + id);
+//        }
+
+        entity.updatePswd(pswd);
         this.repo.save(entity);
         return entity.toDto();
     }