

250613 김혜민 테이블 및 컬럼 행안부 표준화로 변경
@6b93ddc3add0537702f089380ca78408398c8225
--- src/main/java/com/takensoft/cms/accesCtrl/service/Impl/SystemAccesCtrlServiceImpl.java
+++ src/main/java/com/takensoft/cms/accesCtrl/service/Impl/SystemAccesCtrlServiceImpl.java
... | ... | @@ -90,7 +90,7 @@ |
90 | 90 |
private boolean matches(List<AccesCtrlVO> accesCtrlList, String path) { |
91 | 91 |
AntPathMatcher matcher = new AntPathMatcher(); |
92 | 92 |
for(AccesCtrlVO vo : accesCtrlList) { |
93 |
- if(matcher.match(vo.getCntrlCrs(), path)) { |
|
93 |
+ if(matcher.match(vo.getCntrlPath(), path)) { |
|
94 | 94 |
return "permit".equals(vo.getCntrlType()); // 접근 허용일 경우 true, 그 외 false |
95 | 95 |
} |
96 | 96 |
} |
--- src/main/java/com/takensoft/cms/accesCtrl/vo/AccesCtrlVO.java
+++ src/main/java/com/takensoft/cms/accesCtrl/vo/AccesCtrlVO.java
... | ... | @@ -28,7 +28,7 @@ |
28 | 28 |
private String cntrlType; // 제어 유형 ( permit: 허용, limit: 제한 ) |
29 | 29 |
private String cntrlTypeNm; // 제어 유형명 |
30 | 30 |
private String cntrlIp; // 제어 아이피 |
31 |
- private String cntrlCrs; // 제어 경로 |
|
31 |
+ private String cntrlPath; // 제어 경로 |
|
32 | 32 |
private String useYn; // 사용여부 |
33 | 33 |
private String rgtr; // 등록자 |
34 | 34 |
private String regDt; // 등록일 |
--- src/main/java/com/takensoft/cms/bbs/dao/WordMngDAO.java
+++ src/main/java/com/takensoft/cms/bbs/dao/WordMngDAO.java
... | ... | @@ -44,12 +44,12 @@ |
44 | 44 |
public int findAllCnt(Pagination pagination); |
45 | 45 |
|
46 | 46 |
/** |
47 |
- * @param cntrlNmId - 금지어 아이디 |
|
47 |
+ * @param phwrdId - 금지어 아이디 |
|
48 | 48 |
* @return int - 금지어 삭제 결과 |
49 | 49 |
* |
50 | 50 |
* 금지어 삭제 |
51 | 51 |
*/ |
52 |
- public int deleteWords(int cntrlNmId); |
|
52 |
+ public int deleteWords(int phwrdId); |
|
53 | 53 |
|
54 | 54 |
/** |
55 | 55 |
* @return List<String> - 금지어 목록 |
--- src/main/java/com/takensoft/cms/bbs/service/Impl/BbsCnServiceImpl.java
+++ src/main/java/com/takensoft/cms/bbs/service/Impl/BbsCnServiceImpl.java
... | ... | @@ -122,15 +122,15 @@ |
122 | 122 |
// if (bbsCn.getBbsNm() != null && !bbsCn.getBbsNm().isEmpty()) { |
123 | 123 |
String bbsNm = bbsCn.getBbsNm(); |
124 | 124 |
String content = bbsCn.getBbsCn(); |
125 |
- String bbsCnText = Jsoup.parse(content).text(); // HTML 태그 제거 |
|
126 |
- bbsCn.setBbsCnText(bbsCnText); // HTML 태그 제거된 내용 저장 |
|
125 |
+ String bbsCnTxt = Jsoup.parse(content).text(); // HTML 태그 제거 |
|
126 |
+ bbsCn.setBbsCnTxt(bbsCnTxt); // HTML 태그 제거된 내용 저장 |
|
127 | 127 |
for (String word : wordList) { |
128 | 128 |
// 제목에 금지어가 포함되어있는가? |
129 | 129 |
if (bbsNm != null && !bbsNm.isEmpty() && bbsNm.contains(word)) { |
130 | 130 |
throw new CustomPrhibtWordException("제목에 금지어가 포함되어있습니다.", word); |
131 | 131 |
} |
132 | 132 |
// 내용에 금지어가 포함되어있는가? |
133 |
- if (bbsCnText != null && bbsCnText.contains(word)) { |
|
133 |
+ if (bbsCnTxt != null && bbsCnTxt.contains(word)) { |
|
134 | 134 |
throw new CustomPrhibtWordException("내용에 금지어가 포함되어있습니다.", word); |
135 | 135 |
} |
136 | 136 |
} |
... | ... | @@ -347,8 +347,8 @@ |
347 | 347 |
// 금지어 포함 여부 체크 |
348 | 348 |
String bbsNm = (params.get("bbsNm") != null) ? params.get("bbsNm").toString() : null; |
349 | 349 |
String content = params.get("bbsCn").toString(); |
350 |
- String bbsCnText = Jsoup.parse(content).text(); // HTML 태그 제거 |
|
351 |
- params.put("bbsCnText", bbsCnText); // HTML 태그 제거된 내용 저장 |
|
350 |
+ String bbsCnTxt = Jsoup.parse(content).text(); // HTML 태그 제거 |
|
351 |
+ params.put("bbsCnTxt", bbsCnTxt); // HTML 태그 제거된 내용 저장 |
|
352 | 352 |
// if (bbsNm != null && !bbsNm.isEmpty()) { |
353 | 353 |
for (String word : wordList) { |
354 | 354 |
// 제목에 금지어가 포함되어있는가? |
... | ... | @@ -356,7 +356,7 @@ |
356 | 356 |
throw new CustomPrhibtWordException("제목에 금지어가 포함되어있습니다.", word); |
357 | 357 |
} |
358 | 358 |
// 내용에 금지어가 포함되어있는가? |
359 |
- if (bbsCnText != null && bbsCnText.contains(word)) { |
|
359 |
+ if (bbsCnTxt != null && bbsCnTxt.contains(word)) { |
|
360 | 360 |
throw new CustomPrhibtWordException("내용에 금지어가 포함되어있습니다.", word); |
361 | 361 |
} |
362 | 362 |
} |
... | ... | @@ -612,10 +612,11 @@ |
612 | 612 |
HashMap<String, Object> result = new HashMap<>(); |
613 | 613 |
// 등록된 토큰에서 사용자 정보 조회 |
614 | 614 |
String writer = verificationService.getCurrentUserId(); |
615 |
+ System.out.println("writer ::::::작성자어디갔노" + writer); |
|
615 | 616 |
if (writer == null || writer.isEmpty()) { |
616 | 617 |
throw new CustomNotFoundException("사용자 정보 조회에 실패했습니다."); |
617 | 618 |
} |
618 |
- bbsCnVO.setAnswer(writer); |
|
619 |
+ bbsCnVO.setAnswr(writer); |
|
619 | 620 |
|
620 | 621 |
// 답변 금지어 포함 여부 체크 |
621 | 622 |
List<String> wordList = wordMngDAO.findWordList(); |
... | ... | @@ -667,7 +668,7 @@ |
667 | 668 |
if (writer == null || writer.isEmpty()) { |
668 | 669 |
throw new CustomNotFoundException("사용자 정보 조회에 실패했습니다."); |
669 | 670 |
} |
670 |
- bbsCnVO.setAnswer(writer); |
|
671 |
+ bbsCnVO.setAnswr(writer); |
|
671 | 672 |
|
672 | 673 |
// 답변 금지어 포함 여부 체크 |
673 | 674 |
List<String> wordList = wordMngDAO.findWordList(); |
... | ... | @@ -713,7 +714,7 @@ |
713 | 714 |
if(writer == null || writer.isEmpty()){ |
714 | 715 |
throw new CustomNotFoundException("사용자 정보 조회에 실패했습니다."); |
715 | 716 |
} |
716 |
- bbsCnVO.setAnswer(writer); |
|
717 |
+ bbsCnVO.setAnswr(writer); |
|
717 | 718 |
|
718 | 719 |
bbsCnVO.setAnsCn(null); |
719 | 720 |
bbsCnVO.setAnsStts("N"); |
--- src/main/java/com/takensoft/cms/bbs/service/Impl/BbsMngServiceImpl.java
+++ src/main/java/com/takensoft/cms/bbs/service/Impl/BbsMngServiceImpl.java
... | ... | @@ -126,7 +126,7 @@ |
126 | 126 |
menuVO.setUpMenuId("MENU_000000000000027"); // 상위메뉴아이디(게시판 내용 메뉴 아이디) |
127 | 127 |
menuVO.setMenuNm(bbsMngVO.getBbsNm()); // 메뉴명 |
128 | 128 |
menuVO.setMenuType("bbs"); // 메뉴타입 |
129 |
- menuVO.setMenuTypeCtgry(bbsMngVO.getBbsMngId()); // 메뉴타입항목(게시판 관리 아이디) |
|
129 |
+ menuVO.setMenuTypeArtcl(bbsMngVO.getBbsMngId()); // 메뉴타입항목(게시판 관리 아이디) |
|
130 | 130 |
menuVO.setLinkType("0"); // 링크유형(현재창) |
131 | 131 |
menuVO.setDgstfnExmnUseYn("Y"); // 만족도조사사용여부(노출) |
132 | 132 |
menuVO.setMenuExpsrYn("Y"); // 메뉴노출여부(노출) |
... | ... | @@ -279,7 +279,7 @@ |
279 | 279 |
/** 메뉴명 변경 프로세스 */ |
280 | 280 |
// 메뉴 조회 |
281 | 281 |
MenuVO menuVO = new MenuVO(); |
282 |
- menuVO.setMenuTypeCtgry(bbsMngVO.getBbsMngId()); |
|
282 |
+ menuVO.setMenuTypeArtcl(bbsMngVO.getBbsMngId()); |
|
283 | 283 |
List<MenuVO> menuList = menuService.findExceptTopMenu(menuVO); |
284 | 284 |
if(menuList != null && !menuList.isEmpty()) { |
285 | 285 |
// 메뉴명 변경 |
... | ... | @@ -307,12 +307,12 @@ |
307 | 307 |
saveBbsRouterProc(bbsMngVO); |
308 | 308 |
} |
309 | 309 |
// 게시판 페이지 유형이 변경된 경우 |
310 |
- if (!bbsMng.getCd().equals(bbsMngVO.getCd())) { |
|
310 |
+ if (!bbsMng.getPageType().equals(bbsMngVO.getPageType())) { |
|
311 | 311 |
// 게시판 라우터 페이지 경로 변경 |
312 | 312 |
List<BbsRouterVO> bbsRouterList = bbsMngDAO.findAllBbsRouter(bbsMngVO.getBbsMngId()); |
313 | 313 |
for (BbsRouterVO route : bbsRouterList) { |
314 |
- String pageCrs = route.getPageCrs().replace(bbsMng.getCd(), bbsMngVO.getCd()); |
|
315 |
- route.setPageCrs(pageCrs); |
|
314 |
+ String userPagePath = route.getUserPagePath().replace(bbsMng.getPageType(), bbsMngVO.getPageType()); |
|
315 |
+ route.setUserPagePath(userPagePath); |
|
316 | 316 |
int crsResult = bbsMngDAO.updateCrs(route); |
317 | 317 |
if (crsResult == 0) { |
318 | 318 |
throw new CustomUpdateFailException("게시판 라우터 페이지 경로 수정에 실패했습니다."); |
... | ... | @@ -363,7 +363,7 @@ |
363 | 363 |
|
364 | 364 |
// 메뉴에서도 삭제 처리 |
365 | 365 |
MenuVO menuVO = new MenuVO(); |
366 |
- menuVO.setMenuTypeCtgry(bbsMngVO.getBbsMngId()); |
|
366 |
+ menuVO.setMenuTypeArtcl(bbsMngVO.getBbsMngId()); |
|
367 | 367 |
menuVO.setUseYn("N"); |
368 | 368 |
menuVO.setMdfr(writer); |
369 | 369 |
int bbsMngMenuResult = menuService.bbsMngMenuDelete(menuVO); |
... | ... | @@ -487,18 +487,18 @@ |
487 | 487 |
String bbsRouterId = bbsRouterIdgn.getNextStringId(); |
488 | 488 |
|
489 | 489 |
// 페이지 경로에 게시판 관리 아이디 추가 |
490 |
- String pageCrs = vo.getPageCrs().replace("change", bbsMngVO.getBbsMngId()); |
|
491 |
- String userPageCrs = pageCrs.replace("cmmn", bbsMngVO.getCd()); |
|
492 |
- String adminPageCrs = pageCrs.replace("cmmn", "adm"); |
|
493 |
- String compnCrs = vo.getCompnCrs(); |
|
490 |
+ String userPagePath = vo.getUserPagePath().replace("change", bbsMngVO.getBbsMngId()); |
|
491 |
+ String userPageCrs = userPagePath.replace("cmmn", bbsMngVO.getPageType()); |
|
492 |
+ String adminPageCrs = userPagePath.replace("cmmn", "adm"); |
|
493 |
+ String compnPath = vo.getCompnPath(); |
|
494 | 494 |
|
495 | 495 |
bbsRouterVO.setBbsRouterId(bbsRouterId); |
496 | 496 |
bbsRouterVO.setBbsMngId(bbsMngVO.getBbsMngId()); |
497 | 497 |
bbsRouterVO.setBbsKornNm(vo.getBbsTypeKornNm()); |
498 | 498 |
bbsRouterVO.setBbsEngNm(vo.getBbsTypeEngNm() + "_" + bbsMngVO.getBbsMngId()); |
499 |
- bbsRouterVO.setPageCrs(userPageCrs); |
|
500 |
- bbsRouterVO.setMngrPageCrs(adminPageCrs); |
|
501 |
- bbsRouterVO.setCompnCrs(compnCrs); |
|
499 |
+ bbsRouterVO.setUserPagePath(userPageCrs); |
|
500 |
+ bbsRouterVO.setMngrPagePath(adminPageCrs); |
|
501 |
+ bbsRouterVO.setCompnPath(compnPath); |
|
502 | 502 |
bbsRouterVO.setExpsrYn(vo.getExpsrYn()); |
503 | 503 |
|
504 | 504 |
// 게시판 라우터 등록 |
--- src/main/java/com/takensoft/cms/bbs/service/Impl/WordMngServiceImpl.java
+++ src/main/java/com/takensoft/cms/bbs/service/Impl/WordMngServiceImpl.java
... | ... | @@ -59,7 +59,7 @@ |
59 | 59 |
// 금지어 등록 |
60 | 60 |
for (String word : wordsArr) { |
61 | 61 |
WordMngVO wordMngVO = new WordMngVO(); |
62 |
- wordMngVO.setCntrlNm(word); |
|
62 |
+ wordMngVO.setPhwrd(word); |
|
63 | 63 |
wordMngVO.setRgtr(writer); |
64 | 64 |
int result = wordMngDAO.saveWords(wordMngVO); |
65 | 65 |
if(result == 0){ |
... | ... | @@ -124,8 +124,8 @@ |
124 | 124 |
List<Integer> wordsArr = (List<Integer>) params.get("wordsArr"); |
125 | 125 |
|
126 | 126 |
// 금지어 id로 삭제 |
127 |
- for (int cntrlNmId : wordsArr) { |
|
128 |
- int result = wordMngDAO.deleteWords(cntrlNmId); |
|
127 |
+ for (int phwrdId : wordsArr) { |
|
128 |
+ int result = wordMngDAO.deleteWords(phwrdId); |
|
129 | 129 |
if(result == 0){ |
130 | 130 |
throw new CustomDeleteFailException("금지어 삭제에 실패했습니다."); |
131 | 131 |
} |
--- src/main/java/com/takensoft/cms/bbs/vo/BbsCnVO.java
+++ src/main/java/com/takensoft/cms/bbs/vo/BbsCnVO.java
... | ... | @@ -44,10 +44,10 @@ |
44 | 44 |
private String mdfcnDt; // 수정일 |
45 | 45 |
private String mdfrNm; // 수정자 명 (화면 표출 용도) |
46 | 46 |
private String nowNtcYn; // 현재 공지 여부 |
47 |
- private String answer; // 답변자 |
|
47 |
+ private String answr; // 답변자 |
|
48 | 48 |
private String answerNm; // 답변자명 |
49 | 49 |
private String ansDt; // 답변일자 |
50 |
- private String bbsCnText; // 게시판 내용(텍스트) |
|
50 |
+ private String bbsCnTxt; // 게시판 내용(텍스트) |
|
51 | 51 |
|
52 | 52 |
public BbsCnVO() { |
53 | 53 |
this.bbsCn = ""; |
--- src/main/java/com/takensoft/cms/bbs/vo/BbsMngVO.java
+++ src/main/java/com/takensoft/cms/bbs/vo/BbsMngVO.java
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 |
private String bbsTypeId; // 게시판유형아이디 |
23 | 23 |
private BbsTypeMngVO bbsType; // 게시판유형 (사용 안함) |
24 | 24 |
private String bbsNm; // 게시판명 |
25 |
- private String bbsUpInfo; // 게시판상단정보 |
|
25 |
+ private String bbsUpendInfo; // 게시판상단정보 |
|
26 | 26 |
private String bbsExpln; // 게시판설명 |
27 | 27 |
private int artclCnt; // 목록수 |
28 | 28 |
private String atchFileUseYn; // 첨부파일 사용여부 ( Y : 사용, N : 미사용 ) |
... | ... | @@ -38,7 +38,7 @@ |
38 | 38 |
private String regDt; // 등록일 |
39 | 39 |
private String mdfr; // 수정자 |
40 | 40 |
private String mdfcnDt; // 수정일 |
41 |
- private String cd; // 페이지 유형 |
|
41 |
+ private String pageType; // 페이지 유형 |
|
42 | 42 |
private int bbsCnCnt; // 게시물 수 |
43 | 43 |
private String bbsTypeKornNm; // 게시판유형한글명 |
44 | 44 |
|
--- src/main/java/com/takensoft/cms/bbs/vo/BbsRouterVO.java
+++ src/main/java/com/takensoft/cms/bbs/vo/BbsRouterVO.java
... | ... | @@ -19,9 +19,9 @@ |
19 | 19 |
private String bbsMngId; // 게시판 관리 아이디 |
20 | 20 |
private String bbsKornNm; // 게시판 한글명 |
21 | 21 |
private String bbsEngNm; // 게시판 영문명 |
22 |
- private String pageCrs; // 사용자 페이지 경로 |
|
23 |
- private String mngrPageCrs; // 관리자 페이지 경로 |
|
24 |
- private String compnCrs; // 컴포넌트 경로 |
|
22 |
+ private String userPagePath; // 사용자 페이지 경로 |
|
23 |
+ private String mngrPagePath; // 관리자 페이지 경로 |
|
24 |
+ private String compnPath; // 컴포넌트 경로 |
|
25 | 25 |
private String expsrYn; // 노출여부 ( Y : 노출, N : 미노출 ) |
26 | 26 |
private String useYn; // 사용여부 ( Y : 사용, N : 미사용 ) |
27 | 27 |
private String regDt; // 등록일 |
--- src/main/java/com/takensoft/cms/bbs/vo/BbsTypeMngVO.java
+++ src/main/java/com/takensoft/cms/bbs/vo/BbsTypeMngVO.java
... | ... | @@ -19,8 +19,8 @@ |
19 | 19 |
private String bbsTypeKornNm; // 게시판유형한글명 |
20 | 20 |
private String bbsTypeEngNm; // 게시판유형영문명 |
21 | 21 |
private String bbsType; // 게시판유형 |
22 |
- private String pageCrs; // 페이지경로 |
|
23 |
- private String compnCrs; // 컴포넌트경로 |
|
22 |
+ private String userPagePath; // 페이지경로 |
|
23 |
+ private String compnPath; // 컴포넌트경로 |
|
24 | 24 |
private String expsrYn; // 노출여부 ( Y : 노출, N : 미노출 ) |
25 | 25 |
private String useYn; // 사용여부 ( Y : 사용, N : 미사용 ) |
26 | 26 |
private String rgtr; // 등록자 |
--- src/main/java/com/takensoft/cms/bbs/vo/WordMngVO.java
+++ src/main/java/com/takensoft/cms/bbs/vo/WordMngVO.java
... | ... | @@ -17,8 +17,8 @@ |
17 | 17 |
@Getter |
18 | 18 |
public class WordMngVO { |
19 | 19 |
|
20 |
- private int cntrlNmId; // 금지어 관리 번호 |
|
21 |
- private String cntrlNm; // 금지어 |
|
20 |
+ private int phwrdId; // 금지어 관리 번호 |
|
21 |
+ private String phwrd; // 금지어 |
|
22 | 22 |
private String rgtrNm; // 등록자명 |
23 | 23 |
private String rgtr; // 등록자 아이디 |
24 | 24 |
private String regDt; // 등록일 |
--- src/main/java/com/takensoft/cms/cntxtPth/service/Impl/CntxtPthServiceImpl.java
+++ src/main/java/com/takensoft/cms/cntxtPth/service/Impl/CntxtPthServiceImpl.java
... | ... | @@ -80,7 +80,7 @@ |
80 | 80 |
} |
81 | 81 |
cntxtPthVO.setRgtr(writer); |
82 | 82 |
|
83 |
- cntxtPthVO.setCntxtPthId(cntxtPthIdgn.getNextStringId()); // 컨텍스트 패스 아이디 생성 |
|
83 |
+ cntxtPthVO.setCntxtPathId(cntxtPthIdgn.getNextStringId()); // 컨텍스트 패스 아이디 생성 |
|
84 | 84 |
int result = cntxtPthDAO.save(cntxtPthVO); |
85 | 85 |
if(result == 0) { |
86 | 86 |
throw new CustomInsertFailException("컨텍스트 패스 등록에 실패했습니다."); |
--- src/main/java/com/takensoft/cms/cntxtPth/vo/CntxtPthVO.java
+++ src/main/java/com/takensoft/cms/cntxtPth/vo/CntxtPthVO.java
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 |
@AllArgsConstructor |
22 | 22 |
public class CntxtPthVO { |
23 | 23 |
|
24 |
- private String cntxtPthId; // 컨텍스트 패스 아이디 |
|
24 |
+ private String cntxtPathId; // 컨텍스트 패스 아이디 |
|
25 | 25 |
private String path; // 경로 |
26 | 26 |
private String rgtr; // 등록자 |
27 | 27 |
private String rgtrNm; // 등록자명 |
--- src/main/java/com/takensoft/cms/contsType/dao/ContsTypeDAO.java
+++ src/main/java/com/takensoft/cms/contsType/dao/ContsTypeDAO.java
... | ... | @@ -34,12 +34,12 @@ |
34 | 34 |
boolean findByCheckContsEngNm(String contsEngNm); |
35 | 35 |
|
36 | 36 |
/** |
37 |
- * @param compnCrs - 컴포넌트 URL |
|
37 |
+ * @param compnPath - 컴포넌트 URL |
|
38 | 38 |
* @return boolean - 컴포넌트 URL 중복 검사 결과 |
39 | 39 |
* |
40 | 40 |
* 컴포넌트 URL 중복 확인 |
41 | 41 |
*/ |
42 |
- boolean findByCheckCompnCrs(String compnCrs); |
|
42 |
+ boolean findByCheckCompnCrs(String compnPath); |
|
43 | 43 |
|
44 | 44 |
/** |
45 | 45 |
* @param contsTypeVO - 컨텐츠 유형 관리 객체 |
--- src/main/java/com/takensoft/cms/contsType/service/ContsTypeService.java
+++ src/main/java/com/takensoft/cms/contsType/service/ContsTypeService.java
... | ... | @@ -30,12 +30,12 @@ |
30 | 30 |
boolean findByCheckContsEngNm(String contsEngNm); |
31 | 31 |
|
32 | 32 |
/** |
33 |
- * @param compnCrs - 컴포넌트 URL |
|
33 |
+ * @param compnPath - 컴포넌트 URL |
|
34 | 34 |
* @return boolean - 컴포넌트 URL 중복 검사 결과 |
35 | 35 |
* |
36 | 36 |
* 컴포넌트 URL 중복 검사 |
37 | 37 |
*/ |
38 |
- boolean findByCheckCompnCrs(String compnCrs); |
|
38 |
+ boolean findByCheckCompnCrs(String compnPath); |
|
39 | 39 |
|
40 | 40 |
/** |
41 | 41 |
* @param contsTypeVO - 콘텐츠 유형 VO |
--- src/main/java/com/takensoft/cms/contsType/service/Impl/ContsTypeServiceImpl.java
+++ src/main/java/com/takensoft/cms/contsType/service/Impl/ContsTypeServiceImpl.java
... | ... | @@ -78,7 +78,7 @@ |
78 | 78 |
} |
79 | 79 |
|
80 | 80 |
/** |
81 |
- * @param compnCrs - 컴포넌트 URL |
|
81 |
+ * @param compnPath - 컴포넌트 URL |
|
82 | 82 |
* @return boolean - 컴포넌트 URL 중복 여부 |
83 | 83 |
* @throws CustomDataDuplicationException - 데이터 중복 예외 발생 시 |
84 | 84 |
* @throws DataAccessException - db 관련 예외 발생 시 |
... | ... | @@ -87,9 +87,9 @@ |
87 | 87 |
* 컴포넌트 URL 중복 검사 |
88 | 88 |
*/ |
89 | 89 |
@Override |
90 |
- public boolean findByCheckCompnCrs(String compnCrs) { |
|
90 |
+ public boolean findByCheckCompnCrs(String compnPath) { |
|
91 | 91 |
try { |
92 |
- boolean result = contsTypeDAO.findByCheckCompnCrs(compnCrs); |
|
92 |
+ boolean result = contsTypeDAO.findByCheckCompnCrs(compnPath); |
|
93 | 93 |
if (result) { |
94 | 94 |
throw new CustomDataDuplicationException("이미 사용 중인 컴포넌트 URL입니다.", "Y"); |
95 | 95 |
} |
... | ... | @@ -141,7 +141,7 @@ |
141 | 141 |
// menuVO.setUpMenuId("MENU_000000000000017"); // 상위메뉴아이디(콘텐츠 관리 메뉴 아이디) |
142 | 142 |
// menuVO.setMenuNm(contsTypeVO.getContsKornNm()); // 메뉴명 |
143 | 143 |
// menuVO.setMenuType("conts"); // 메뉴타입 |
144 |
-// menuVO.setMenuTypeCtgry(contsId); // 메뉴타입항목(콘텐츠 유형 아이디) |
|
144 |
+// menuVO.setMenuTypeArtcl(contsId); // 메뉴타입항목(콘텐츠 유형 아이디) |
|
145 | 145 |
// menuVO.setLinkType("0"); // 링크유형(현재창) |
146 | 146 |
// menuVO.setDgstfnExmnUseYn("N"); // 만족도조사사용여부(미노출) |
147 | 147 |
// menuVO.setMenuExpsrYn(contsTypeVO.getExpsrYn()); // 메뉴노출여부(노출) |
... | ... | @@ -344,7 +344,7 @@ |
344 | 344 |
private List<ContsAuthrtVO> groupAndShareAuth(List<ContsAuthrtVO> routes) { |
345 | 345 |
// 경로의 특정 기준점으로 라우터를 그룹화 |
346 | 346 |
Map<String, List<ContsAuthrtVO>> groupedRoutes = routes.stream() |
347 |
- .collect(Collectors.groupingBy(route -> route.getPageCrs().substring(0, route.getPageCrs().lastIndexOf('/')))); // 마지막 슬래시까지 포함된 경로 추출 |
|
347 |
+ .collect(Collectors.groupingBy(route -> route.getUserPagePath().substring(0, route.getUserPagePath().lastIndexOf('/')))); // 마지막 슬래시까지 포함된 경로 추출 |
|
348 | 348 |
|
349 | 349 |
/* key */ |
350 | 350 |
// Iterator<String> keys = groupedRoutes.keySet().iterator(); |
--- src/main/java/com/takensoft/cms/contsType/vo/ContsAuthrtVO.java
+++ src/main/java/com/takensoft/cms/contsType/vo/ContsAuthrtVO.java
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 |
private String menuId; // 메뉴 아이디 |
30 | 30 |
private String contsKornNm; // 콘텐츠 한글명 |
31 | 31 |
private String contsEngNm; // 콘텐츠 영문명 |
32 |
- private String pageCrs; // 페이지 경로 |
|
33 |
- private String compnCrs; // 컴포넌트 경로 |
|
32 |
+ private String userPagePath; // 페이지 경로 |
|
33 |
+ private String compnPath; // 컴포넌트 경로 |
|
34 | 34 |
private List<MenuAuthorVO> authrtList = new ArrayList<MenuAuthorVO>(); // 권한 목록 |
35 | 35 |
} |
--- src/main/java/com/takensoft/cms/contsType/vo/ContsTypeVO.java
+++ src/main/java/com/takensoft/cms/contsType/vo/ContsTypeVO.java
... | ... | @@ -23,9 +23,9 @@ |
23 | 23 |
private String contsId; // 콘텐츠 아이디 |
24 | 24 |
private String contsKornNm; // 콘텐츠 한글명 |
25 | 25 |
private String contsEngNm; // 콘텐츠 영문명 |
26 |
- private String pageCrs; // 사용자 페이지 경로 |
|
27 |
- private String mngrPageCrs; // 관리자 페이지 경로 |
|
28 |
- private String compnCrs; // 컴포넌트 경로 |
|
26 |
+ private String userPagePath; // 사용자 페이지 경로 |
|
27 |
+ private String mngrPagePath; // 관리자 페이지 경로 |
|
28 |
+ private String compnPath; // 컴포넌트 경로 |
|
29 | 29 |
private String expsrYn; // 노출여부 |
30 | 30 |
private String useYn; // 사용여부 |
31 | 31 |
private String sysPvsnYn; // 시스템 제공 여부 |
--- src/main/java/com/takensoft/cms/contsType/web/ContsTypeController.java
+++ src/main/java/com/takensoft/cms/contsType/web/ContsTypeController.java
... | ... | @@ -47,7 +47,7 @@ |
47 | 47 |
// 콘텐츠 영문명 중복 검사 |
48 | 48 |
boolean isEngNmExist = contsTypeService.findByCheckContsEngNm(contsTypeVO.getContsEngNm()); |
49 | 49 |
// 컴포넌트 URL 중복 검사 |
50 |
- boolean isCompnCrsExist = contsTypeService.findByCheckCompnCrs(contsTypeVO.getCompnCrs()); |
|
50 |
+ boolean isCompnCrsExist = contsTypeService.findByCheckCompnCrs(contsTypeVO.getCompnPath()); |
|
51 | 51 |
|
52 | 52 |
// 콘텐츠 유형 등록 |
53 | 53 |
HashMap<String, Object> result = contsTypeService.contsSave(contsTypeVO); |
... | ... | @@ -66,7 +66,7 @@ |
66 | 66 |
// 콘텐츠 영문명 중복 검사 |
67 | 67 |
boolean isEngNmExist = contsTypeService.findByCheckContsEngNm(contsTypeVO.getContsEngNm()); |
68 | 68 |
// 컴포넌트 URL 중복 검사 |
69 |
- boolean isCompnCrsExist = contsTypeService.findByCheckCompnCrs(contsTypeVO.getCompnCrs()); |
|
69 |
+ boolean isCompnCrsExist = contsTypeService.findByCheckCompnCrs(contsTypeVO.getCompnPath()); |
|
70 | 70 |
|
71 | 71 |
// 콘텐츠 유형 수정 처리 |
72 | 72 |
int result = contsTypeService.contsUpdate(contsTypeVO); |
--- src/main/java/com/takensoft/cms/loginPolicy/service/impl/Email2ndAuthServiceImpl.java
+++ src/main/java/com/takensoft/cms/loginPolicy/service/impl/Email2ndAuthServiceImpl.java
... | ... | @@ -78,7 +78,7 @@ |
78 | 78 |
} |
79 | 79 |
email2ndAuthVO.setRgtr(writer); |
80 | 80 |
|
81 |
- email2ndAuthVO.setEml2ndAuthId(eml2ndAuthIdgn.getNextStringId()); // ID 자동 생성 |
|
81 |
+ email2ndAuthVO.setEmlScdCeptId(eml2ndAuthIdgn.getNextStringId()); // ID 자동 생성 |
|
82 | 82 |
int result = email2ndAuthDAO.save(email2ndAuthVO); |
83 | 83 |
if(result == 0) { |
84 | 84 |
throw new CustomInsertFailException("이메일 2차 인증 등록에 실패했습니다."); |
--- src/main/java/com/takensoft/cms/loginPolicy/service/impl/LoginModeServiceImpl.java
+++ src/main/java/com/takensoft/cms/loginPolicy/service/impl/LoginModeServiceImpl.java
... | ... | @@ -45,7 +45,7 @@ |
45 | 45 |
*/ |
46 | 46 |
@Override |
47 | 47 |
public int insertLoginMode(LoginModeVO loginModeVO) { |
48 |
- loginModeVO.setLgnModeId(loginModeIdgen.getNextStringId()); // ID 자동 생성 |
|
48 |
+ loginModeVO.setLgnMthId(loginModeIdgen.getNextStringId()); // ID 자동 생성 |
|
49 | 49 |
return loginModeDAO.insertLoginMode(loginModeVO); |
50 | 50 |
} |
51 | 51 |
|
--- src/main/java/com/takensoft/cms/loginPolicy/service/impl/LoginPolicyServiceImpl.java
+++ src/main/java/com/takensoft/cms/loginPolicy/service/impl/LoginPolicyServiceImpl.java
... | ... | @@ -51,7 +51,7 @@ |
51 | 51 |
*/ |
52 | 52 |
@Override |
53 | 53 |
public int insertPolicy(LoginPolicyVO loginPolicyVO) { |
54 |
- loginPolicyVO.setPolicyId(loginPolicyIdgn.getNextStringId()); // ID 자동 생성 |
|
54 |
+ loginPolicyVO.setPlcyId(loginPolicyIdgn.getNextStringId()); // ID 자동 생성 |
|
55 | 55 |
return loginPolicyDAO.insertPolicy(loginPolicyVO); |
56 | 56 |
} |
57 | 57 |
|
--- src/main/java/com/takensoft/cms/loginPolicy/service/impl/StorageModeServiceImpl.java
+++ src/main/java/com/takensoft/cms/loginPolicy/service/impl/StorageModeServiceImpl.java
... | ... | @@ -70,7 +70,7 @@ |
70 | 70 |
} |
71 | 71 |
storageModeVO.setRgtr(writer); |
72 | 72 |
|
73 |
- storageModeVO.setStrgModeId(storageModeIdgn.getNextStringId()); // ID 자동 생성 |
|
73 |
+ storageModeVO.setStrgMthId(storageModeIdgn.getNextStringId()); // ID 자동 생성 |
|
74 | 74 |
int result = storageModeDAO.save(storageModeVO); |
75 | 75 |
if(result == 0) { |
76 | 76 |
throw new CustomInsertFailException("스토리지 방식 등록에 실패했습니다."); |
--- src/main/java/com/takensoft/cms/loginPolicy/vo/Email2ndAuthVO.java
+++ src/main/java/com/takensoft/cms/loginPolicy/vo/Email2ndAuthVO.java
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 |
@AllArgsConstructor |
21 | 21 |
public class Email2ndAuthVO { |
22 | 22 |
|
23 |
- private String eml2ndAuthId; // 이메일 2차 인증 ID |
|
23 |
+ private String emlScdCeptId; // 이메일 2차 인증 ID |
|
24 | 24 |
private String useYn; // 사용 여부 |
25 | 25 |
private String rgtr; // 등록자 ID |
26 | 26 |
private String regDt; // 등록일시 |
--- src/main/java/com/takensoft/cms/loginPolicy/vo/LoginModeVO.java
+++ src/main/java/com/takensoft/cms/loginPolicy/vo/LoginModeVO.java
... | ... | @@ -20,8 +20,8 @@ |
20 | 20 |
@AllArgsConstructor |
21 | 21 |
public class LoginModeVO { |
22 | 22 |
|
23 |
- private String lgnModeId; // 로그인 방식 설정 ID |
|
24 |
- private String lgnMode; // 로그인 방식 (JWT / SESSION) J : S |
|
23 |
+ private String lgnMthId; // 로그인 방식 설정 ID |
|
24 |
+ private String lgnMth; // 로그인 방식 (JWT / SESSION) J : S |
|
25 | 25 |
private String rgtr; // 등록자 ID |
26 | 26 |
private String regDt; // 등록일시 |
27 | 27 |
}(파일 끝에 줄바꿈 문자 없음) |
--- src/main/java/com/takensoft/cms/loginPolicy/vo/LoginPolicyVO.java
+++ src/main/java/com/takensoft/cms/loginPolicy/vo/LoginPolicyVO.java
... | ... | @@ -20,8 +20,8 @@ |
20 | 20 |
@AllArgsConstructor |
21 | 21 |
public class LoginPolicyVO { |
22 | 22 |
|
23 |
- private String policyId; // 중복로그인 ID |
|
24 |
- private String allowMultipleLogin; // 중복 로그인 허용 여부 |
|
23 |
+ private String plcyId; // 중복로그인 ID |
|
24 |
+ private String mltLgnPrmYn; // 중복 로그인 허용 여부 |
|
25 | 25 |
private String rgtr; // 수정한 관리자 ID |
26 | 26 |
private String regDt; // 등록일시 |
27 | 27 |
}(파일 끝에 줄바꿈 문자 없음) |
--- src/main/java/com/takensoft/cms/loginPolicy/vo/StorageModeVO.java
+++ src/main/java/com/takensoft/cms/loginPolicy/vo/StorageModeVO.java
... | ... | @@ -20,8 +20,8 @@ |
20 | 20 |
@AllArgsConstructor |
21 | 21 |
public class StorageModeVO { |
22 | 22 |
|
23 |
- private String strgModeId; // 이메일 2차 인증 ID |
|
24 |
- private String strgMode; // 스토리지 방식 (L: Local, S: Session) |
|
23 |
+ private String strgMthId; // 이메일 2차 인증 ID |
|
24 |
+ private String strgMth; // 스토리지 방식 (L: Local, S: Session) |
|
25 | 25 |
private String rgtr; // 등록자 ID |
26 | 26 |
private String regDt; // 등록일시 |
27 | 27 |
}(파일 끝에 줄바꿈 문자 없음) |
--- src/main/java/com/takensoft/cms/loginPolicy/web/LoginPolicyController.java
+++ src/main/java/com/takensoft/cms/loginPolicy/web/LoginPolicyController.java
... | ... | @@ -145,7 +145,7 @@ |
145 | 145 |
|
146 | 146 |
int result = loginModeService.insertLoginMode(loginModeVO); |
147 | 147 |
|
148 |
- if (loginModeVO.getLgnMode().equals("J")) { |
|
148 |
+ if (loginModeVO.getLgnMth().equals("J")) { |
|
149 | 149 |
// JWT 전체 로그아웃 |
150 | 150 |
Set<String> keys = redisTemplate.keys("jwt:*"); |
151 | 151 |
if (keys != null && !keys.isEmpty()) redisTemplate.delete(keys); |
--- src/main/java/com/takensoft/cms/mber/dao/MberDAO.java
+++ src/main/java/com/takensoft/cms/mber/dao/MberDAO.java
... | ... | @@ -126,7 +126,7 @@ |
126 | 126 |
|
127 | 127 |
/** |
128 | 128 |
* @param params - 제공자 타입과 식별자를 포함한 Map |
129 |
- * - providerType: 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE) |
|
129 |
+ * - lgnOffrType: 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE) |
|
130 | 130 |
* - identifier: 식별자 (로그인ID 또는 소셜ID) |
131 | 131 |
* @return MberVO - 통합 로그인으로 조회된 사용자 정보 |
132 | 132 |
* |
... | ... | @@ -153,7 +153,7 @@ |
153 | 153 |
/** |
154 | 154 |
* @param params - 회원 ID와 제공자 타입을 포함한 Map |
155 | 155 |
* - mbrId: 회원 ID |
156 |
- * - providerType: 제공자 타입 |
|
156 |
+ * - lgnOffrType: 제공자 타입 |
|
157 | 157 |
* @return MberSocialAccountVO - 특정 제공자의 소셜 계정 정보 |
158 | 158 |
* |
159 | 159 |
* 특정 제공자로 소셜 계정 조회 |
... | ... | @@ -179,7 +179,7 @@ |
179 | 179 |
/** |
180 | 180 |
* @param params - 연동 해지 정보를 포함한 Map |
181 | 181 |
* - mbrId: 회원 ID |
182 |
- * - providerType: 제공자 타입 |
|
182 |
+ * - lgnOffrType: 제공자 타입 |
|
183 | 183 |
* - mdfr: 수정자 |
184 | 184 |
* @return int - 해지 결과 |
185 | 185 |
* |
... | ... | @@ -190,7 +190,7 @@ |
190 | 190 |
/** |
191 | 191 |
* @param params - 메인 프로필 설정 정보를 포함한 Map |
192 | 192 |
* - mbrId: 회원 ID |
193 |
- * - providerType: 제공자 타입 |
|
193 |
+ * - lgnOffrType: 제공자 타입 |
|
194 | 194 |
* - mdfr: 수정자 |
195 | 195 |
* @return int - 설정 결과 |
196 | 196 |
* |
... | ... | @@ -201,7 +201,7 @@ |
201 | 201 |
/** |
202 | 202 |
* @param params - 연동 가능한 계정 검색 정보를 포함한 Map |
203 | 203 |
* - email: 이메일 |
204 |
- * - providerType: 제외할 제공자 타입 |
|
204 |
+ * - lgnOffrType: 제외할 제공자 타입 |
|
205 | 205 |
* @return MberVO - 연동 가능한 계정 정보 |
206 | 206 |
* |
207 | 207 |
* 연동 가능한 계정 조회 (이메일로 검색, 특정 제공자 제외) |
--- src/main/java/com/takensoft/cms/mber/service/Impl/MberServiceImpl.java
+++ src/main/java/com/takensoft/cms/mber/service/Impl/MberServiceImpl.java
... | ... | @@ -205,12 +205,12 @@ |
205 | 205 |
// 시스템 로그인 계정 정보 소셜 계정 테이블에도 저장 |
206 | 206 |
MberSocialAccountVO systemAccount = new MberSocialAccountVO(); |
207 | 207 |
systemAccount.setMbrId(joinDTO.getMbrId()); |
208 |
- systemAccount.setProviderType("S"); |
|
209 |
- systemAccount.setLoginId(joinDTO.getLgnId()); |
|
210 |
- systemAccount.setSocialEmail(joinDTO.getEml()); |
|
211 |
- systemAccount.setSocialName(joinDTO.getMbrNm()); |
|
212 |
- systemAccount.setIsPrimaryProfile(true); |
|
213 |
- systemAccount.setIsActive(true); |
|
208 |
+ systemAccount.setLgnOffrType("S"); |
|
209 |
+ systemAccount.setLgnId(joinDTO.getLgnId()); |
|
210 |
+ systemAccount.setSnsEml(joinDTO.getEml()); |
|
211 |
+ systemAccount.setSnsNm(joinDTO.getMbrNm()); |
|
212 |
+ systemAccount.setMainPrflYn(true); |
|
213 |
+ systemAccount.setLinkVtlzYn(true); |
|
214 | 214 |
systemAccount.setRgtr(writer); |
215 | 215 |
|
216 | 216 |
mberDAO.saveSocialAccount(systemAccount); |
... | ... | @@ -224,7 +224,7 @@ |
224 | 224 |
* 기존 계정에 시스템 로그인 연동 |
225 | 225 |
*/ |
226 | 226 |
@Transactional(rollbackFor = Exception.class) |
227 |
- public HashMap<String, Object> linkSystemLogin(String mbrId, String loginId, String password, String rgtr) { |
|
227 |
+ public HashMap<String, Object> linkSystemLogin(String mbrId, String lgnId, String password, String rgtr) { |
|
228 | 228 |
try { |
229 | 229 |
// 회원 정보 조회 |
230 | 230 |
MberVO user = mberDAO.findByMber(mbrId); |
... | ... | @@ -241,7 +241,7 @@ |
241 | 241 |
|
242 | 242 |
// 시스템 로그인 연동 |
243 | 243 |
boolean linkResult = linkSystemLoginAccount( |
244 |
- mbrId, loginId, user.getEml(), user.getMbrNm(), rgtr |
|
244 |
+ mbrId, lgnId, user.getEml(), user.getMbrNm(), rgtr |
|
245 | 245 |
); |
246 | 246 |
|
247 | 247 |
HashMap<String, Object> result = new HashMap<>(); |
... | ... | @@ -258,16 +258,16 @@ |
258 | 258 |
/** |
259 | 259 |
* 시스템 로그인 계정 연동 (내부 메서드) |
260 | 260 |
*/ |
261 |
- private boolean linkSystemLoginAccount(String mbrId, String loginId, String email, String name, String rgtr) { |
|
261 |
+ private boolean linkSystemLoginAccount(String mbrId, String lgnId, String email, String name, String rgtr) { |
|
262 | 262 |
try { |
263 | 263 |
MberSocialAccountVO systemAccount = new MberSocialAccountVO(); |
264 | 264 |
systemAccount.setMbrId(mbrId); |
265 |
- systemAccount.setProviderType("S"); |
|
266 |
- systemAccount.setLoginId(loginId); |
|
267 |
- systemAccount.setSocialEmail(email); |
|
268 |
- systemAccount.setSocialName(name); |
|
269 |
- systemAccount.setIsPrimaryProfile(false); |
|
270 |
- systemAccount.setIsActive(true); |
|
265 |
+ systemAccount.setLgnOffrType("S"); |
|
266 |
+ systemAccount.setLgnId(lgnId); |
|
267 |
+ systemAccount.setSnsEml(email); |
|
268 |
+ systemAccount.setSnsNm(name); |
|
269 |
+ systemAccount.setMainPrflYn(false); |
|
270 |
+ systemAccount.setLinkVtlzYn(true); |
|
271 | 271 |
systemAccount.setRgtr(rgtr); |
272 | 272 |
|
273 | 273 |
mberDAO.linkSocialAccount(systemAccount); |
--- src/main/java/com/takensoft/cms/mber/service/Impl/UnifiedLoginServiceImpl.java
+++ src/main/java/com/takensoft/cms/mber/service/Impl/UnifiedLoginServiceImpl.java
... | ... | @@ -59,10 +59,10 @@ |
59 | 59 |
*/ |
60 | 60 |
@Override |
61 | 61 |
@Transactional(readOnly = true) |
62 |
- public MberVO authenticateUser(String providerType, String identifier, String password) { |
|
62 |
+ public MberVO authenticateUser(String lgnOffrType, String identifier, String password) { |
|
63 | 63 |
try { |
64 | 64 |
HashMap<String, Object> params = new HashMap<>(); |
65 |
- params.put("providerType", providerType); |
|
65 |
+ params.put("lgnOffrType", lgnOffrType); |
|
66 | 66 |
params.put("identifier", identifier); |
67 | 67 |
|
68 | 68 |
MberVO user = mberDAO.findByUnifiedLogin(params); |
... | ... | @@ -72,7 +72,7 @@ |
72 | 72 |
} |
73 | 73 |
|
74 | 74 |
// 시스템 로그인의 경우 비밀번호 검증 |
75 |
- if ("S".equals(providerType)) { |
|
75 |
+ if ("S".equals(lgnOffrType)) { |
|
76 | 76 |
if (password == null || !getPasswordEncoder().matches(password, user.getPassword())) { |
77 | 77 |
throw new CustomPasswordComparisonException("비밀번호가 일치하지 않습니다."); |
78 | 78 |
} |
... | ... | @@ -91,7 +91,7 @@ |
91 | 91 |
*/ |
92 | 92 |
@Override |
93 | 93 |
@Transactional(rollbackFor = Exception.class) |
94 |
- public MberVO processOAuth2User(String email, String providerType, String socialId, String name, HttpServletRequest request) { |
|
94 |
+ public MberVO processOAuth2User(String email, String lgnOffrType, String snsLgnId, String name, HttpServletRequest request) { |
|
95 | 95 |
try { |
96 | 96 |
// 1. 이메일로 기존 계정 검색 |
97 | 97 |
MberVO existingUser = mberDAO.findAllAccountsByEmail(email); |
... | ... | @@ -100,24 +100,24 @@ |
100 | 100 |
// 2-1. 기존 계정 있음 - 해당 소셜이 이미 연동되어 있는지 확인 |
101 | 101 |
HashMap<String, Object> params = new HashMap<>(); |
102 | 102 |
params.put("mbrId", existingUser.getMbrId()); |
103 |
- params.put("providerType", convertProviderToMbrType(providerType)); |
|
103 |
+ params.put("lgnOffrType", convertProviderToMbrType(lgnOffrType)); |
|
104 | 104 |
|
105 | 105 |
MberSocialAccountVO existingSocial = mberDAO.findSocialAccountByProvider(params); |
106 | 106 |
|
107 | 107 |
if (existingSocial != null) { |
108 | 108 |
// 이미 연동되어 있음 - 정보만 업데이트 |
109 |
- existingSocial.setSocialName(name); |
|
109 |
+ existingSocial.setSnsNm(name); |
|
110 | 110 |
existingSocial.setMdfr("OAUTH2_UPDATE"); |
111 | 111 |
updateSocialAccountInfo(existingSocial); |
112 | 112 |
return existingUser; |
113 | 113 |
} else { |
114 | 114 |
// 새로운 소셜 계정 연동 |
115 |
- linkAccount(existingUser.getMbrId(), providerType, socialId, null, email, name); |
|
115 |
+ linkAccount(existingUser.getMbrId(), lgnOffrType, snsLgnId, null, email, name); |
|
116 | 116 |
return existingUser; |
117 | 117 |
} |
118 | 118 |
} else { |
119 | 119 |
// 2-2. 기존 계정 없음 - 새 계정 생성 |
120 |
- return createNewOAuth2User(email, providerType, socialId, name, request); |
|
120 |
+ return createNewOAuth2User(email, lgnOffrType, snsLgnId, name, request); |
|
121 | 121 |
} |
122 | 122 |
} catch (DataAccessException dae) { |
123 | 123 |
throw dae; |
... | ... | @@ -129,11 +129,11 @@ |
129 | 129 |
/** |
130 | 130 |
* 새로운 OAuth2 사용자 생성 |
131 | 131 |
*/ |
132 |
- private MberVO createNewOAuth2User(String email, String providerType, String socialId, String name, HttpServletRequest request) { |
|
132 |
+ private MberVO createNewOAuth2User(String email, String lgnOffrType, String snsLgnId, String name, HttpServletRequest request) { |
|
133 | 133 |
try { |
134 | 134 |
// 회원 ID 생성 |
135 | 135 |
String mbrId = mberIdgn.getNextStringId(); |
136 |
- String lowProviderType = convertProviderToMbrType(providerType); |
|
136 |
+ String lowProviderType = convertProviderToMbrType(lgnOffrType); |
|
137 | 137 |
|
138 | 138 |
// 새 사용자 정보 설정 |
139 | 139 |
MberVO newUser = new MberVO(); |
... | ... | @@ -164,12 +164,12 @@ |
164 | 164 |
// 소셜 계정 정보 저장 |
165 | 165 |
MberSocialAccountVO socialAccount = new MberSocialAccountVO(); |
166 | 166 |
socialAccount.setMbrId(mbrId); |
167 |
- socialAccount.setProviderType(lowProviderType); |
|
168 |
- socialAccount.setSocialId(socialId); |
|
169 |
- socialAccount.setSocialEmail(email); |
|
170 |
- socialAccount.setSocialName(name); |
|
171 |
- socialAccount.setIsPrimaryProfile(true); |
|
172 |
- socialAccount.setIsActive(true); |
|
167 |
+ socialAccount.setLgnOffrType(lowProviderType); |
|
168 |
+ socialAccount.setSnsLgnId(snsLgnId); |
|
169 |
+ socialAccount.setSnsEml(email); |
|
170 |
+ socialAccount.setSnsNm(name); |
|
171 |
+ socialAccount.setMainPrflYn(true); |
|
172 |
+ socialAccount.setLinkVtlzYn(true); |
|
173 | 173 |
socialAccount.setRgtr("OAUTH2_SYSTEM"); |
174 | 174 |
|
175 | 175 |
mberDAO.saveSocialAccount(socialAccount); |
... | ... | @@ -185,27 +185,27 @@ |
185 | 185 |
*/ |
186 | 186 |
@Override |
187 | 187 |
@Transactional(rollbackFor = Exception.class) |
188 |
- public boolean linkAccount(String mbrId, String providerType, String socialId, String loginId, String email, String name) { |
|
188 |
+ public boolean linkAccount(String mbrId, String lgnOffrType, String snsLgnId, String lgnId, String email, String name) { |
|
189 | 189 |
try { |
190 | 190 |
// 중복 연동 확인 |
191 | 191 |
HashMap<String, Object> params = new HashMap<>(); |
192 | 192 |
params.put("mbrId", mbrId); |
193 |
- params.put("providerType", convertProviderToMbrType(providerType)); |
|
193 |
+ params.put("lgnOffrType", convertProviderToMbrType(lgnOffrType)); |
|
194 | 194 |
|
195 | 195 |
MberSocialAccountVO existing = mberDAO.findSocialAccountByProvider(params); |
196 |
- if (existing != null && existing.getIsActive()) { |
|
196 |
+ if (existing != null && existing.getLinkVtlzYn()) { |
|
197 | 197 |
throw new CustomIdTakenException("이미 연동된 계정입니다."); |
198 | 198 |
} |
199 | 199 |
|
200 | 200 |
MberSocialAccountVO socialAccount = new MberSocialAccountVO(); |
201 | 201 |
socialAccount.setMbrId(mbrId); |
202 |
- socialAccount.setProviderType(convertProviderToMbrType(providerType)); |
|
203 |
- socialAccount.setSocialId(socialId); |
|
204 |
- socialAccount.setLoginId(loginId); |
|
205 |
- socialAccount.setSocialEmail(email); |
|
206 |
- socialAccount.setSocialName(name); |
|
207 |
- socialAccount.setIsPrimaryProfile(false); |
|
208 |
- socialAccount.setIsActive(true); |
|
202 |
+ socialAccount.setLgnOffrType(convertProviderToMbrType(lgnOffrType)); |
|
203 |
+ socialAccount.setSnsLgnId(snsLgnId); |
|
204 |
+ socialAccount.setLgnId(lgnId); |
|
205 |
+ socialAccount.setSnsEml(email); |
|
206 |
+ socialAccount.setSnsNm(name); |
|
207 |
+ socialAccount.setMainPrflYn(false); |
|
208 |
+ socialAccount.setLinkVtlzYn(true); |
|
209 | 209 |
socialAccount.setRgtr("LINK_SYSTEM"); |
210 | 210 |
|
211 | 211 |
mberDAO.linkSocialAccount(socialAccount); |
... | ... | @@ -222,7 +222,7 @@ |
222 | 222 |
*/ |
223 | 223 |
@Override |
224 | 224 |
@Transactional(rollbackFor = Exception.class) |
225 |
- public boolean unlinkAccount(String mbrId, String providerType) { |
|
225 |
+ public boolean unlinkAccount(String mbrId, String lgnOffrType) { |
|
226 | 226 |
try { |
227 | 227 |
// 연동된 계정 개수 확인 (최소 1개는 유지해야 함) |
228 | 228 |
List<MberSocialAccountVO> linkedAccounts = getLinkedAccounts(mbrId); |
... | ... | @@ -232,26 +232,26 @@ |
232 | 232 |
|
233 | 233 |
HashMap<String, Object> params = new HashMap<>(); |
234 | 234 |
params.put("mbrId", mbrId); |
235 |
- params.put("providerType", convertProviderToMbrType(providerType)); |
|
235 |
+ params.put("lgnOffrType", convertProviderToMbrType(lgnOffrType)); |
|
236 | 236 |
params.put("mdfr", "UNLINK_SYSTEM"); |
237 | 237 |
|
238 | 238 |
mberDAO.unlinkSocialAccount(params); |
239 | 239 |
|
240 | 240 |
// 해지된 계정이 메인 프로필이었다면 다른 계정을 메인으로 설정 |
241 | 241 |
MberSocialAccountVO unlinkedAccount = linkedAccounts.stream() |
242 |
- .filter(acc -> acc.getProviderType().equals(convertProviderToMbrType(providerType))) |
|
242 |
+ .filter(acc -> acc.getLgnOffrType().equals(convertProviderToMbrType(lgnOffrType))) |
|
243 | 243 |
.findFirst() |
244 | 244 |
.orElse(null); |
245 | 245 |
|
246 |
- if (unlinkedAccount != null && unlinkedAccount.getIsPrimaryProfile()) { |
|
246 |
+ if (unlinkedAccount != null && unlinkedAccount.getMainPrflYn()) { |
|
247 | 247 |
// 첫 번째 활성 계정을 메인으로 설정 |
248 | 248 |
MberSocialAccountVO newPrimary = linkedAccounts.stream() |
249 |
- .filter(acc -> !acc.getProviderType().equals(convertProviderToMbrType(providerType))) |
|
249 |
+ .filter(acc -> !acc.getLgnOffrType().equals(convertProviderToMbrType(lgnOffrType))) |
|
250 | 250 |
.findFirst() |
251 | 251 |
.orElse(null); |
252 | 252 |
|
253 | 253 |
if (newPrimary != null) { |
254 |
- setPrimaryProfile(mbrId, newPrimary.getProviderType()); |
|
254 |
+ setPrimaryProfile(mbrId, newPrimary.getLgnOffrType()); |
|
255 | 255 |
} |
256 | 256 |
} |
257 | 257 |
|
... | ... | @@ -283,11 +283,11 @@ |
283 | 283 |
*/ |
284 | 284 |
@Override |
285 | 285 |
@Transactional(rollbackFor = Exception.class) |
286 |
- public boolean setPrimaryProfile(String mbrId, String providerType) { |
|
286 |
+ public boolean setPrimaryProfile(String mbrId, String lgnOffrType) { |
|
287 | 287 |
try { |
288 | 288 |
HashMap<String, Object> params = new HashMap<>(); |
289 | 289 |
params.put("mbrId", mbrId); |
290 |
- params.put("providerType", convertProviderToMbrType(providerType)); |
|
290 |
+ params.put("lgnOffrType", convertProviderToMbrType(lgnOffrType)); |
|
291 | 291 |
params.put("mdfr", "PROFILE_UPDATE"); |
292 | 292 |
|
293 | 293 |
mberDAO.setPrimaryProfile(params); |
... | ... | @@ -317,7 +317,7 @@ |
317 | 317 |
|
318 | 318 |
// 새로운 제공자가 이미 연동되어 있는지 확인 |
319 | 319 |
boolean alreadyLinked = linkedAccounts.stream() |
320 |
- .anyMatch(acc -> acc.getProviderType().equals(newProviderType)); |
|
320 |
+ .anyMatch(acc -> acc.getLgnOffrType().equals(newProviderType)); |
|
321 | 321 |
|
322 | 322 |
result.put("hasExistingAccount", true); |
323 | 323 |
result.put("mbrId", existingUser.getMbrId()); |
--- src/main/java/com/takensoft/cms/mber/service/UnifiedLoginService.java
+++ src/main/java/com/takensoft/cms/mber/service/UnifiedLoginService.java
... | ... | @@ -20,43 +20,43 @@ |
20 | 20 |
|
21 | 21 |
/** |
22 | 22 |
* 통합 로그인 인증 |
23 |
- * @param providerType 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE) |
|
23 |
+ * @param lgnOffrType 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE) |
|
24 | 24 |
* @param identifier 식별자 (로그인ID 또는 소셜ID) |
25 | 25 |
* @param password 비밀번호 (시스템 로그인시만 필요) |
26 | 26 |
* @return MberVO 인증된 사용자 정보 |
27 | 27 |
*/ |
28 |
- MberVO authenticateUser(String providerType, String identifier, String password); |
|
28 |
+ MberVO authenticateUser(String lgnOffrType, String identifier, String password); |
|
29 | 29 |
|
30 | 30 |
/** |
31 | 31 |
* OAuth2 사용자 처리 (가입 또는 연동) |
32 | 32 |
* @param email 이메일 |
33 |
- * @param providerType 제공자 타입 |
|
34 |
- * @param socialId 소셜 고유 ID |
|
33 |
+ * @param lgnOffrType 제공자 타입 |
|
34 |
+ * @param snsLgnId 소셜 고유 ID |
|
35 | 35 |
* @param name 이름 |
36 | 36 |
* @param request HTTP 요청 객체 |
37 | 37 |
* @return MberVO 처리된 사용자 정보 |
38 | 38 |
*/ |
39 |
- MberVO processOAuth2User(String email, String providerType, String socialId, String name, HttpServletRequest request); |
|
39 |
+ MberVO processOAuth2User(String email, String lgnOffrType, String snsLgnId, String name, HttpServletRequest request); |
|
40 | 40 |
|
41 | 41 |
/** |
42 | 42 |
* 계정 연동 |
43 | 43 |
* @param mbrId 회원 ID |
44 |
- * @param providerType 제공자 타입 |
|
45 |
- * @param socialId 소셜 ID (시스템일 경우 null) |
|
46 |
- * @param loginId 로그인 ID (소셜일 경우 null) |
|
44 |
+ * @param lgnOffrType 제공자 타입 |
|
45 |
+ * @param snsLgnId 소셜 ID (시스템일 경우 null) |
|
46 |
+ * @param lgnId 로그인 ID (소셜일 경우 null) |
|
47 | 47 |
* @param email 이메일 |
48 | 48 |
* @param name 이름 |
49 | 49 |
* @return boolean 연동 성공 여부 |
50 | 50 |
*/ |
51 |
- boolean linkAccount(String mbrId, String providerType, String socialId, String loginId, String email, String name); |
|
51 |
+ boolean linkAccount(String mbrId, String lgnOffrType, String snsLgnId, String lgnId, String email, String name); |
|
52 | 52 |
|
53 | 53 |
/** |
54 | 54 |
* 계정 연동 해지 |
55 | 55 |
* @param mbrId 회원 ID |
56 |
- * @param providerType 제공자 타입 |
|
56 |
+ * @param lgnOffrType 제공자 타입 |
|
57 | 57 |
* @return boolean 해지 성공 여부 |
58 | 58 |
*/ |
59 |
- boolean unlinkAccount(String mbrId, String providerType); |
|
59 |
+ boolean unlinkAccount(String mbrId, String lgnOffrType); |
|
60 | 60 |
|
61 | 61 |
/** |
62 | 62 |
* 연동된 계정 목록 조회 |
... | ... | @@ -68,10 +68,10 @@ |
68 | 68 |
/** |
69 | 69 |
* 메인 프로필 설정 |
70 | 70 |
* @param mbrId 회원 ID |
71 |
- * @param providerType 제공자 타입 |
|
71 |
+ * @param lgnOffrType 제공자 타입 |
|
72 | 72 |
* @return boolean 설정 성공 여부 |
73 | 73 |
*/ |
74 |
- boolean setPrimaryProfile(String mbrId, String providerType); |
|
74 |
+ boolean setPrimaryProfile(String mbrId, String lgnOffrType); |
|
75 | 75 |
|
76 | 76 |
/** |
77 | 77 |
* 계정 통합 제안 |
--- src/main/java/com/takensoft/cms/mber/vo/LgnHstryVO.java
+++ src/main/java/com/takensoft/cms/mber/vo/LgnHstryVO.java
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 |
private String lgnType; // 로그인 유형 |
23 | 23 |
private String cntnDt; // 접속일 |
24 | 24 |
private String cntnIp; // 접속 아이피 |
25 |
- private String cntnOperSys; // 접속 운영체제 |
|
26 |
- private String deviceNm; // 디바이스명 |
|
25 |
+ private String cntnOperSysm; // 접속 운영체제 |
|
26 |
+ private String dvcNm; // 디바이스명 |
|
27 | 27 |
private String brwsrNm; // 브라우저명 |
28 | 28 |
} |
--- src/main/java/com/takensoft/cms/mber/vo/MberSocialAccountVO.java
+++ src/main/java/com/takensoft/cms/mber/vo/MberSocialAccountVO.java
... | ... | @@ -24,15 +24,15 @@ |
24 | 24 |
|
25 | 25 |
private Long id; // 연동 ID |
26 | 26 |
private String mbrId; // 회원 ID |
27 |
- private String providerType; // 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE) |
|
28 |
- private String socialId; // 소셜 로그인 고유 ID |
|
29 |
- private String loginId; // 시스템 로그인 ID |
|
30 |
- private String socialEmail; // 소셜 계정 이메일 |
|
31 |
- private String socialName; // 소셜 계정 이름 |
|
32 |
- private Boolean isPrimaryProfile; // 메인 프로필 여부 |
|
33 |
- private Boolean isActive; // 연동 활성화 여부 |
|
34 |
- private LocalDateTime linkedDt; // 연동일시 |
|
35 |
- private LocalDateTime unlinkedDt; // 연동 해지일시 |
|
27 |
+ private String lgnOffrType; // 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE) |
|
28 |
+ private String snsLgnId; // 소셜 로그인 고유 ID |
|
29 |
+ private String lgnId; // 시스템 로그인 ID |
|
30 |
+ private String snsEml; // 소셜 계정 이메일 |
|
31 |
+ private String snsNm; // 소셜 계정 이름 |
|
32 |
+ private Boolean mainPrflYn; // 메인 프로필 여부 |
|
33 |
+ private Boolean linkVtlzYn; // 연동 활성화 여부 |
|
34 |
+ private LocalDateTime linkDt; // 연동일시 |
|
35 |
+ private LocalDateTime linkCncltnDt; // 연동 해지일시 |
|
36 | 36 |
private String rgtr; // 등록자 |
37 | 37 |
private LocalDateTime regDt; // 등록일시 |
38 | 38 |
private String mdfr; // 수정자 |
--- src/main/java/com/takensoft/cms/mber/vo/MberVO.java
+++ src/main/java/com/takensoft/cms/mber/vo/MberVO.java
... | ... | @@ -54,7 +54,7 @@ |
54 | 54 |
private String prvcRlsYn; // 개인정보공개여부 0: 거부, 1: 허용 |
55 | 55 |
private String mbrType; // 회원형태 S: 시스템, K: 카카오, N: 네이버, G: 구글, F: 페이스북 |
56 | 56 |
private String pswdChgDt; // 비밀번호 변경일 |
57 |
- private String frstRegIp; // 최초등록 아이디 |
|
57 |
+ private String frstRegIp; // 최초등록 아이피 |
|
58 | 58 |
private String sysPvsnYn; // 시스템 제공 여부 -> 시스템에서 제공되는 데이터는 사용자가 제거하지 못하도록 하기 위한 설정값 0: 시스템, 1: 사용자 |
59 | 59 |
private String rgtr; // 등록자 |
60 | 60 |
private String regDt; // 등록일 |
--- src/main/java/com/takensoft/cms/mber/web/UnifiedLoginController.java
+++ src/main/java/com/takensoft/cms/mber/web/UnifiedLoginController.java
... | ... | @@ -54,13 +54,13 @@ |
54 | 54 |
public ResponseEntity<?> linkAccount(@RequestBody HashMap<String, String> params) { |
55 | 55 |
try { |
56 | 56 |
String currentUserId = verificationService.getCurrentUserId(); |
57 |
- String providerType = params.get("providerType"); |
|
58 |
- String socialId = params.get("socialId"); |
|
59 |
- String loginId = params.get("loginId"); |
|
57 |
+ String lgnOffrType = params.get("lgnOffrType"); |
|
58 |
+ String snsLgnId = params.get("snsLgnId"); |
|
59 |
+ String lgnId = params.get("lgnId"); |
|
60 | 60 |
String email = params.get("email"); |
61 | 61 |
String name = params.get("name"); |
62 | 62 |
|
63 |
- boolean success = unifiedLoginService.linkAccount(currentUserId, providerType, socialId, loginId, email, name); |
|
63 |
+ boolean success = unifiedLoginService.linkAccount(currentUserId, lgnOffrType, snsLgnId, lgnId, email, name); |
|
64 | 64 |
|
65 | 65 |
if (success) { |
66 | 66 |
return resUtil.successRes("계정 연동이 완료되었습니다.", MessageCode.COMMON_SUCCESS); |
... | ... | @@ -79,9 +79,9 @@ |
79 | 79 |
public ResponseEntity<?> unlinkAccount(@RequestBody HashMap<String, String> params) { |
80 | 80 |
try { |
81 | 81 |
String currentUserId = verificationService.getCurrentUserId(); |
82 |
- String providerType = params.get("providerType"); |
|
82 |
+ String lgnOffrType = params.get("lgnOffrType"); |
|
83 | 83 |
|
84 |
- boolean success = unifiedLoginService.unlinkAccount(currentUserId, providerType); |
|
84 |
+ boolean success = unifiedLoginService.unlinkAccount(currentUserId, lgnOffrType); |
|
85 | 85 |
|
86 | 86 |
if (success) { |
87 | 87 |
return resUtil.successRes("계정 연동이 해지되었습니다.", MessageCode.COMMON_SUCCESS); |
... | ... | @@ -100,9 +100,9 @@ |
100 | 100 |
public ResponseEntity<?> setPrimaryProfile(@RequestBody HashMap<String, String> params) { |
101 | 101 |
try { |
102 | 102 |
String currentUserId = verificationService.getCurrentUserId(); |
103 |
- String providerType = params.get("providerType"); |
|
103 |
+ String lgnOffrType = params.get("lgnOffrType"); |
|
104 | 104 |
|
105 |
- boolean success = unifiedLoginService.setPrimaryProfile(currentUserId, providerType); |
|
105 |
+ boolean success = unifiedLoginService.setPrimaryProfile(currentUserId, lgnOffrType); |
|
106 | 106 |
|
107 | 107 |
if (success) { |
108 | 108 |
return resUtil.successRes("메인 프로필이 설정되었습니다.", MessageCode.COMMON_SUCCESS); |
... | ... | @@ -121,7 +121,7 @@ |
121 | 121 |
public ResponseEntity<?> suggestAccountMerge(@RequestBody HashMap<String, String> params) { |
122 | 122 |
try { |
123 | 123 |
String email = params.get("email"); |
124 |
- String newProviderType = params.get("providerType"); |
|
124 |
+ String newProviderType = params.get("lgnOffrType"); |
|
125 | 125 |
|
126 | 126 |
HashMap<String, Object> suggestion = unifiedLoginService.suggestAccountMerge(email, newProviderType); |
127 | 127 |
|
--- src/main/java/com/takensoft/cms/prvcInqHstry/service/Impl/PrvcInqHstryServiceImpl.java
+++ src/main/java/com/takensoft/cms/prvcInqHstry/service/Impl/PrvcInqHstryServiceImpl.java
... | ... | @@ -68,7 +68,7 @@ |
68 | 68 |
throw new CustomNotFoundException("사용자 정보 조회에 실패했습니다."); |
69 | 69 |
} |
70 | 70 |
// 조회자 삽입 |
71 |
- prvcInqHstryVO.setRdr(writer); |
|
71 |
+ prvcInqHstryVO.setInqpr(writer); |
|
72 | 72 |
|
73 | 73 |
int saveResult = prvcInqHstryDAO.insertPrvcInqHstry(prvcInqHstryVO); |
74 | 74 |
if(saveResult == 0) { |
--- src/main/java/com/takensoft/cms/prvcInqHstry/vo/PrvcInqHstryVO.java
+++ src/main/java/com/takensoft/cms/prvcInqHstry/vo/PrvcInqHstryVO.java
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 |
private String inqTrprId; // 조회 대상자 아이디 |
22 | 22 |
private String inqRsn; // 조회 사유 |
23 | 23 |
private String inqIp; // 조회 아이피 |
24 |
- private String rdr; // 조회자 |
|
24 |
+ private String inqpr; // 조회자 |
|
25 | 25 |
private String inqDt; // 조회일 |
26 | 26 |
private String mbrNm; // 조회자 이름 |
27 | 27 |
private String lgnId; // 조회 대상자 로그인 아이디 |
--- src/main/java/com/takensoft/cms/token/web/RefreshTokenController.java
+++ src/main/java/com/takensoft/cms/token/web/RefreshTokenController.java
... | ... | @@ -46,10 +46,6 @@ |
46 | 46 |
private final RedisTemplate<String, String> redisTemplate; |
47 | 47 |
|
48 | 48 |
/** |
49 |
- * @param req - HTTP 요청 객체 |
|
50 |
- * @param res - HTTP 응답 객체 |
|
51 |
- * @return ResponseEntity - 로그아웃 응답 결과 |
|
52 |
- * |
|
53 | 49 |
* 로그아웃 - 세션/JWT 모드 통합 처리 + 완전 정리 |
54 | 50 |
*/ |
55 | 51 |
@PostMapping(value = "/mbr/logout.json") |
... | ... | @@ -90,8 +86,8 @@ |
90 | 86 |
handleJWTLogout(req, res, mbrId); |
91 | 87 |
} |
92 | 88 |
|
93 |
- // 5. 공통 정리 작업 |
|
94 |
- performCommonCleanup(req, res); |
|
89 |
+ // 5. 공통 정리 작업 (모든 쿠키 완전 제거) |
|
90 |
+ performCompleteCleanup(req, res); |
|
95 | 91 |
|
96 | 92 |
log.info("로그아웃 완료 - 사용자: {}", mbrId); |
97 | 93 |
return resUtil.successRes(dbResult, MessageCode.LOGOUT_SUCCESS); |
... | ... | @@ -101,12 +97,47 @@ |
101 | 97 |
|
102 | 98 |
// 오류가 발생해도 기본 정리는 수행 |
103 | 99 |
try { |
104 |
- performCommonCleanup(req, res); |
|
100 |
+ performCompleteCleanup(req, res); |
|
105 | 101 |
} catch (Exception cleanupError) { |
106 | 102 |
log.error("정리 작업 중 오류: {}", cleanupError.getMessage()); |
107 | 103 |
} |
108 | 104 |
|
109 | 105 |
return resUtil.successRes(0, MessageCode.LOGOUT_SUCCESS); // 클라이언트에는 성공으로 응답 |
106 |
+ } |
|
107 |
+ } |
|
108 |
+ |
|
109 |
+ /** |
|
110 |
+ * 관리자 시스템 설정 변경시 전체 사용자 로그아웃 |
|
111 |
+ */ |
|
112 |
+ @PostMapping(value = "/mbr/logoutAll.json") |
|
113 |
+ public ResponseEntity<?> logoutAll(HttpServletRequest req, HttpServletResponse res) { |
|
114 |
+ try { |
|
115 |
+ log.info("전체 사용자 로그아웃 시작"); |
|
116 |
+ |
|
117 |
+ // 1. 모든 세션 무효화 |
|
118 |
+ sessionUtil.invalidateAllSessions(); |
|
119 |
+ |
|
120 |
+ // 2. Redis의 모든 인증 관련 데이터 삭제 |
|
121 |
+ clearAllRedisAuthData(); |
|
122 |
+ |
|
123 |
+ // 3. 모든 Refresh 토큰 삭제 |
|
124 |
+ try { |
|
125 |
+ refreshTokenService.deleteAll(); |
|
126 |
+ } catch (Exception e) { |
|
127 |
+ log.warn("전체 Refresh 토큰 삭제 실패: {}", e.getMessage()); |
|
128 |
+ } |
|
129 |
+ |
|
130 |
+ // 4. 현재 요청자도 로그아웃 |
|
131 |
+ performCompleteCleanup(req, res); |
|
132 |
+ |
|
133 |
+ log.info("전체 사용자 로그아웃 완료"); |
|
134 |
+ return resUtil.successRes("모든 사용자가 로그아웃되었습니다.", MessageCode.LOGOUT_SUCCESS); |
|
135 |
+ |
|
136 |
+ } catch (Exception e) { |
|
137 |
+ log.error("전체 로그아웃 처리 중 오류", e); |
|
138 |
+ // 오류가 발생해도 현재 요청자는 로그아웃 처리 |
|
139 |
+ performCompleteCleanup(req, res); |
|
140 |
+ return resUtil.successRes("로그아웃 처리되었습니다.", MessageCode.LOGOUT_SUCCESS); |
|
110 | 141 |
} |
111 | 142 |
} |
112 | 143 |
|
... | ... | @@ -136,9 +167,6 @@ |
136 | 167 |
cleanupSessionRedisData(mbrId); |
137 | 168 |
} |
138 | 169 |
|
139 |
- // 4. 세션 쿠키 제거 |
|
140 |
- removeSessionCookies(res); |
|
141 |
- |
|
142 | 170 |
} catch (Exception e) { |
143 | 171 |
log.error("세션 모드 로그아웃 처리 중 오류: {}", e.getMessage(), e); |
144 | 172 |
} |
... | ... | @@ -154,9 +182,6 @@ |
154 | 182 |
redisTemplate.delete("jwt:" + mbrId); |
155 | 183 |
log.debug("Redis JWT 토큰 삭제: jwt:{}", mbrId); |
156 | 184 |
} |
157 |
- |
|
158 |
- // 2. JWT 관련 쿠키 제거 |
|
159 |
- removeJWTCookies(res); |
|
160 | 185 |
|
161 | 186 |
} catch (Exception e) { |
162 | 187 |
log.error("JWT 모드 로그아웃 처리 중 오류: {}", e.getMessage(), e); |
... | ... | @@ -189,89 +214,177 @@ |
189 | 214 |
} |
190 | 215 |
|
191 | 216 |
/** |
192 |
- * 세션 관련 쿠키 제거 |
|
217 |
+ * 모든 Redis 인증 데이터 정리 (전체 로그아웃용) |
|
193 | 218 |
*/ |
194 |
- private void removeSessionCookies(HttpServletResponse res) { |
|
195 |
- String[] sessionCookies = {"JSESSIONID", "SESSION"}; |
|
219 |
+ private void clearAllRedisAuthData() { |
|
220 |
+ try { |
|
221 |
+ String[] globalPatterns = { |
|
222 |
+ "session:*", |
|
223 |
+ "session_token:*", |
|
224 |
+ "jwt:*", |
|
225 |
+ "user:*", |
|
226 |
+ "auth:*", |
|
227 |
+ "refresh:*" |
|
228 |
+ }; |
|
196 | 229 |
|
197 |
- for (String cookieName : sessionCookies) { |
|
198 |
- // 기본 경로 |
|
199 |
- Cookie cookie = new Cookie(cookieName, null); |
|
200 |
- cookie.setMaxAge(0); |
|
201 |
- cookie.setPath("/"); |
|
202 |
- res.addCookie(cookie); |
|
203 |
- |
|
204 |
- // 도메인별 쿠키도 삭제 시도 |
|
205 |
- Cookie domainCookie = new Cookie(cookieName, null); |
|
206 |
- domainCookie.setMaxAge(0); |
|
207 |
- domainCookie.setPath("/"); |
|
208 |
- // domainCookie.setDomain(".example.com"); // 필요시 도메인 설정 |
|
209 |
- res.addCookie(domainCookie); |
|
230 |
+ for (String pattern : globalPatterns) { |
|
231 |
+ Set<String> keys = redisTemplate.keys(pattern); |
|
232 |
+ if (keys != null && !keys.isEmpty()) { |
|
233 |
+ redisTemplate.delete(keys); |
|
234 |
+ log.info("전체 Redis 키 삭제: {} 개 (패턴: {})", keys.size(), pattern); |
|
235 |
+ } |
|
236 |
+ } |
|
237 |
+ } catch (Exception e) { |
|
238 |
+ log.error("전체 Redis 데이터 정리 실패", e); |
|
210 | 239 |
} |
211 | 240 |
} |
212 | 241 |
|
213 | 242 |
/** |
214 |
- * JWT 관련 쿠키 제거 |
|
243 |
+ * 완전한 정리 작업 (모든 쿠키 제거 포함) |
|
215 | 244 |
*/ |
216 |
- private void removeJWTCookies(HttpServletResponse res) { |
|
217 |
- String[] jwtCookies = {"refresh", "Authorization", "access_token"}; |
|
218 |
- |
|
219 |
- for (String cookieName : jwtCookies) { |
|
220 |
- Cookie cookie = new Cookie(cookieName, null); |
|
221 |
- cookie.setMaxAge(0); |
|
222 |
- cookie.setHttpOnly(true); |
|
223 |
- cookie.setPath("/"); |
|
224 |
- res.addCookie(cookie); |
|
225 |
- } |
|
226 |
- } |
|
227 |
- |
|
228 |
- /** |
|
229 |
- * OAuth2 관련 쿠키 제거 |
|
230 |
- */ |
|
231 |
- private void removeOAuth2Cookies(HttpServletResponse res) { |
|
232 |
- String[] oauthCookies = { |
|
233 |
- "oauth_access_token", "oauth_refresh_token", "oauth_state", |
|
234 |
- "OAUTH2_AUTHORIZATION_REQUEST", "oauth2_auth_request" |
|
235 |
- }; |
|
236 |
- |
|
237 |
- for (String cookieName : oauthCookies) { |
|
238 |
- Cookie cookie = new Cookie(cookieName, null); |
|
239 |
- cookie.setMaxAge(0); |
|
240 |
- cookie.setPath("/"); |
|
241 |
- res.addCookie(cookie); |
|
242 |
- } |
|
243 |
- } |
|
244 |
- |
|
245 |
- /** |
|
246 |
- * 공통 정리 작업 |
|
247 |
- */ |
|
248 |
- private void performCommonCleanup(HttpServletRequest req, HttpServletResponse res) { |
|
245 |
+ private void performCompleteCleanup(HttpServletRequest req, HttpServletResponse res) { |
|
249 | 246 |
try { |
250 | 247 |
// 1. SecurityContext 제거 |
251 | 248 |
SecurityContextHolder.clearContext(); |
252 | 249 |
|
253 |
- // 2. OAuth2 쿠키 제거 |
|
254 |
- removeOAuth2Cookies(res); |
|
250 |
+ // 2. 모든 쿠키 완전 제거 |
|
251 |
+ clearAllCookiesCompletely(req, res); |
|
255 | 252 |
|
256 | 253 |
// 3. 응답 헤더에서 인증 정보 제거 |
257 | 254 |
res.setHeader("Authorization", ""); |
258 | 255 |
res.setHeader("loginMode", ""); |
259 | 256 |
|
260 | 257 |
// 4. 캐시 무효화 헤더 설정 |
261 |
- res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); |
|
258 |
+ res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, private"); |
|
262 | 259 |
res.setHeader("Pragma", "no-cache"); |
263 | 260 |
res.setHeader("Expires", "0"); |
264 | 261 |
|
265 | 262 |
} catch (Exception e) { |
266 |
- log.error("공통 정리 작업 중 오류: {}", e.getMessage(), e); |
|
263 |
+ log.error("완전한 정리 작업 중 오류: {}", e.getMessage(), e); |
|
267 | 264 |
} |
268 | 265 |
} |
269 | 266 |
|
270 | 267 |
/** |
271 |
- * @param req - HTTP 요청 객체 |
|
272 |
- * @param res - HTTP 응답 객체 |
|
273 |
- * @return ResponseEntity - 토큰 재발급 응답 결과 |
|
274 |
- * |
|
268 |
+ * 모든 쿠키 완전 제거 (확장된 버전) |
|
269 |
+ */ |
|
270 |
+ private void clearAllCookiesCompletely(HttpServletRequest req, HttpServletResponse res) { |
|
271 |
+ try { |
|
272 |
+ // 제거할 쿠키 목록 (확장) |
|
273 |
+ String[] cookieNames = { |
|
274 |
+ // 일반 인증 쿠키 |
|
275 |
+ "refresh", "Authorization", "access_token", "JSESSIONID", "SESSION", |
|
276 |
+ |
|
277 |
+ // OAuth 관련 쿠키 |
|
278 |
+ "oauth_access_token", "oauth_refresh_token", "oauth_state", |
|
279 |
+ "OAUTH2_AUTHORIZATION_REQUEST", "oauth2_auth_request", |
|
280 |
+ |
|
281 |
+ // 카카오 관련 |
|
282 |
+ "kakao_login", "_kadu", "_kadub", "_kalt", "_kawlt", "_kawltea", |
|
283 |
+ "_karmt", "_karmts", "_tiara", "_dfs", |
|
284 |
+ |
|
285 |
+ // 네이버 관련 |
|
286 |
+ "NID_AUT", "NID_SES", "NID_JKL", "NID_INF", "NID_LOG", |
|
287 |
+ |
|
288 |
+ // 구글 관련 |
|
289 |
+ "SACSID", "APISID", "SSID", "HSID", "SID", "1P_JAR", |
|
290 |
+ "__Secure-1PAPISID", "__Secure-1PSID", "__Secure-3PAPISID", "__Secure-3PSID", |
|
291 |
+ "ACCOUNT_CHOOSER", "LSID", "GAPS", |
|
292 |
+ |
|
293 |
+ // 기타 소셜 로그인 |
|
294 |
+ "facebook_login", "twitter_login", "github_login", |
|
295 |
+ |
|
296 |
+ // 시스템 쿠키 |
|
297 |
+ "remember-me", "user-session", "auth-token", "login-token", "csrf-token" |
|
298 |
+ }; |
|
299 |
+ |
|
300 |
+ // 다양한 경로와 도메인에서 쿠키 삭제 |
|
301 |
+ String[] paths = { "/", "/oauth2", "/login", "/auth", "/api", "/mbr" }; |
|
302 |
+ String serverName = req.getServerName(); |
|
303 |
+ String[] domains = { |
|
304 |
+ null, // 도메인 없음 |
|
305 |
+ "." + serverName, |
|
306 |
+ serverName, |
|
307 |
+ ".localhost", |
|
308 |
+ "localhost", |
|
309 |
+ ".google.com", |
|
310 |
+ ".kakao.com", |
|
311 |
+ ".naver.com" |
|
312 |
+ }; |
|
313 |
+ |
|
314 |
+ // 각 쿠키를 모든 경로와 도메인 조합으로 삭제 |
|
315 |
+ for (String cookieName : cookieNames) { |
|
316 |
+ for (String path : paths) { |
|
317 |
+ for (String domain : domains) { |
|
318 |
+ Cookie cookie = new Cookie(cookieName, ""); |
|
319 |
+ cookie.setMaxAge(0); |
|
320 |
+ cookie.setPath(path); |
|
321 |
+ cookie.setHttpOnly(true); |
|
322 |
+ |
|
323 |
+ if (domain != null && !domain.equals("null") && !domain.isEmpty()) { |
|
324 |
+ try { |
|
325 |
+ cookie.setDomain(domain); |
|
326 |
+ } catch (Exception e) { |
|
327 |
+ // 도메인 설정 실패해도 계속 진행 |
|
328 |
+ } |
|
329 |
+ } |
|
330 |
+ |
|
331 |
+ // HTTPS 환경이면 Secure 설정 |
|
332 |
+ if (req.isSecure()) { |
|
333 |
+ cookie.setSecure(true); |
|
334 |
+ } |
|
335 |
+ |
|
336 |
+ res.addCookie(cookie); |
|
337 |
+ } |
|
338 |
+ } |
|
339 |
+ } |
|
340 |
+ |
|
341 |
+ // 기존 요청에 있는 모든 쿠키도 제거 |
|
342 |
+ if (req.getCookies() != null) { |
|
343 |
+ for (Cookie existingCookie : req.getCookies()) { |
|
344 |
+ // 기본 경로로 삭제 |
|
345 |
+ Cookie deleteCookie = new Cookie(existingCookie.getName(), ""); |
|
346 |
+ deleteCookie.setMaxAge(0); |
|
347 |
+ deleteCookie.setPath("/"); |
|
348 |
+ deleteCookie.setHttpOnly(true); |
|
349 |
+ |
|
350 |
+ if (req.isSecure()) { |
|
351 |
+ deleteCookie.setSecure(true); |
|
352 |
+ } |
|
353 |
+ |
|
354 |
+ res.addCookie(deleteCookie); |
|
355 |
+ |
|
356 |
+ // 원본 경로로도 삭제 시도 |
|
357 |
+ if (existingCookie.getPath() != null) { |
|
358 |
+ Cookie originalPathCookie = new Cookie(existingCookie.getName(), ""); |
|
359 |
+ originalPathCookie.setMaxAge(0); |
|
360 |
+ originalPathCookie.setPath(existingCookie.getPath()); |
|
361 |
+ originalPathCookie.setHttpOnly(true); |
|
362 |
+ |
|
363 |
+ if (existingCookie.getDomain() != null) { |
|
364 |
+ try { |
|
365 |
+ originalPathCookie.setDomain(existingCookie.getDomain()); |
|
366 |
+ } catch (Exception e) { |
|
367 |
+ // 도메인 설정 실패해도 계속 |
|
368 |
+ } |
|
369 |
+ } |
|
370 |
+ |
|
371 |
+ if (req.isSecure()) { |
|
372 |
+ originalPathCookie.setSecure(true); |
|
373 |
+ } |
|
374 |
+ |
|
375 |
+ res.addCookie(originalPathCookie); |
|
376 |
+ } |
|
377 |
+ } |
|
378 |
+ } |
|
379 |
+ |
|
380 |
+ log.info("모든 쿠키 완전 제거 완료"); |
|
381 |
+ |
|
382 |
+ } catch (Exception e) { |
|
383 |
+ log.error("쿠키 완전 제거 실패", e); |
|
384 |
+ } |
|
385 |
+ } |
|
386 |
+ |
|
387 |
+ /** |
|
275 | 388 |
* 토큰 재발급 |
276 | 389 |
*/ |
277 | 390 |
@PostMapping("/refresh/tokenReissue.json") |
--- src/main/java/com/takensoft/common/file/service/Impl/FileServiceImpl.java
+++ src/main/java/com/takensoft/common/file/service/Impl/FileServiceImpl.java
... | ... | @@ -114,7 +114,7 @@ |
114 | 114 |
String extsn = StringUtils.getFilenameExtension(fileName); // 확장자 |
115 | 115 |
String mg = Long.toString(file.getSize()); // 크기 |
116 | 116 |
String absltPath = makeDirectories(uploadPath) + File.separator + maskNm + "." + extsn; // 절대경로 |
117 |
- String partPath = File.separator + maskNm + "." + extsn; // 일부경로 |
|
117 |
+ String rltPath = File.separator + maskNm + "." + extsn; // 일부경로 |
|
118 | 118 |
|
119 | 119 |
// FileVO 생성 |
120 | 120 |
FileVO fileVO = new FileVO(); |
... | ... | @@ -123,7 +123,7 @@ |
123 | 123 |
fileVO.setMaskNm(maskNm); // 마스크명 |
124 | 124 |
// 파일타입 추후에 추가 |
125 | 125 |
fileVO.setAbsltPath(absltPath); // 절대경로 |
126 |
- fileVO.setPartPath(partPath); // 일부경로 |
|
126 |
+ fileVO.setRltPath(rltPath); // 일부경로 |
|
127 | 127 |
fileVO.setExtnNm(extsn); // 확장자 |
128 | 128 |
fileVO.setFileSz(mg); // 크기 |
129 | 129 |
// 등록자 생성 |
--- src/main/java/com/takensoft/common/file/vo/FileVO.java
+++ src/main/java/com/takensoft/common/file/vo/FileVO.java
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 |
private String maskNm; // 마스크명 |
19 | 19 |
private String fileType; // 파일타입 |
20 | 20 |
private String absltPath; // 절대경로 |
21 |
- private String partPath; // 일부경로 |
|
21 |
+ private String rltPath; // 일부경로 |
|
22 | 22 |
private String extnNm; // 확장자 |
23 | 23 |
private String fileSz; // 크기 |
24 | 24 |
private String rgtr; // 등록자 |
--- src/main/java/com/takensoft/common/filter/AccesFilter.java
+++ src/main/java/com/takensoft/common/filter/AccesFilter.java
... | ... | @@ -130,7 +130,7 @@ |
130 | 130 |
*/ |
131 | 131 |
private boolean isAccesCntrl(List<AccesCtrlVO> accesCtrlList, HttpServletRequest req) { |
132 | 132 |
for(AccesCtrlVO vo : accesCtrlList) { |
133 |
- AntPathRequestMatcher matcher = new AntPathRequestMatcher(vo.getCntrlCrs()); |
|
133 |
+ AntPathRequestMatcher matcher = new AntPathRequestMatcher(vo.getCntrlPath()); |
|
134 | 134 |
// 접근 제어 경로에 해당 하는 경우 |
135 | 135 |
if(matcher.matches(req)) { |
136 | 136 |
return "permit".equals(vo.getCntrlType()); // 허용일 경우 true 반환, 제한일 경우 false 반환 |
--- src/main/java/com/takensoft/common/filter/JWTFilter.java
+++ src/main/java/com/takensoft/common/filter/JWTFilter.java
... | ... | @@ -40,9 +40,8 @@ |
40 | 40 |
* 2025.05.30 | takensoft | 모드별 명확한 분기 처리, Redis 통합 |
41 | 41 |
* 2025.06.02 | takensoft | 세션 모드 중복로그인 검증 개선, 401 에러 통일 |
42 | 42 |
* 2025.06.04 | takensoft | 세션에서 JWT 토큰 추출하여 통합 처리 |
43 |
- * 2025.06.09 | takensoft | 중복로그인 검증 로직 개선, 안정성 향상 |
|
44 | 43 |
* |
45 |
- * JWT 토큰 검증 Filter - 중복로그인 검증 개선 |
|
44 |
+ * JWT 토큰 검증 Filter |
|
46 | 45 |
*/ |
47 | 46 |
@Slf4j |
48 | 47 |
public class JWTFilter extends OncePerRequestFilter { |
... | ... | @@ -83,16 +82,12 @@ |
83 | 82 |
handleJwtMode(request, response, filterChain); |
84 | 83 |
} |
85 | 84 |
} catch (ExpiredJwtException e) { |
86 |
- log.debug("JWT 토큰 만료: {}", e.getMessage()); |
|
87 | 85 |
FilterExceptionHandler.jwtError(response, e); |
88 | 86 |
} catch (JwtException e) { |
89 |
- log.debug("JWT 토큰 오류: {}", e.getMessage()); |
|
90 | 87 |
FilterExceptionHandler.jwtError(response, e); |
91 | 88 |
} catch (InsufficientAuthenticationException e) { |
92 |
- log.debug("인증 부족: {}", e.getMessage()); |
|
93 | 89 |
FilterExceptionHandler.jwtError(response, e); |
94 | 90 |
} catch (Exception e) { |
95 |
- log.error("JWT 필터 처리 중 예상치 못한 오류: {}", e.getMessage(), e); |
|
96 | 91 |
FilterExceptionHandler.jwtError(response, e); |
97 | 92 |
} |
98 | 93 |
} |
... | ... | @@ -118,7 +113,6 @@ |
118 | 113 |
// 세션에서 JWT 토큰 꺼내기 |
119 | 114 |
String sessionToken = (String) session.getAttribute(SESSION_JWT_KEY); |
120 | 115 |
if (sessionToken == null) { |
121 |
- log.debug("세션에 JWT 토큰이 없음 - 사용자: {}", mbrId); |
|
122 | 116 |
// 토큰이 없어도 세션 자체는 유효할 수 있으므로 계속 진행 |
123 | 117 |
filterChain.doFilter(request, response); |
124 | 118 |
return; |
... | ... | @@ -127,7 +121,6 @@ |
127 | 121 |
// 중복 로그인 검증 (비허용 모드일 때만) |
128 | 122 |
if (!loginPolicyService.getPolicy()) { |
129 | 123 |
if (!validateSessionToken(mbrId, sessionToken, session)) { |
130 |
- log.info("세션 중복로그인 감지 - 사용자: {}", mbrId); |
|
131 | 124 |
sendTokenExpiredResponse(response, request); |
132 | 125 |
return; |
133 | 126 |
} |
... | ... | @@ -149,7 +142,6 @@ |
149 | 142 |
processJwtToken(wrappedRequest, response, filterChain, sessionToken); |
150 | 143 |
|
151 | 144 |
} catch (Exception e) { |
152 |
- log.debug("세션 모드 JWT 검증 중 오류 - 사용자: {}, 오류: {}", mbrId, e.getMessage()); |
|
153 | 145 |
// JWT 토큰에 문제가 있어도 세션은 유효할 수 있으므로 계속 진행 |
154 | 146 |
filterChain.doFilter(request, response); |
155 | 147 |
} |
... | ... | @@ -164,20 +156,12 @@ |
164 | 156 |
String storedToken = redisTemplate.opsForValue().get(tokenKey); |
165 | 157 |
|
166 | 158 |
if (storedToken == null) { |
167 |
- log.debug("Redis에 저장된 토큰이 없음 - 사용자: {}", mbrId); |
|
168 | 159 |
return false; |
169 | 160 |
} |
170 | 161 |
|
171 | 162 |
if (!storedToken.equals(sessionToken)) { |
172 |
- log.info("토큰 불일치로 인한 중복로그인 감지 - 사용자: {}", mbrId); |
|
173 |
- |
|
174 | 163 |
// 세션 무효화 |
175 |
- try { |
|
176 |
- session.invalidate(); |
|
177 |
- } catch (IllegalStateException e) { |
|
178 |
- log.debug("이미 무효화된 세션: {}", e.getMessage()); |
|
179 |
- } |
|
180 |
- |
|
164 |
+ session.invalidate(); |
|
181 | 165 |
return false; |
182 | 166 |
} |
183 | 167 |
|
... | ... | @@ -186,7 +170,6 @@ |
186 | 170 |
return true; |
187 | 171 |
|
188 | 172 |
} catch (Exception e) { |
189 |
- log.error("세션 토큰 검증 중 오류 - 사용자: {}, 오류: {}", mbrId, e.getMessage(), e); |
|
190 | 173 |
return false; |
191 | 174 |
} |
192 | 175 |
} |
... | ... | @@ -206,7 +189,6 @@ |
206 | 189 |
// JWT 토큰 만료 체크 |
207 | 190 |
Boolean isExpired = (Boolean) jwtUtil.getClaim(accessToken, "isExpired"); |
208 | 191 |
if (isExpired != null && isExpired) { |
209 |
- log.debug("JWT 토큰 만료됨"); |
|
210 | 192 |
sendTokenExpiredResponse(response, request); |
211 | 193 |
return; |
212 | 194 |
} |
... | ... | @@ -222,7 +204,6 @@ |
222 | 204 |
String loginMode = loginModeService.getLoginMode(); |
223 | 205 |
if ("J".equals(loginMode) && !loginPolicyService.getPolicy()) { |
224 | 206 |
if (!validateJwtToken(mbrId, accessToken)) { |
225 |
- log.info("JWT 중복로그인 감지 - 사용자: {}", mbrId); |
|
226 | 207 |
sendTokenExpiredResponse(response, request); |
227 | 208 |
return; |
228 | 209 |
} |
... | ... | @@ -244,27 +225,23 @@ |
244 | 225 |
String storedToken = redisTemplate.opsForValue().get(tokenKey); |
245 | 226 |
|
246 | 227 |
if (storedToken == null) { |
247 |
- log.debug("Redis에 저장된 JWT 토큰이 없음 - 사용자: {}", mbrId); |
|
248 | 228 |
return false; |
249 | 229 |
} |
250 | 230 |
|
251 | 231 |
String currentToken = jwtUtil.extractToken(accessToken); |
252 | 232 |
|
253 | 233 |
if (!storedToken.equals(currentToken)) { |
254 |
- log.info("JWT 토큰 불일치로 인한 중복로그인 감지 - 사용자: {}", mbrId); |
|
255 | 234 |
return false; |
256 | 235 |
} |
257 |
- |
|
258 | 236 |
return true; |
259 | 237 |
|
260 | 238 |
} catch (Exception e) { |
261 |
- log.error("JWT 토큰 검증 중 오류 - 사용자: {}, 오류: {}", mbrId, e.getMessage(), e); |
|
262 | 239 |
return false; |
263 | 240 |
} |
264 | 241 |
} |
265 | 242 |
|
266 | 243 |
/** |
267 |
- * JWT 토큰 처리 (재귀 호출 방지) |
|
244 |
+ * JWT 토큰 처리 |
|
268 | 245 |
*/ |
269 | 246 |
private void processJwtToken(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain, String accessToken) |
270 | 247 |
throws ServletException, IOException { |
... | ... | @@ -272,7 +249,6 @@ |
272 | 249 |
// JWT 토큰 만료 체크 |
273 | 250 |
Boolean isExpired = (Boolean) jwtUtil.getClaim("Bearer " + accessToken, "isExpired"); |
274 | 251 |
if (isExpired != null && isExpired) { |
275 |
- log.debug("JWT 토큰 만료됨"); |
|
276 | 252 |
filterChain.doFilter(request, response); |
277 | 253 |
return; |
278 | 254 |
} |
--- src/main/java/com/takensoft/common/idgen/context/ContextIdgen.java
+++ src/main/java/com/takensoft/common/idgen/context/ContextIdgen.java
... | ... | @@ -175,7 +175,7 @@ |
175 | 175 |
idgenServiceImpl.setCipers(15); |
176 | 176 |
idgenServiceImpl.setFillChar('0'); |
177 | 177 |
idgenServiceImpl.setPrefix("LOGIN_MODE_"); |
178 |
- idgenServiceImpl.setTblNm("LOGIN_MODE_ID"); |
|
178 |
+ idgenServiceImpl.setTblNm("LGN_MTH_ID"); |
|
179 | 179 |
return idgenServiceImpl; |
180 | 180 |
} |
181 | 181 |
|
... | ... | @@ -186,7 +186,7 @@ |
186 | 186 |
idgenServiceImpl.setCipers(15); |
187 | 187 |
idgenServiceImpl.setFillChar('0'); |
188 | 188 |
idgenServiceImpl.setPrefix("CNTXT_PTH_"); |
189 |
- idgenServiceImpl.setTblNm("CNTXT_PTH_ID"); |
|
189 |
+ idgenServiceImpl.setTblNm("CNTXT_PATH_ID"); |
|
190 | 190 |
return idgenServiceImpl; |
191 | 191 |
} |
192 | 192 |
|
... | ... | @@ -197,7 +197,7 @@ |
197 | 197 |
idgenServiceImpl.setCipers(15); |
198 | 198 |
idgenServiceImpl.setFillChar('0'); |
199 | 199 |
idgenServiceImpl.setPrefix("EML_2ND_AUTH_"); |
200 |
- idgenServiceImpl.setTblNm("EML_2ND_AUTH_ID"); |
|
200 |
+ idgenServiceImpl.setTblNm("EML_SCD_CEPT_ID"); |
|
201 | 201 |
return idgenServiceImpl; |
202 | 202 |
} |
203 | 203 |
|
--- src/main/java/com/takensoft/common/oauth/handler/OAuth2AuthenticationSuccessHandler.java
+++ src/main/java/com/takensoft/common/oauth/handler/OAuth2AuthenticationSuccessHandler.java
... | ... | @@ -15,6 +15,7 @@ |
15 | 15 |
import lombok.extern.slf4j.Slf4j; |
16 | 16 |
import org.springframework.beans.factory.annotation.Value; |
17 | 17 |
import org.springframework.security.core.Authentication; |
18 |
+import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; |
|
18 | 19 |
import org.springframework.security.oauth2.core.oidc.user.OidcUser; |
19 | 20 |
import org.springframework.security.oauth2.core.user.OAuth2User; |
20 | 21 |
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; |
... | ... | @@ -54,16 +55,22 @@ |
54 | 55 |
@Override |
55 | 56 |
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { |
56 | 57 |
try { |
58 |
+ log.info("OAuth2 로그인 성공 핸들러 시작"); |
|
59 |
+ |
|
57 | 60 |
// OAuth2User 타입 확인 및 정보 추출 |
58 | 61 |
OAuth2UserInfo userInfo = extractUserInfo(authentication); |
59 | 62 |
|
60 | 63 |
if (userInfo == null) { |
64 |
+ log.error("사용자 정보 추출 실패"); |
|
61 | 65 |
handleOAuth2Error(response, new Exception("사용자 정보 추출 실패")); |
62 | 66 |
return; |
63 | 67 |
} |
64 | 68 |
|
69 |
+ log.info("OAuth2 사용자 정보 추출 성공 - Provider: {}, Email: {}", userInfo.provider, userInfo.email); |
|
70 |
+ |
|
65 | 71 |
// 현재 설정된 로그인 모드 확인 |
66 | 72 |
String currentLoginMode = loginModeService.getLoginMode(); |
73 |
+ log.info("현재 로그인 모드: {}", currentLoginMode); |
|
67 | 74 |
|
68 | 75 |
// 통합 로그인 서비스를 통한 OAuth2 사용자 처리 |
69 | 76 |
MberVO mber = unifiedLoginService.processOAuth2User( |
... | ... | @@ -82,20 +89,26 @@ |
82 | 89 |
// LoginUtil을 통한 통합 로그인 처리 |
83 | 90 |
loginUtil.successLogin(mber, request, response); |
84 | 91 |
|
85 |
- // OAuth2 성공 후 프론트엔드로 리다이렉트 |
|
86 |
- String redirectUrl = String.format("%s/login.page?oauth_success=true&loginMode=%s", frontUrl, currentLoginMode); |
|
92 |
+ // ★★★ 중요: 메인 페이지로 리다이렉트 (login.page가 아닌 /) |
|
93 |
+ String redirectUrl = String.format("%s/?oauth_success=true&loginMode=%s", frontUrl, currentLoginMode); |
|
94 |
+ log.info("OAuth2 성공 리다이렉트: {}", redirectUrl); |
|
95 |
+ |
|
87 | 96 |
getRedirectStrategy().sendRedirect(request, response, redirectUrl); |
88 | 97 |
|
89 | 98 |
} catch (Exception e) { |
99 |
+ log.error("OAuth2 로그인 처리 중 오류", e); |
|
90 | 100 |
handleOAuth2Error(response, e); |
91 | 101 |
} |
92 | 102 |
} |
93 | 103 |
|
94 | 104 |
/** |
95 |
- * OAuth2User에서 사용자 정보 추출 (타입별 처리) |
|
105 |
+ * OAuth2User에서 사용자 정보 추출 (개선된 버전) |
|
96 | 106 |
*/ |
97 | 107 |
private OAuth2UserInfo extractUserInfo(Authentication authentication) { |
98 | 108 |
Object principal = authentication.getPrincipal(); |
109 |
+ String provider = determineProvider(authentication); |
|
110 |
+ |
|
111 |
+ log.info("Principal 타입: {}, Provider: {}", principal.getClass().getSimpleName(), provider); |
|
99 | 112 |
|
100 | 113 |
try { |
101 | 114 |
if (principal instanceof CustomOAuth2UserVO) { |
... | ... | @@ -111,16 +124,18 @@ |
111 | 124 |
} else if (principal instanceof OidcUser) { |
112 | 125 |
// OIDC 사용자 (구글) |
113 | 126 |
OidcUser oidcUser = (OidcUser) principal; |
114 |
- return extractOidcUserInfo(oidcUser, authentication); |
|
127 |
+ return extractOidcUserInfo(oidcUser, provider); |
|
115 | 128 |
|
116 | 129 |
} else if (principal instanceof OAuth2User) { |
117 | 130 |
// 일반 OAuth2 사용자 |
118 | 131 |
OAuth2User oauth2User = (OAuth2User) principal; |
119 |
- return extractOAuth2UserInfo(oauth2User, authentication); |
|
132 |
+ return extractOAuth2UserInfo(oauth2User, provider); |
|
120 | 133 |
} else { |
134 |
+ log.error("지원하지 않는 Principal 타입: {}", principal.getClass()); |
|
121 | 135 |
return null; |
122 | 136 |
} |
123 | 137 |
} catch (Exception e) { |
138 |
+ log.error("사용자 정보 추출 중 오류", e); |
|
124 | 139 |
return null; |
125 | 140 |
} |
126 | 141 |
} |
... | ... | @@ -128,18 +143,25 @@ |
128 | 143 |
/** |
129 | 144 |
* OIDC 사용자 정보 추출 (구글) |
130 | 145 |
*/ |
131 |
- private OAuth2UserInfo extractOidcUserInfo(OidcUser oidcUser, Authentication authentication) { |
|
146 |
+ private OAuth2UserInfo extractOidcUserInfo(OidcUser oidcUser, String provider) { |
|
132 | 147 |
try { |
133 |
- String provider = determineProvider(authentication); |
|
134 |
- Map<String, Object> attributes = oidcUser.getAttributes(); |
|
148 |
+ log.info("OIDC 사용자 정보 추출 시작 - Provider: {}", provider); |
|
135 | 149 |
|
136 |
- return new OAuth2UserInfo( |
|
137 |
- provider, |
|
138 |
- oidcUser.getSubject(), // OIDC의 subject가 사용자 ID |
|
139 |
- oidcUser.getFullName() != null ? oidcUser.getFullName() : oidcUser.getGivenName(), |
|
140 |
- oidcUser.getEmail() |
|
141 |
- ); |
|
150 |
+ String id = oidcUser.getSubject(); // OIDC의 subject가 사용자 ID |
|
151 |
+ String name = oidcUser.getFullName(); |
|
152 |
+ if (name == null || name.trim().isEmpty()) { |
|
153 |
+ name = oidcUser.getGivenName(); |
|
154 |
+ } |
|
155 |
+ if (name == null || name.trim().isEmpty()) { |
|
156 |
+ name = oidcUser.getEmail(); |
|
157 |
+ } |
|
158 |
+ String email = oidcUser.getEmail(); |
|
159 |
+ |
|
160 |
+ log.info("OIDC 정보 - ID: {}, Name: {}, Email: {}", id, name, email); |
|
161 |
+ |
|
162 |
+ return new OAuth2UserInfo(provider, id, name, email); |
|
142 | 163 |
} catch (Exception e) { |
164 |
+ log.error("OIDC 사용자 정보 추출 실패", e); |
|
143 | 165 |
return null; |
144 | 166 |
} |
145 | 167 |
} |
... | ... | @@ -147,10 +169,11 @@ |
147 | 169 |
/** |
148 | 170 |
* 일반 OAuth2 사용자 정보 추출 |
149 | 171 |
*/ |
150 |
- private OAuth2UserInfo extractOAuth2UserInfo(OAuth2User oauth2User, Authentication authentication) { |
|
172 |
+ private OAuth2UserInfo extractOAuth2UserInfo(OAuth2User oauth2User, String provider) { |
|
151 | 173 |
try { |
152 |
- String provider = determineProvider(authentication); |
|
174 |
+ log.info("OAuth2 사용자 정보 추출 시작 - Provider: {}", provider); |
|
153 | 175 |
Map<String, Object> attributes = oauth2User.getAttributes(); |
176 |
+ log.info("OAuth2 Attributes: {}", attributes.keySet()); |
|
154 | 177 |
|
155 | 178 |
String id = null; |
156 | 179 |
String name = null; |
... | ... | @@ -181,13 +204,16 @@ |
181 | 204 |
|
182 | 205 |
case "google": |
183 | 206 |
id = (String) attributes.get("sub"); |
207 |
+ if (id == null) id = (String) attributes.get("id"); |
|
184 | 208 |
name = (String) attributes.get("name"); |
185 | 209 |
email = (String) attributes.get("email"); |
186 | 210 |
break; |
187 | 211 |
} |
188 | 212 |
|
213 |
+ log.info("추출된 정보 - ID: {}, Name: {}, Email: {}", id, name, email); |
|
189 | 214 |
return new OAuth2UserInfo(provider, id, name, email); |
190 | 215 |
} catch (Exception e) { |
216 |
+ log.error("OAuth2 사용자 정보 추출 실패", e); |
|
191 | 217 |
return null; |
192 | 218 |
} |
193 | 219 |
} |
... | ... | @@ -196,12 +222,21 @@ |
196 | 222 |
* 제공자 결정 |
197 | 223 |
*/ |
198 | 224 |
private String determineProvider(Authentication authentication) { |
199 |
- // 클라이언트 등록 ID에서 제공자 결정 |
|
225 |
+ if (authentication instanceof OAuth2AuthenticationToken) { |
|
226 |
+ OAuth2AuthenticationToken oauth2Token = (OAuth2AuthenticationToken) authentication; |
|
227 |
+ String registrationId = oauth2Token.getAuthorizedClientRegistrationId(); |
|
228 |
+ log.info("OAuth2 Registration ID: {}", registrationId); |
|
229 |
+ return registrationId.toLowerCase(); // 소문자로 통일 |
|
230 |
+ } |
|
231 |
+ |
|
200 | 232 |
String name = authentication.getName(); |
233 |
+ log.info("Authentication Name: {}", name); |
|
234 |
+ |
|
201 | 235 |
if (name != null) { |
202 |
- if (name.contains("google")) return "google"; |
|
203 |
- if (name.contains("kakao")) return "kakao"; |
|
204 |
- if (name.contains("naver")) return "naver"; |
|
236 |
+ String lowerName = name.toLowerCase(); |
|
237 |
+ if (lowerName.contains("google")) return "google"; |
|
238 |
+ if (lowerName.contains("kakao")) return "kakao"; |
|
239 |
+ if (lowerName.contains("naver")) return "naver"; |
|
205 | 240 |
} |
206 | 241 |
|
207 | 242 |
// 기본값 |
... | ... | @@ -212,17 +247,21 @@ |
212 | 247 |
* 로그인 이력 저장 - OAuth2 전용 |
213 | 248 |
*/ |
214 | 249 |
private void saveLoginHistory(HttpServletRequest request, MberVO mber, String provider) { |
250 |
+ try { |
|
215 | 251 |
String userAgent = httpRequestUtil.getUserAgent(request); |
216 | 252 |
|
217 | 253 |
LgnHstryVO loginHistory = new LgnHstryVO(); |
218 | 254 |
loginHistory.setLgnId(mber.getLgnId()); |
219 | 255 |
loginHistory.setLgnType(mber.getAuthorities().stream().anyMatch(r -> r.getAuthority().equals("ROLE_ADMIN")) ? "0" : "1"); |
220 | 256 |
loginHistory.setCntnIp(httpRequestUtil.getIp(request)); |
221 |
- loginHistory.setCntnOperSys(httpRequestUtil.getOS(userAgent)); |
|
222 |
- loginHistory.setDeviceNm(httpRequestUtil.getDevice(userAgent)); |
|
257 |
+ loginHistory.setCntnOperSysm(httpRequestUtil.getOS(userAgent)); |
|
258 |
+ loginHistory.setDvcNm(httpRequestUtil.getDevice(userAgent)); |
|
223 | 259 |
loginHistory.setBrwsrNm(httpRequestUtil.getBrowser(userAgent)); |
224 | 260 |
|
225 | 261 |
lgnHstryService.LgnHstrySave(loginHistory); |
262 |
+ } catch (Exception e) { |
|
263 |
+ log.error("로그인 이력 저장 실패", e); |
|
264 |
+ } |
|
226 | 265 |
} |
227 | 266 |
|
228 | 267 |
/** |
... | ... | @@ -230,7 +269,7 @@ |
230 | 269 |
*/ |
231 | 270 |
private void handleOAuth2Error(HttpServletResponse response, Exception e) throws IOException { |
232 | 271 |
String message = URLEncoder.encode("OAuth 로그인에 실패했습니다.", "UTF-8"); |
233 |
- String errorUrl = String.format("%s/login.page?error=oauth2_failed&message=%s", frontUrl, message); |
|
272 |
+ String errorUrl = String.format("%s/?error=oauth2_failed&message=%s", frontUrl, message); |
|
234 | 273 |
getRedirectStrategy().sendRedirect(null, response, errorUrl); |
235 | 274 |
} |
236 | 275 |
|
--- src/main/java/com/takensoft/common/oauth/web/OAuth2Controller.java
+++ src/main/java/com/takensoft/common/oauth/web/OAuth2Controller.java
... | ... | @@ -20,7 +20,6 @@ |
20 | 20 |
|
21 | 21 |
import java.io.IOException; |
22 | 22 |
import java.util.Arrays; |
23 |
-import java.util.Enumeration; |
|
24 | 23 |
import java.util.HashMap; |
25 | 24 |
import java.util.List; |
26 | 25 |
|
--- src/main/java/com/takensoft/common/service/VerificationService.java
+++ src/main/java/com/takensoft/common/service/VerificationService.java
... | ... | @@ -79,6 +79,16 @@ |
79 | 79 |
public String getCurrentUserId() { |
80 | 80 |
String userId = null; |
81 | 81 |
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); |
82 |
+ |
|
83 |
+ |
|
84 |
+ // 디버깅용 로그 추가 |
|
85 |
+ System.out.println("Authentication: " + authentication); |
|
86 |
+ if(authentication != null) { |
|
87 |
+ System.out.println("Is Authenticated: " + authentication.isAuthenticated()); |
|
88 |
+ System.out.println("Principal Type: " + authentication.getPrincipal().getClass().getName()); |
|
89 |
+ System.out.println("Principal: " + authentication.getPrincipal()); |
|
90 |
+ } |
|
91 |
+ |
|
82 | 92 |
if(authentication != null && authentication.isAuthenticated()) { |
83 | 93 |
Object principal = authentication.getPrincipal(); |
84 | 94 |
if(principal instanceof MberVO) { |
--- src/main/java/com/takensoft/common/util/JWTUtil.java
+++ src/main/java/com/takensoft/common/util/JWTUtil.java
... | ... | @@ -84,7 +84,7 @@ |
84 | 84 |
|
85 | 85 |
/** |
86 | 86 |
* @param tkn JWT 토큰 문자열 |
87 |
- * @param knd 조회할 데이터의 종류 (예: ctgry, userId, loginId 등) |
|
87 |
+ * @param knd 조회할 데이터의 종류 (예: ctgry, userId, lgnId 등) |
|
88 | 88 |
* @return 조회된 클레임 데이터 (종류에 따라 String, Date, List 등으로 반환) |
89 | 89 |
* @throws IllegalArgumentException 유효하지 않은 knd 값일 경우 예외 발생 |
90 | 90 |
* |
--- src/main/java/com/takensoft/common/util/LoginUtil.java
+++ src/main/java/com/takensoft/common/util/LoginUtil.java
... | ... | @@ -65,17 +65,17 @@ |
65 | 65 |
public void successLogin(MberVO mber, HttpServletRequest req, HttpServletResponse res) throws IOException { |
66 | 66 |
String loginMode = loginModeService.getLoginMode(); |
67 | 67 |
res.setHeader("loginMode", loginMode); |
68 |
- // 로그인 이력 등록 |
|
69 |
- String loginType = (String) req.getAttribute("loginType"); |
|
70 |
- if (!"OAUTH2".equals(loginType)) { |
|
71 |
- saveLoginHistory(mber, req); |
|
72 |
- } |
|
68 |
+ // 로그인 이력 등록 |
|
69 |
+ String loginType = (String) req.getAttribute("loginType"); |
|
70 |
+ if (!"OAUTH2".equals(loginType)) { |
|
71 |
+ saveLoginHistory(mber, req); |
|
72 |
+ } |
|
73 | 73 |
|
74 |
- if ("S".equals(loginMode)) { |
|
75 |
- handleSessionLogin(mber, req, res); |
|
76 |
- } else { |
|
77 |
- handleJwtLogin(mber, req, res); |
|
78 |
- } |
|
74 |
+ if ("S".equals(loginMode)) { |
|
75 |
+ handleSessionLogin(mber, req, res); |
|
76 |
+ } else { |
|
77 |
+ handleJwtLogin(mber, req, res); |
|
78 |
+ } |
|
79 | 79 |
} |
80 | 80 |
|
81 | 81 |
/** |
... | ... | @@ -169,46 +169,46 @@ |
169 | 169 |
* 기존 세션 강제 로그아웃 |
170 | 170 |
*/ |
171 | 171 |
private void forceLogoutExistingSession(String mbrId) { |
172 |
- // 1. SessionUtil에서 기존 세션 제거 |
|
173 |
- sessionUtil.removeSession(mbrId); |
|
172 |
+ // 1. SessionUtil에서 기존 세션 제거 |
|
173 |
+ sessionUtil.removeSession(mbrId); |
|
174 | 174 |
|
175 |
- // 2. Redis에서 기존 세션 토큰 삭제 |
|
176 |
- String sessionTokenKey = "session_token:" + mbrId; |
|
177 |
- String existingToken = redisTemplate.opsForValue().get(sessionTokenKey); |
|
175 |
+ // 2. Redis에서 기존 세션 토큰 삭제 |
|
176 |
+ String sessionTokenKey = "session_token:" + mbrId; |
|
177 |
+ String existingToken = redisTemplate.opsForValue().get(sessionTokenKey); |
|
178 | 178 |
|
179 |
- if (existingToken != null) { |
|
180 |
- redisTemplate.delete(sessionTokenKey); |
|
181 |
- } |
|
182 |
- // 3. 기타 세션 관련 키 정리 |
|
183 |
- cleanupSessionRedisKeys(mbrId); |
|
179 |
+ if (existingToken != null) { |
|
180 |
+ redisTemplate.delete(sessionTokenKey); |
|
181 |
+ } |
|
182 |
+ // 3. 기타 세션 관련 키 정리 |
|
183 |
+ cleanupSessionRedisKeys(mbrId); |
|
184 | 184 |
} |
185 | 185 |
|
186 | 186 |
/** |
187 | 187 |
* 기존 JWT 강제 로그아웃 |
188 | 188 |
*/ |
189 | 189 |
private void forceLogoutExistingJWT(String mbrId) { |
190 |
- String jwtKey = "jwt:" + mbrId; |
|
191 |
- String existingToken = redisTemplate.opsForValue().get(jwtKey); |
|
190 |
+ String jwtKey = "jwt:" + mbrId; |
|
191 |
+ String existingToken = redisTemplate.opsForValue().get(jwtKey); |
|
192 | 192 |
|
193 |
- if (existingToken != null) { |
|
194 |
- redisTemplate.delete(jwtKey); |
|
195 |
- } |
|
193 |
+ if (existingToken != null) { |
|
194 |
+ redisTemplate.delete(jwtKey); |
|
195 |
+ } |
|
196 | 196 |
} |
197 | 197 |
|
198 | 198 |
/** |
199 | 199 |
* Redis에 세션 토큰 저장 |
200 | 200 |
*/ |
201 | 201 |
private void saveSessionTokenToRedis(String mbrId, String accessToken, int sessionTimeout) { |
202 |
- String tokenKey = "session_token:" + mbrId; |
|
203 |
- redisTemplate.opsForValue().set(tokenKey, accessToken, Duration.ofSeconds(sessionTimeout)); |
|
202 |
+ String tokenKey = "session_token:" + mbrId; |
|
203 |
+ redisTemplate.opsForValue().set(tokenKey, accessToken, Duration.ofSeconds(sessionTimeout)); |
|
204 | 204 |
} |
205 | 205 |
|
206 | 206 |
/** |
207 | 207 |
* Redis에 JWT 토큰 저장 |
208 | 208 |
*/ |
209 | 209 |
private void saveJWTTokenToRedis(String mbrId, String accessToken) { |
210 |
- String jwtKey = "jwt:" + mbrId; |
|
211 |
- redisTemplate.opsForValue().set(jwtKey, accessToken, JWT_ACCESSTIME, TimeUnit.MILLISECONDS); |
|
210 |
+ String jwtKey = "jwt:" + mbrId; |
|
211 |
+ redisTemplate.opsForValue().set(jwtKey, accessToken, JWT_ACCESSTIME, TimeUnit.MILLISECONDS); |
|
212 | 212 |
} |
213 | 213 |
|
214 | 214 |
/** |
... | ... | @@ -225,35 +225,35 @@ |
225 | 225 |
* 세션 로그인 응답 전송 |
226 | 226 |
*/ |
227 | 227 |
private void sendSessionLoginResponse(HttpServletResponse res, MberVO mber) throws IOException { |
228 |
- Map<String, Object> result = new HashMap<>(); |
|
229 |
- result.put("mbrId", mber.getMbrId()); |
|
230 |
- result.put("mbrNm", mber.getMbrNm()); |
|
231 |
- result.put("roles", mber.getAuthorList()); |
|
228 |
+ Map<String, Object> result = new HashMap<>(); |
|
229 |
+ result.put("mbrId", mber.getMbrId()); |
|
230 |
+ result.put("mbrNm", mber.getMbrNm()); |
|
231 |
+ result.put("roles", mber.getAuthorList()); |
|
232 | 232 |
|
233 |
- res.setContentType("application/json;charset=UTF-8"); |
|
234 |
- res.setCharacterEncoding("UTF-8"); |
|
235 |
- res.setStatus(HttpStatus.OK.value()); |
|
233 |
+ res.setContentType("application/json;charset=UTF-8"); |
|
234 |
+ res.setCharacterEncoding("UTF-8"); |
|
235 |
+ res.setStatus(HttpStatus.OK.value()); |
|
236 | 236 |
|
237 |
- String jsonResponse = new ObjectMapper().writeValueAsString(result); |
|
238 |
- res.getWriter().write(jsonResponse); |
|
239 |
- res.getWriter().flush(); |
|
237 |
+ String jsonResponse = new ObjectMapper().writeValueAsString(result); |
|
238 |
+ res.getWriter().write(jsonResponse); |
|
239 |
+ res.getWriter().flush(); |
|
240 | 240 |
} |
241 | 241 |
|
242 | 242 |
/** |
243 | 243 |
* 로그인 이력 저장 |
244 | 244 |
*/ |
245 | 245 |
private void saveLoginHistory(MberVO mber, HttpServletRequest req) { |
246 |
- String userAgent = httpRequestUtil.getUserAgent(req); |
|
246 |
+ String userAgent = httpRequestUtil.getUserAgent(req); |
|
247 | 247 |
|
248 |
- LgnHstryVO lgnHstryVO = new LgnHstryVO(); |
|
249 |
- lgnHstryVO.setLgnId(mber.getLgnId()); |
|
250 |
- lgnHstryVO.setLgnType(mber.getAuthorities().stream() |
|
251 |
- .anyMatch(role -> role.getAuthority().equals("ROLE_ADMIN")) ? "0" : "1"); |
|
252 |
- lgnHstryVO.setCntnIp(httpRequestUtil.getIp(req)); |
|
253 |
- lgnHstryVO.setCntnOperSys(httpRequestUtil.getOS(userAgent)); |
|
254 |
- lgnHstryVO.setDeviceNm(httpRequestUtil.getDevice(userAgent)); |
|
255 |
- lgnHstryVO.setBrwsrNm(httpRequestUtil.getBrowser(userAgent)); |
|
248 |
+ LgnHstryVO lgnHstryVO = new LgnHstryVO(); |
|
249 |
+ lgnHstryVO.setLgnId(mber.getLgnId()); |
|
250 |
+ lgnHstryVO.setLgnType(mber.getAuthorities().stream() |
|
251 |
+ .anyMatch(role -> role.getAuthority().equals("ROLE_ADMIN")) ? "0" : "1"); |
|
252 |
+ lgnHstryVO.setCntnIp(httpRequestUtil.getIp(req)); |
|
253 |
+ lgnHstryVO.setCntnOperSysm(httpRequestUtil.getOS(userAgent)); |
|
254 |
+ lgnHstryVO.setDvcNm(httpRequestUtil.getDevice(userAgent)); |
|
255 |
+ lgnHstryVO.setBrwsrNm(httpRequestUtil.getBrowser(userAgent)); |
|
256 | 256 |
|
257 |
- lgnHstryService.LgnHstrySave(lgnHstryVO); |
|
257 |
+ lgnHstryService.LgnHstrySave(lgnHstryVO); |
|
258 | 258 |
} |
259 | 259 |
}(파일 끝에 줄바꿈 문자 없음) |
--- src/main/java/com/takensoft/portal/search/service/Impl/SearchServiceImpl.java
+++ src/main/java/com/takensoft/portal/search/service/Impl/SearchServiceImpl.java
... | ... | @@ -113,7 +113,7 @@ |
113 | 113 |
/* 게시판 검색 */ |
114 | 114 |
if (menuType.equals("bbs")) { |
115 | 115 |
// 타입이 게시판일 시 게시판 내용 테이블에서 조회 |
116 |
- String bbsMngId = menu.getMenuTypeCtgry(); // 게시판 관리 ID |
|
116 |
+ String bbsMngId = menu.getMenuTypeArtcl(); // 게시판 관리 ID |
|
117 | 117 |
searchVO.setBbsMngId(bbsMngId); |
118 | 118 |
|
119 | 119 |
//TODO: (사용중)방법1.전체 개수 구하는 SQL, 미리보기 개수만큼 목록을 조회하는 SQL |
... | ... | @@ -139,7 +139,7 @@ |
139 | 139 |
/* 컨텐츠 검색 */ |
140 | 140 |
else if (menuType.equals("conts")) { |
141 | 141 |
// 타입이 콘텐츠일 시 하드코딩으로 검색 조회 |
142 |
- String contsId = menu.getMenuTypeCtgry(); // 컨텐츠 ID |
|
142 |
+ String contsId = menu.getMenuTypeArtcl(); // 컨텐츠 ID |
|
143 | 143 |
List<SearchContentVO> contentList = new ArrayList<>(); |
144 | 144 |
|
145 | 145 |
// 기업 정보 검색 |
--- src/main/resources/mybatis/mapper/accesCtrl/accesCtrl-SQL.xml
+++ src/main/resources/mybatis/mapper/accesCtrl/accesCtrl-SQL.xml
... | ... | @@ -16,14 +16,14 @@ |
16 | 16 |
INSERT INTO acs_cntrl_mng ( |
17 | 17 |
cntrl_type |
18 | 18 |
, cntrl_ip |
19 |
- , cntrl_crs |
|
19 |
+ , cntrl_path |
|
20 | 20 |
, use_yn |
21 | 21 |
, rgtr |
22 | 22 |
, reg_dt |
23 | 23 |
) VALUES ( |
24 | 24 |
#{cntrlType} |
25 | 25 |
, #{cntrlIp} |
26 |
- , #{cntrlCrs} |
|
26 |
+ , #{cntrlPath} |
|
27 | 27 |
, 'Y' |
28 | 28 |
, #{rgtr} |
29 | 29 |
, NOW() |
... | ... | @@ -39,7 +39,7 @@ |
39 | 39 |
UPDATE acs_cntrl_mng |
40 | 40 |
SET cntrl_type = #{cntrlType} |
41 | 41 |
, cntrl_ip = #{cntrlIp} |
42 |
- , cntrl_crs = #{cntrlCrs} |
|
42 |
+ , cntrl_path = #{cntrlPath} |
|
43 | 43 |
, use_yn = #{useYn} |
44 | 44 |
, mdfr = #{mdfr} |
45 | 45 |
, mdfcn_dt = NOW() |
... | ... | @@ -51,7 +51,7 @@ |
51 | 51 |
, acm.cntrl_type |
52 | 52 |
, cm.cd_nm AS cntrl_type_nm |
53 | 53 |
, acm.cntrl_ip |
54 |
- , acm.cntrl_crs |
|
54 |
+ , acm.cntrl_path |
|
55 | 55 |
, acm.use_yn |
56 | 56 |
, acm.rgtr |
57 | 57 |
, TO_CHAR(acm.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt |
... | ... | @@ -70,14 +70,14 @@ |
70 | 70 |
AND acm.cntrl_ip LIKE '%' || #{searchText} || '%' |
71 | 71 |
</if> |
72 | 72 |
<if test="searchType == 'crs'"> |
73 |
- AND acm.cntrl_crs LIKE '%' || #{searchText} || '%' |
|
73 |
+ AND acm.cntrl_path LIKE '%' || #{searchText} || '%' |
|
74 | 74 |
</if> |
75 | 75 |
</when> |
76 | 76 |
<otherwise> |
77 | 77 |
AND ( |
78 | 78 |
acm.cntrl_ip LIKE '%' || #{searchText} || '%' |
79 | 79 |
OR |
80 |
- acm.cntrl_crs LIKE '%' || #{searchText} || '%' |
|
80 |
+ acm.cntrl_path LIKE '%' || #{searchText} || '%' |
|
81 | 81 |
) |
82 | 82 |
</otherwise> |
83 | 83 |
</choose> |
--- src/main/resources/mybatis/mapper/bbs/bbsCn-SQL.xml
+++ src/main/resources/mybatis/mapper/bbs/bbsCn-SQL.xml
... | ... | @@ -45,7 +45,7 @@ |
45 | 45 |
, use_yn |
46 | 46 |
, rgtr |
47 | 47 |
, reg_dt |
48 |
- , bbs_cn_text |
|
48 |
+ , bbs_cn_txt |
|
49 | 49 |
) VALUES ( |
50 | 50 |
#{bbsId} |
51 | 51 |
, #{bbsMngId} |
... | ... | @@ -67,7 +67,7 @@ |
67 | 67 |
, 'Y' |
68 | 68 |
, #{rgtr} |
69 | 69 |
, NOW() |
70 |
- , #{bbsCnText} |
|
70 |
+ , #{bbsCnTxt} |
|
71 | 71 |
) |
72 | 72 |
</insert> |
73 | 73 |
|
... | ... | @@ -94,7 +94,7 @@ |
94 | 94 |
, ans_grd |
95 | 95 |
, ans_sn |
96 | 96 |
, ans_stts |
97 |
- , answer |
|
97 |
+ , answr |
|
98 | 98 |
, mi3.mbr_nm AS answer_nm |
99 | 99 |
, to_char(bc.ans_dt, 'YYYY-MM-DD HH24:MI') AS ans_dt |
100 | 100 |
, vdo_url |
... | ... | @@ -105,7 +105,7 @@ |
105 | 105 |
, bc.mdfr |
106 | 106 |
, to_char(bc.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt |
107 | 107 |
, mi2.mbr_nm AS mdfr_nm |
108 |
- , bbs_cn_text |
|
108 |
+ , bbs_cn_txt |
|
109 | 109 |
FROM bbs_cn bc |
110 | 110 |
LEFT JOIN |
111 | 111 |
mbr_info mi |
... | ... | @@ -144,7 +144,7 @@ |
144 | 144 |
, ans_grd |
145 | 145 |
, ans_sn |
146 | 146 |
, ans_stts |
147 |
- , answer |
|
147 |
+ , answr |
|
148 | 148 |
, ans_dt |
149 | 149 |
, vdo_url |
150 | 150 |
, use_yn |
... | ... | @@ -152,7 +152,7 @@ |
152 | 152 |
, reg_dt |
153 | 153 |
, mdfr |
154 | 154 |
, mdfcn_dt |
155 |
- , bbs_cn_text |
|
155 |
+ , bbs_cn_txt |
|
156 | 156 |
</sql> |
157 | 157 |
|
158 | 158 |
<!-- |
... | ... | @@ -171,7 +171,7 @@ |
171 | 171 |
AND mi.mbr_nm LIKE '%' || #{searchText} || '%' |
172 | 172 |
</if> |
173 | 173 |
<if test="searchType == 'bbsCn'"> |
174 |
- AND bbs_cn_text LIKE '%' || #{searchText} || '%' |
|
174 |
+ AND bbs_cn_txt LIKE '%' || #{searchText} || '%' |
|
175 | 175 |
</if> |
176 | 176 |
<if test="searchType == 'ansCn'"> |
177 | 177 |
AND ans_cn LIKE '%' || #{searchText} || '%' |
... | ... | @@ -181,7 +181,7 @@ |
181 | 181 |
AND ( |
182 | 182 |
bbs_nm LIKE '%' || #{searchText} || '%' |
183 | 183 |
OR mi.mbr_nm LIKE '%' || #{searchText} || '%' |
184 |
- OR bbs_cn_text LIKE '%' || #{searchText} || '%' |
|
184 |
+ OR bbs_cn_txt LIKE '%' || #{searchText} || '%' |
|
185 | 185 |
OR ans_cn LIKE '%' || #{searchText} || '%' |
186 | 186 |
) |
187 | 187 |
|
... | ... | @@ -242,7 +242,7 @@ |
242 | 242 |
, ans_grd |
243 | 243 |
, ans_sn |
244 | 244 |
, ans_stts |
245 |
- , answer |
|
245 |
+ , answr |
|
246 | 246 |
, mi3.mbr_nm AS answer_nm |
247 | 247 |
, to_char(bc.ans_dt, 'YYYY-MM-DD HH24:MI') AS ans_dt |
248 | 248 |
, vdo_url |
... | ... | @@ -255,7 +255,7 @@ |
255 | 255 |
, mi.mbr_nm AS rgtr_nm |
256 | 256 |
, mi2.mbr_nm AS mdfr_nm |
257 | 257 |
, cf.abslt_path AS abslt_path |
258 |
- , bbs_cn_text |
|
258 |
+ , bbs_cn_txt |
|
259 | 259 |
from( SELECT bbs_id |
260 | 260 |
, bbs_mng_id |
261 | 261 |
, bbs_nm |
... | ... | @@ -272,7 +272,7 @@ |
272 | 272 |
, ans_grd |
273 | 273 |
, ans_sn |
274 | 274 |
, ans_stts |
275 |
- , answer |
|
275 |
+ , answr |
|
276 | 276 |
, ans_dt |
277 | 277 |
, vdo_url |
278 | 278 |
, use_yn |
... | ... | @@ -281,7 +281,7 @@ |
281 | 281 |
, mdfr |
282 | 282 |
, mdfcn_dt |
283 | 283 |
, 'Y' as now_ntc_yn |
284 |
- , bbs_cn_text |
|
284 |
+ , bbs_cn_txt |
|
285 | 285 |
from bbs_cn bc |
286 | 286 |
WHERE use_yn = 'Y' |
287 | 287 |
AND ntc_pst_yn = 'Y' |
... | ... | @@ -303,7 +303,7 @@ |
303 | 303 |
, ans_grd |
304 | 304 |
, ans_sn |
305 | 305 |
, ans_stts |
306 |
- , answer |
|
306 |
+ , answr |
|
307 | 307 |
, ans_dt |
308 | 308 |
, vdo_url |
309 | 309 |
, use_yn |
... | ... | @@ -312,7 +312,7 @@ |
312 | 312 |
, mdfr |
313 | 313 |
, mdfcn_dt |
314 | 314 |
, 'N' as now_ntc_yn |
315 |
- , bbs_cn_text |
|
315 |
+ , bbs_cn_txt |
|
316 | 316 |
from bbs_cn bc |
317 | 317 |
WHERE use_yn = 'Y' |
318 | 318 |
<![CDATA[ and (ntc_pst_yn ='N' or ntc_bgng_dt > CURRENT_TIMESTAMP or ntc_end_dt < CURRENT_TIMESTAMP) ]]> |
... | ... | @@ -322,7 +322,7 @@ |
322 | 322 |
LEFT JOIN mbr_info mi2 |
323 | 323 |
ON bc.mdfr = mi2.mbr_id |
324 | 324 |
LEFT JOIN mbr_info mi3 |
325 |
- ON bc.answer = mi3.mbr_id |
|
325 |
+ ON bc.answr = mi3.mbr_id |
|
326 | 326 |
LEFT JOIN ( |
327 | 327 |
SELECT cf2.file_id |
328 | 328 |
, cf2.file_mng_id |
... | ... | @@ -381,7 +381,7 @@ |
381 | 381 |
, use_yn = #{useYn} |
382 | 382 |
, mdfr = #{mdfr} |
383 | 383 |
, mdfcn_dt = NOW() |
384 |
- , bbs_cn_text = #{bbsCnText} |
|
384 |
+ , bbs_cn_txt = #{bbsCnTxt} |
|
385 | 385 |
WHERE bbs_id = #{bbsId} |
386 | 386 |
</update> |
387 | 387 |
|
... | ... | @@ -479,7 +479,7 @@ |
479 | 479 |
bbs_cn |
480 | 480 |
SET ans_cn = #{ansCn} |
481 | 481 |
, ans_stts = #{ansStts} |
482 |
- , answer = #{answer} |
|
482 |
+ , answr = #{answr} |
|
483 | 483 |
, ans_dt = now() |
484 | 484 |
WHERE bbs_id = #{bbsId}; |
485 | 485 |
</update> |
... | ... | @@ -506,7 +506,7 @@ |
506 | 506 |
, ans_grd |
507 | 507 |
, ans_sn |
508 | 508 |
, ans_stts |
509 |
- , answer |
|
509 |
+ , answr |
|
510 | 510 |
, ans_dt |
511 | 511 |
, vdo_url |
512 | 512 |
, use_yn |
--- src/main/resources/mybatis/mapper/bbs/bbsMng-SQL.xml
+++ src/main/resources/mybatis/mapper/bbs/bbsMng-SQL.xml
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 |
<result property="bbsMngId" column="bbs_mng_id" /> |
12 | 12 |
<result property="bbsTypeId" column="bbs_type_id" /> |
13 | 13 |
<result property="bbsNm" column="bbs_nm" /> |
14 |
- <result property="bbsUpInfo" column="bbs_up_info" /> |
|
14 |
+ <result property="bbsUpendInfo" column="bbs_upend_info" /> |
|
15 | 15 |
<result property="bbsExpln" column="bbs_expln" /> |
16 | 16 |
<result property="artclCnt" column="artcl_cnt" /> |
17 | 17 |
<result property="atchFileUseYn" column="atch_file_use_yn" /> |
... | ... | @@ -25,7 +25,7 @@ |
25 | 25 |
<result property="regDt" column="reg_dt" /> |
26 | 26 |
<result property="mdfr" column="mdfr" /> |
27 | 27 |
<result property="mdfcnDt" column="mdfcn_dt" /> |
28 |
- <result property="cd" column="cd" /> |
|
28 |
+ <result property="pageType" column="page_type" /> |
|
29 | 29 |
</resultMap> |
30 | 30 |
|
31 | 31 |
<!-- |
... | ... | @@ -49,7 +49,7 @@ |
49 | 49 |
bbs_mng_id |
50 | 50 |
, bbs_type_id |
51 | 51 |
, bbs_nm |
52 |
- , bbs_up_info |
|
52 |
+ , bbs_upend_info |
|
53 | 53 |
, bbs_expln |
54 | 54 |
, artcl_cnt |
55 | 55 |
, atch_file_use_yn |
... | ... | @@ -62,12 +62,12 @@ |
62 | 62 |
, use_yn |
63 | 63 |
, rgtr |
64 | 64 |
, reg_dt |
65 |
- , cd |
|
65 |
+ , page_type |
|
66 | 66 |
) VALUES ( |
67 | 67 |
#{bbsMngId} |
68 | 68 |
, #{bbsTypeId} |
69 | 69 |
, #{bbsNm} |
70 |
- , #{bbsUpInfo} |
|
70 |
+ , #{bbsUpendInfo} |
|
71 | 71 |
, #{bbsExpln} |
72 | 72 |
, #{artclCnt} |
73 | 73 |
, #{atchFileUseYn} |
... | ... | @@ -80,7 +80,7 @@ |
80 | 80 |
, 'Y' |
81 | 81 |
, #{rgtr} |
82 | 82 |
, NOW() |
83 |
- , #{cd} |
|
83 |
+ , #{pageType} |
|
84 | 84 |
) |
85 | 85 |
</insert> |
86 | 86 |
|
... | ... | @@ -90,7 +90,7 @@ |
90 | 90 |
, bm.bbs_type_id |
91 | 91 |
, (select SPLIT_PART(bbs_type_korn_nm, ' ', 1) from bbs_type_mng btm where bm.bbs_type_id = btm.bbs_type_id) as bbsTypeKornNm |
92 | 92 |
, bbs_nm |
93 |
- , bbs_up_info |
|
93 |
+ , bbs_upend_info |
|
94 | 94 |
, bbs_expln |
95 | 95 |
, artcl_cnt |
96 | 96 |
, atch_file_use_yn |
... | ... | @@ -105,7 +105,7 @@ |
105 | 105 |
, to_char(bm.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt |
106 | 106 |
, bm.mdfr |
107 | 107 |
, to_char(bm.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt |
108 |
- , cd |
|
108 |
+ , page_type |
|
109 | 109 |
</sql> |
110 | 110 |
|
111 | 111 |
<sql id="selectRequirement"> |
... | ... | @@ -199,7 +199,7 @@ |
199 | 199 |
SET |
200 | 200 |
bbs_type_id = #{bbsTypeId} |
201 | 201 |
, bbs_nm = #{bbsNm} |
202 |
- , bbs_up_info = #{bbsUpInfo} |
|
202 |
+ , bbs_upend_info = #{bbsUpendInfo} |
|
203 | 203 |
, bbs_expln = #{bbsExpln} |
204 | 204 |
, artcl_cnt = #{artclCnt} |
205 | 205 |
, atch_file_use_yn = #{atchFileUseYn} |
... | ... | @@ -212,7 +212,7 @@ |
212 | 212 |
, use_yn = #{useYn} |
213 | 213 |
, mdfr = #{mdfr} |
214 | 214 |
, mdfcn_dt = NOW() |
215 |
- , cd = #{cd} |
|
215 |
+ , page_type = #{pageType} |
|
216 | 216 |
WHERE bbs_mng_id = #{bbsMngId} |
217 | 217 |
</update> |
218 | 218 |
|
... | ... | @@ -245,9 +245,9 @@ |
245 | 245 |
, bbs_mng_id |
246 | 246 |
, bbs_korn_nm |
247 | 247 |
, bbs_eng_nm |
248 |
- , page_crs |
|
249 |
- , mngr_page_crs |
|
250 |
- , compn_crs |
|
248 |
+ , user_page_path |
|
249 |
+ , mngr_page_path |
|
250 |
+ , compn_path |
|
251 | 251 |
, expsr_yn |
252 | 252 |
, use_yn |
253 | 253 |
, reg_dt |
... | ... | @@ -256,9 +256,9 @@ |
256 | 256 |
, #{bbsMngId} |
257 | 257 |
, #{bbsKornNm} |
258 | 258 |
, #{bbsEngNm} |
259 |
- , #{pageCrs} |
|
260 |
- , #{mngrPageCrs} |
|
261 |
- , #{compnCrs} |
|
259 |
+ , #{userPagePath} |
|
260 |
+ , #{mngrPagePath} |
|
261 |
+ , #{compnPath} |
|
262 | 262 |
, #{expsrYn} |
263 | 263 |
, 'Y' |
264 | 264 |
, NOW() |
... | ... | @@ -299,12 +299,12 @@ |
299 | 299 |
, bbs_mng_id |
300 | 300 |
, bbs_korn_nm |
301 | 301 |
, bbs_eng_nm |
302 |
- , page_crs |
|
303 |
- , compn_crs |
|
302 |
+ , user_page_path |
|
303 |
+ , compn_path |
|
304 | 304 |
, expsr_yn |
305 | 305 |
, use_yn |
306 | 306 |
, reg_dt |
307 |
- , mngr_page_crs |
|
307 |
+ , mngr_page_path |
|
308 | 308 |
FROM bbs_router |
309 | 309 |
WHERE bbs_mng_id = #{bbsMngId} |
310 | 310 |
</select> |
... | ... | @@ -318,7 +318,7 @@ |
318 | 318 |
UPDATE |
319 | 319 |
bbs_router |
320 | 320 |
SET |
321 |
- page_crs = #{pageCrs} |
|
321 |
+ user_page_path = #{userPagePath} |
|
322 | 322 |
WHERE bbs_router_id = #{bbsRouterId} |
323 | 323 |
</update> |
324 | 324 |
<!-- ********************************* 게시판 라우터 (종료) ********************************* --> |
--- src/main/resources/mybatis/mapper/bbs/bbsRouter-SQL.xml
+++ src/main/resources/mybatis/mapper/bbs/bbsRouter-SQL.xml
... | ... | @@ -14,8 +14,8 @@ |
14 | 14 |
<!-- <result property="menuId" column="menu_id" />--> |
15 | 15 |
<result property="contsKornNm" column="bbs_korn_nm" /> |
16 | 16 |
<result property="contsEngNm" column="bbs_eng_nm" /> |
17 |
- <result property="pageCrs" column="page_crs" /> |
|
18 |
- <result property="compnCrs" column="compn_crs" /> |
|
17 |
+ <result property="userPagePath" column="user_page_path" /> |
|
18 |
+ <result property="compnPath" column="compn_path" /> |
|
19 | 19 |
<collection property="authrtList" ofType="MenuAuthorVO"> |
20 | 20 |
<result property="authrtCd" column="authrt_cd" /> |
21 | 21 |
<result property="menuId" column="menu_id" /> |
... | ... | @@ -36,8 +36,8 @@ |
36 | 36 |
SELECT A.bbs_mng_id |
37 | 37 |
, A.bbs_korn_nm |
38 | 38 |
, A.bbs_eng_nm |
39 |
- , A.page_crs |
|
40 |
- , A.compn_crs |
|
39 |
+ , A.user_page_path |
|
40 |
+ , A.compn_path |
|
41 | 41 |
, mi.menu_id |
42 | 42 |
, mai.authrt_cd |
43 | 43 |
, mai.inq_authrt |
... | ... | @@ -49,8 +49,8 @@ |
49 | 49 |
, br.bbs_mng_id |
50 | 50 |
, br.bbs_korn_nm |
51 | 51 |
, br.bbs_eng_nm |
52 |
- , br.page_crs |
|
53 |
- , br.compn_crs |
|
52 |
+ , br.user_page_path |
|
53 |
+ , br.compn_path |
|
54 | 54 |
, br.use_yn |
55 | 55 |
FROM bbs_router br |
56 | 56 |
LEFT JOIN bbs_mng bm |
... | ... | @@ -63,8 +63,8 @@ |
63 | 63 |
, br.bbs_mng_id |
64 | 64 |
, br.bbs_korn_nm |
65 | 65 |
, concat('adm', br.bbs_eng_nm) AS bbs_eng_nm |
66 |
- , br.mngr_page_crs AS page_crs |
|
67 |
- , br.compn_crs |
|
66 |
+ , br.mngr_page_path AS user_page_path |
|
67 |
+ , br.compn_path |
|
68 | 68 |
, br.use_yn |
69 | 69 |
FROM bbs_router br |
70 | 70 |
LEFT JOIN bbs_mng bm |
... | ... | @@ -72,7 +72,7 @@ |
72 | 72 |
WHERE bm.use_yn = 'Y' |
73 | 73 |
) A |
74 | 74 |
LEFT JOIN menu_info mi |
75 |
- ON A.bbs_mng_id = mi.menu_type_ctgry |
|
75 |
+ ON A.bbs_mng_id = mi.menu_type_artcl |
|
76 | 76 |
LEFT JOIN menu_authrt_info mai |
77 | 77 |
ON mi.menu_id = mai.menu_id |
78 | 78 |
</select> |
--- src/main/resources/mybatis/mapper/bbs/bbsTypeMng-SQL.xml
+++ src/main/resources/mybatis/mapper/bbs/bbsTypeMng-SQL.xml
... | ... | @@ -17,8 +17,8 @@ |
17 | 17 |
, bbs_type_korn_nm |
18 | 18 |
, bbs_type_eng_nm |
19 | 19 |
, bbs_type |
20 |
- , page_crs |
|
21 |
- , compn_crs |
|
20 |
+ , user_page_path |
|
21 |
+ , compn_path |
|
22 | 22 |
, expsr_yn |
23 | 23 |
, use_yn |
24 | 24 |
, rgtr |
... | ... | @@ -28,8 +28,8 @@ |
28 | 28 |
, #{bbsTypeKornNm} |
29 | 29 |
, #{bbsTypeEngNm} |
30 | 30 |
, #{bbsType} |
31 |
- , #{pageCrs} |
|
32 |
- , #{compnCrs} |
|
31 |
+ , #{userPagePath} |
|
32 |
+ , #{compnPath} |
|
33 | 33 |
, #{expsrYn} |
34 | 34 |
, 'Y' |
35 | 35 |
, #{rgtr} |
... | ... | @@ -42,8 +42,8 @@ |
42 | 42 |
, bbs_type_korn_nm |
43 | 43 |
, bbs_type_eng_nm |
44 | 44 |
, bbs_type |
45 |
- , page_crs |
|
46 |
- , compn_crs |
|
45 |
+ , user_page_path |
|
46 |
+ , compn_path |
|
47 | 47 |
, expsr_yn |
48 | 48 |
, use_yn |
49 | 49 |
, rgtr |
... | ... | @@ -83,8 +83,8 @@ |
83 | 83 |
, bbs_type_korn_nm |
84 | 84 |
, bbs_type_eng_nm |
85 | 85 |
, bbs_type |
86 |
- , page_crs |
|
87 |
- , compn_crs |
|
86 |
+ , user_page_path |
|
87 |
+ , compn_path |
|
88 | 88 |
, expsr_yn |
89 | 89 |
, use_yn |
90 | 90 |
, rgtr |
--- src/main/resources/mybatis/mapper/bbs/search-SQL.xml
+++ src/main/resources/mybatis/mapper/bbs/search-SQL.xml
... | ... | @@ -103,7 +103,7 @@ |
103 | 103 |
--> |
104 | 104 |
<select id="findAllByBbs" parameterType="SearchVO" resultType="SearchContentVO"> |
105 | 105 |
SELECT |
106 |
- bbs_mng_id AS menuTypeCtgry |
|
106 |
+ bbs_mng_id AS menuTypeArtcl |
|
107 | 107 |
, bbs_id AS pageId |
108 | 108 |
, bbs_nm AS title |
109 | 109 |
, bbs_cn AS content |
--- src/main/resources/mybatis/mapper/bbs/wordMng-SQL.xml
+++ src/main/resources/mybatis/mapper/bbs/wordMng-SQL.xml
... | ... | @@ -14,11 +14,11 @@ |
14 | 14 |
--> |
15 | 15 |
<insert id="saveWords" parameterType="WordMngVO"> |
16 | 16 |
INSERT INTO cntrl_nm_mng( |
17 |
- cntrl_nm |
|
17 |
+ phwrd |
|
18 | 18 |
, rgtr |
19 | 19 |
, reg_dt |
20 | 20 |
) VALUES ( |
21 |
- #{cntrlNm} |
|
21 |
+ #{phwrd} |
|
22 | 22 |
, #{rgtr} |
23 | 23 |
, now() |
24 | 24 |
) |
... | ... | @@ -30,8 +30,8 @@ |
30 | 30 |
내 용 : 금지어 목록 조회 |
31 | 31 |
--> |
32 | 32 |
<select id="findAllWord" parameterType="Pagination" resultType="WordMngVO"> |
33 |
- SELECT cntrl_nm_id |
|
34 |
- , cntrl_nm |
|
33 |
+ SELECT phwrd_id |
|
34 |
+ , phwrd |
|
35 | 35 |
, cnm.rgtr |
36 | 36 |
, mi.mbr_nm AS rgtr_nm |
37 | 37 |
, to_char(cnm.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt |
... | ... | @@ -41,15 +41,15 @@ |
41 | 41 |
<where> |
42 | 42 |
<if test="searchText != null and searchText != ''"> |
43 | 43 |
<choose> |
44 |
- <when test="searchType == 'cntrlNm'"> |
|
45 |
- AND cntrl_nm LIKE '%' || #{searchText} || '%' |
|
44 |
+ <when test="searchType == 'phwrd'"> |
|
45 |
+ AND phwrd LIKE '%' || #{searchText} || '%' |
|
46 | 46 |
</when> |
47 | 47 |
<when test="searchType == 'rgtrNm'"> |
48 | 48 |
AND mi.mbr_nm LIKE '%' || #{searchText} || '%' |
49 | 49 |
</when> |
50 | 50 |
<otherwise> |
51 | 51 |
AND ( |
52 |
- cntrl_nm LIKE '%' || #{searchText} || '%' |
|
52 |
+ phwrd LIKE '%' || #{searchText} || '%' |
|
53 | 53 |
OR |
54 | 54 |
mi.mbr_nm LIKE '%' || #{searchText} || '%' |
55 | 55 |
) |
... | ... | @@ -57,7 +57,7 @@ |
57 | 57 |
</choose> |
58 | 58 |
</if> |
59 | 59 |
</where> |
60 |
- ORDER BY cntrl_nm_id DESC |
|
60 |
+ ORDER BY phwrd_id DESC |
|
61 | 61 |
OFFSET #{limitStart} LIMIT #{recordSize} |
62 | 62 |
</select> |
63 | 63 |
|
... | ... | @@ -67,22 +67,22 @@ |
67 | 67 |
내 용 : 금지어 목록 count |
68 | 68 |
--> |
69 | 69 |
<select id="findAllCnt" parameterType="Pagination" resultType="Integer"> |
70 |
- SELECT COUNT(cntrl_nm_id) |
|
70 |
+ SELECT COUNT(phwrd_id) |
|
71 | 71 |
FROM cntrl_nm_mng |
72 | 72 |
LEFT JOIN mbr_info mi |
73 | 73 |
ON cntrl_nm_mng.rgtr = mi.mbr_id |
74 | 74 |
<where> |
75 | 75 |
<if test="searchText != null and searchText != ''"> |
76 | 76 |
<choose> |
77 |
- <when test="searchType == 'cntrlNm'"> |
|
78 |
- AND cntrl_nm LIKE '%' || #{searchText} || '%' |
|
77 |
+ <when test="searchType == 'phwrd'"> |
|
78 |
+ AND phwrd LIKE '%' || #{searchText} || '%' |
|
79 | 79 |
</when> |
80 | 80 |
<when test="searchType == 'rgtrNm'"> |
81 | 81 |
AND mi.mbr_nm LIKE '%' || #{searchText} || '%' |
82 | 82 |
</when> |
83 | 83 |
<otherwise> |
84 | 84 |
AND ( |
85 |
- cntrl_nm LIKE '%' || #{searchText} || '%' |
|
85 |
+ phwrd LIKE '%' || #{searchText} || '%' |
|
86 | 86 |
OR |
87 | 87 |
mi.mbr_nm LIKE '%' || #{searchText} || '%' |
88 | 88 |
) |
... | ... | @@ -98,7 +98,7 @@ |
98 | 98 |
--> |
99 | 99 |
<delete id="deleteWords" parameterType="Integer"> |
100 | 100 |
DELETE FROM cntrl_nm_mng |
101 |
- WHERE cntrl_nm_id = #{cntrlNmId} |
|
101 |
+ WHERE phwrd_id = #{phwrdId} |
|
102 | 102 |
</delete> |
103 | 103 |
|
104 | 104 |
<!-- |
... | ... | @@ -107,7 +107,7 @@ |
107 | 107 |
내 용 : 금지어 string 목록 |
108 | 108 |
--> |
109 | 109 |
<select id="findWordList" resultType="String"> |
110 |
- SELECT cntrl_nm |
|
110 |
+ SELECT phwrd |
|
111 | 111 |
FROM cntrl_nm_mng cnm |
112 | 112 |
|
113 | 113 |
</select> |
--- src/main/resources/mybatis/mapper/cntnStats/cntnStats-SQL.xml
+++ src/main/resources/mybatis/mapper/cntnStats/cntnStats-SQL.xml
... | ... | @@ -32,7 +32,7 @@ |
32 | 32 |
, cntn_yr |
33 | 33 |
, cntn_mm |
34 | 34 |
, cntn_day |
35 |
- , cntn_nope |
|
35 |
+ , acsr_cnt |
|
36 | 36 |
) VALUES ( |
37 | 37 |
#{authrtCd} |
38 | 38 |
, #{cntnYr} |
... | ... | @@ -48,7 +48,7 @@ |
48 | 48 |
--> |
49 | 49 |
<update id="userCntnStatsUpdate" parameterType="CntnStatsVO"> |
50 | 50 |
UPDATE user_cntn_stats |
51 |
- SET cntn_nope = cntn_nope + 1 |
|
51 |
+ SET acsr_cnt = acsr_cnt + 1 |
|
52 | 52 |
WHERE authrt_cd = #{authrtCd} |
53 | 53 |
AND cntn_yr = #{cntnYr} |
54 | 54 |
AND cntn_mm = #{cntnMm} |
... | ... | @@ -84,7 +84,7 @@ |
84 | 84 |
, cntn_yr |
85 | 85 |
, cntn_mm |
86 | 86 |
, cntn_day |
87 |
- , cntn_nope |
|
87 |
+ , acsr_cnt |
|
88 | 88 |
) VALUES ( |
89 | 89 |
#{typeId} |
90 | 90 |
, #{authrtCd} |
... | ... | @@ -101,7 +101,7 @@ |
101 | 101 |
--> |
102 | 102 |
<update id="contsCntnStatsUpdate" parameterType="CntnStatsVO"> |
103 | 103 |
UPDATE conts_cntn_stats |
104 |
- SET cntn_nope = cntn_nope + 1 |
|
104 |
+ SET acsr_cnt = acsr_cnt + 1 |
|
105 | 105 |
WHERE conts_id = #{typeId} |
106 | 106 |
AND authrt_cd = #{authrtCd} |
107 | 107 |
AND cntn_yr = #{cntnYr} |
... | ... | @@ -139,7 +139,7 @@ |
139 | 139 |
, cntn_yr |
140 | 140 |
, cntn_mm |
141 | 141 |
, cntn_day |
142 |
- , cntn_nope |
|
142 |
+ , acsr_cnt |
|
143 | 143 |
) VALUES ( |
144 | 144 |
#{typeId} |
145 | 145 |
, #{authrtCd} |
... | ... | @@ -156,7 +156,7 @@ |
156 | 156 |
--> |
157 | 157 |
<update id="bbsCntnStatsUpdate" parameterType="CntnStatsVO"> |
158 | 158 |
UPDATE bbs_cntn_stats |
159 |
- SET cntn_nope = cntn_nope + 1 |
|
159 |
+ SET acsr_cnt = acsr_cnt + 1 |
|
160 | 160 |
WHERE bbs_id = #{typeId} |
161 | 161 |
AND authrt_cd = #{authrtCd} |
162 | 162 |
AND cntn_yr = #{cntnYr} |
... | ... | @@ -194,7 +194,7 @@ |
194 | 194 |
, cntn_yr |
195 | 195 |
, cntn_mm |
196 | 196 |
, cntn_day |
197 |
- , cntn_nope |
|
197 |
+ , acsr_cnt |
|
198 | 198 |
) VALUES ( |
199 | 199 |
#{typeId} |
200 | 200 |
, #{authrtCd} |
... | ... | @@ -211,7 +211,7 @@ |
211 | 211 |
--> |
212 | 212 |
<update id="menuCntnStatsUpdate" parameterType="CntnStatsVO"> |
213 | 213 |
UPDATE menu_cntn_stats |
214 |
- SET cntn_nope = cntn_nope + 1 |
|
214 |
+ SET acsr_cnt = acsr_cnt + 1 |
|
215 | 215 |
WHERE menu_id = #{typeId} |
216 | 216 |
AND authrt_cd = #{authrtCd} |
217 | 217 |
AND cntn_yr = #{cntnYr} |
... | ... | @@ -236,7 +236,7 @@ |
236 | 236 |
<select id="selectUserCntnStats" parameterType="HashMap" resultType="HashMap"> |
237 | 237 |
SELECT ai.dates |
238 | 238 |
, array_agg(authrt_nm) AS authrt_nm |
239 |
- , array_agg(COALESCE(ucs.cntn_nope, 0)) AS cntn_nope |
|
239 |
+ , array_agg(COALESCE(ucs.acsr_cnt, 0)) AS acsr_cnt |
|
240 | 240 |
FROM ( |
241 | 241 |
SELECT generate_series(to_date(#{startDt}, 'YYYY-MM-DD') |
242 | 242 |
, to_date(#{endDt}, 'YYYY-MM-DD'), '1 day'::interval)::date AS dates |
... | ... | @@ -245,7 +245,7 @@ |
245 | 245 |
WHERE use_yn = 'Y' |
246 | 246 |
AND authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */ |
247 | 247 |
ORDER BY reg_dt) AS ai |
248 |
- LEFT JOIN (SELECT authrt_cd, to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') AS cntn_date, cntn_nope FROM user_cntn_stats) AS ucs |
|
248 |
+ LEFT JOIN (SELECT authrt_cd, to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') AS cntn_date, acsr_cnt FROM user_cntn_stats) AS ucs |
|
249 | 249 |
ON dates = ucs.cntn_date |
250 | 250 |
AND ai.authrt_cd = ucs.authrt_cd |
251 | 251 |
GROUP BY ai.dates |
... | ... | @@ -258,7 +258,7 @@ |
258 | 258 |
내 용 : 사용자 접속 통계 목록 개수 조회 |
259 | 259 |
--> |
260 | 260 |
<select id="selectUserCntnStatsCnt" parameterType="HashMap"> |
261 |
- SELECT COALESCE(SUM(cntn_nope), 0) |
|
261 |
+ SELECT COALESCE(SUM(acsr_cnt), 0) |
|
262 | 262 |
FROM user_cntn_stats |
263 | 263 |
WHERE to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') >= to_date(#{startDt}, 'YYYY-MM-DD') |
264 | 264 |
AND to_date(#{endDt}, 'YYYY-MM-DD') >= to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') |
... | ... | @@ -289,8 +289,8 @@ |
289 | 289 |
) |
290 | 290 |
SELECT (SELECT menu_name FROM menu_tree WHERE menu_tree.menu_id = menus.menu_id) AS menu_name |
291 | 291 |
, array_agg(menus.authrt_nm ORDER BY sort_order) AS authrt_nm |
292 |
- , array_agg(menus.cntn_nope ORDER BY sort_order) AS cntn_nope |
|
293 |
- FROM (SELECT mt.menu_id, mai.authrt_cd, ai.authrt_nm, ai.sort_order, SUM(COALESCE(mcs.cntn_nope, 0)) AS cntn_nope |
|
292 |
+ , array_agg(menus.acsr_cnt ORDER BY sort_order) AS acsr_cnt |
|
293 |
+ FROM (SELECT mt.menu_id, mai.authrt_cd, ai.authrt_nm, ai.sort_order, SUM(COALESCE(mcs.acsr_cnt, 0)) AS acsr_cnt |
|
294 | 294 |
from menu_tree AS mt |
295 | 295 |
LEFT JOIN (SELECT menu_id, authrt_cd FROM menu_authrt_info WHERE authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE')) AS mai /* 커스텀 권한 조회 필요 시 WHERE 조건 주석처리 */ |
296 | 296 |
ON mt.menu_id = mai.menu_id |
... | ... | @@ -324,7 +324,7 @@ |
324 | 324 |
<!-- ao.authrt_cd,--> |
325 | 325 |
<!-- ao.authrt_nm,--> |
326 | 326 |
<!-- ao.sort_order,--> |
327 |
-<!-- SUM(COALESCE(mcs.cntn_nope, 0)) AS cntn_nope--> |
|
327 |
+<!-- SUM(COALESCE(mcs.acsr_cnt, 0)) AS acsr_cnt--> |
|
328 | 328 |
<!-- FROM menu_tree mt--> |
329 | 329 |
<!-- LEFT JOIN (SELECT menu_id, authrt_cd FROM menu_authrt_info WHERE authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE')) mai ON mt.menu_id = mai.menu_id--> |
330 | 330 |
<!-- LEFT JOIN authrt_ordered ao ON mai.authrt_cd = ao.authrt_cd--> |
... | ... | @@ -336,7 +336,7 @@ |
336 | 336 |
<!-- SELECT--> |
337 | 337 |
<!-- (SELECT menu_name FROM menu_tree WHERE menu_tree.menu_id = menus.menu_id) AS menu_name,--> |
338 | 338 |
<!-- array_agg(menus.authrt_nm ORDER BY menus.sort_order) AS authrt_nm,--> |
339 |
-<!-- array_agg(menus.cntn_nope ORDER BY menus.sort_order) AS cntn_nope--> |
|
339 |
+<!-- array_agg(menus.acsr_cnt ORDER BY menus.sort_order) AS acsr_cnt--> |
|
340 | 340 |
<!-- FROM menus--> |
341 | 341 |
<!-- GROUP BY menu_id--> |
342 | 342 |
<!-- ORDER BY menu_name--> |
... | ... | @@ -359,10 +359,10 @@ |
359 | 359 |
INNER JOIN menu_info mi |
360 | 360 |
ON mt.menu_id = mi.up_menu_id |
361 | 361 |
) |
362 |
- SELECT SUM(COALESCE(menu.cntn_nope, 0)) |
|
362 |
+ SELECT SUM(COALESCE(menu.acsr_cnt, 0)) |
|
363 | 363 |
FROM menu_tree |
364 | 364 |
LEFT JOIN ( |
365 |
- SELECT menu_id, cntn_nope |
|
365 |
+ SELECT menu_id, acsr_cnt |
|
366 | 366 |
FROM menu_cntn_stats |
367 | 367 |
WHERE to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') >= to_date(#{startDt}, 'YYYY-MM-DD') |
368 | 368 |
AND to_date(#{endDt}, 'YYYY-MM-DD') >= to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') |
... | ... | @@ -382,7 +382,7 @@ |
382 | 382 |
<select id="selectBbsCntnStats" parameterType="HashMap" resultType="HashMap"> |
383 | 383 |
SELECT (SELECT bbs_nm from bbs_mng where bbs_mng_id = bbs.bbs_mng_id) AS bbs_nm |
384 | 384 |
, array_agg(bbs.authrt_nm ORDER BY bbs.sort_order) AS authrt_nm |
385 |
- , array_agg(coalesce(cntn_nope, 0) ORDER BY bbs.sort_order) AS cntn_nope |
|
385 |
+ , array_agg(coalesce(acsr_cnt, 0) ORDER BY bbs.sort_order) AS acsr_cnt |
|
386 | 386 |
from ( |
387 | 387 |
SELECT bm.bbs_mng_id |
388 | 388 |
, ad.authrt_cd |
... | ... | @@ -392,7 +392,7 @@ |
392 | 392 |
left join ( |
393 | 393 |
SELECT mai.authrt_cd |
394 | 394 |
, ai.authrt_nm |
395 |
- , menu_type_ctgry |
|
395 |
+ , menu_type_artcl |
|
396 | 396 |
, ROW_NUMBER() OVER (ORDER BY ai.reg_dt) AS sort_order |
397 | 397 |
from menu_info as mi |
398 | 398 |
LEFT JOIN menu_authrt_info as mai |
... | ... | @@ -404,13 +404,13 @@ |
404 | 404 |
AND mai.authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */ |
405 | 405 |
order by mi.menu_id |
406 | 406 |
) as ad |
407 |
- on bm.bbs_mng_id = ad.menu_type_ctgry |
|
407 |
+ on bm.bbs_mng_id = ad.menu_type_artcl |
|
408 | 408 |
where bm.use_yn = 'Y' |
409 | 409 |
) as bbs |
410 | 410 |
left join ( |
411 | 411 |
select bbs_id |
412 | 412 |
, authrt_cd |
413 |
- , sum(cntn_nope) as cntn_nope |
|
413 |
+ , sum(acsr_cnt) as acsr_cnt |
|
414 | 414 |
from bbs_cntn_stats |
415 | 415 |
where to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') >= to_date(#{startDt}, 'YYYY-MM-DD') |
416 | 416 |
AND to_date(#{endDt}, 'YYYY-MM-DD') >= to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') |
... | ... | @@ -427,14 +427,14 @@ |
427 | 427 |
내 용 : 게시판 접속 통계 목록 개수 조회 |
428 | 428 |
--> |
429 | 429 |
<select id="selectBbsCntnStatsCnt" parameterType="HashMap"> |
430 |
- SELECT SUM(COALESCE(cntn_nope, 0)) |
|
430 |
+ SELECT SUM(COALESCE(acsr_cnt, 0)) |
|
431 | 431 |
FROM ( |
432 | 432 |
SELECT bm.bbs_mng_id |
433 | 433 |
, ad.authrt_cd |
434 | 434 |
FROM bbs_mng AS bm |
435 | 435 |
LEFT JOIN ( |
436 | 436 |
SELECT mai.authrt_cd |
437 |
- , menu_type_ctgry |
|
437 |
+ , menu_type_artcl |
|
438 | 438 |
FROM menu_info AS mi |
439 | 439 |
LEFT JOIN menu_authrt_info AS mai |
440 | 440 |
ON mi.menu_id = mai.menu_id |
... | ... | @@ -445,13 +445,13 @@ |
445 | 445 |
AND mai.authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */ |
446 | 446 |
ORDER BY mi.menu_id |
447 | 447 |
) AS ad |
448 |
- ON bm.bbs_mng_id = ad.menu_type_ctgry |
|
448 |
+ ON bm.bbs_mng_id = ad.menu_type_artcl |
|
449 | 449 |
WHERE bm.use_yn = 'Y' |
450 | 450 |
) AS bbs |
451 | 451 |
LEFT JOIN ( |
452 | 452 |
SELECT bbs_id |
453 | 453 |
, authrt_cd |
454 |
- , SUM(COALESCE(cntn_nope, 0)) as cntn_nope |
|
454 |
+ , SUM(COALESCE(acsr_cnt, 0)) as acsr_cnt |
|
455 | 455 |
FROM bbs_cntn_stats |
456 | 456 |
WHERE to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') >= to_date(#{startDt}, 'YYYY-MM-DD') |
457 | 457 |
AND to_date(#{endDt}, 'YYYY-MM-DD') >= to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') |
--- src/main/resources/mybatis/mapper/cntxtPth/cntxtPth-SQL.xml
+++ src/main/resources/mybatis/mapper/cntxtPth/cntxtPth-SQL.xml
... | ... | @@ -30,12 +30,12 @@ |
30 | 30 |
--> |
31 | 31 |
<insert id="save" parameterType="CntxtPthVO"> |
32 | 32 |
INSERT INTO cntxt_pth_mng ( |
33 |
- cntxt_pth_id |
|
33 |
+ cntxt_path_id |
|
34 | 34 |
, path |
35 | 35 |
, rgtr |
36 | 36 |
, reg_dt |
37 | 37 |
) VALUES ( |
38 |
- #{cntxtPthId} |
|
38 |
+ #{cntxtPathId} |
|
39 | 39 |
, #{path} |
40 | 40 |
, #{rgtr} |
41 | 41 |
, NOW() |
--- src/main/resources/mybatis/mapper/common/file-SQL.xml
+++ src/main/resources/mybatis/mapper/common/file-SQL.xml
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 |
<result property="maskNm" column="mask_nm" /> |
10 | 10 |
<result property="fileType" column="file_type" /> |
11 | 11 |
<result property="absltPath" column="abslt_path" /> |
12 |
- <result property="partPath" column="part_path" /> |
|
12 |
+ <result property="rltPath" column="rlt_path" /> |
|
13 | 13 |
<result property="extnNm" column="extn_nm" /> |
14 | 14 |
<result property="fileSz" column="file_sz" /> |
15 | 15 |
<result property="rgtr" column="rgtr" /> |
... | ... | @@ -28,7 +28,7 @@ |
28 | 28 |
, mask_nm |
29 | 29 |
, file_type |
30 | 30 |
, abslt_path |
31 |
- , part_path |
|
31 |
+ , rlt_path |
|
32 | 32 |
, extn_nm |
33 | 33 |
, file_sz |
34 | 34 |
, rgtr |
... | ... | @@ -39,7 +39,7 @@ |
39 | 39 |
, #{maskNm} |
40 | 40 |
, #{fileType} |
41 | 41 |
, #{absltPath} |
42 |
- , #{partPath} |
|
42 |
+ , #{rltPath} |
|
43 | 43 |
, #{extnNm} |
44 | 44 |
, #{fileSz} |
45 | 45 |
, #{rgtr} |
... | ... | @@ -59,7 +59,7 @@ |
59 | 59 |
, mask_nm |
60 | 60 |
, file_type |
61 | 61 |
, abslt_path |
62 |
- , part_path |
|
62 |
+ , rlt_path |
|
63 | 63 |
, extn_nm |
64 | 64 |
, file_sz |
65 | 65 |
, rgtr |
... | ... | @@ -92,7 +92,7 @@ |
92 | 92 |
, mask_nm |
93 | 93 |
, file_type |
94 | 94 |
, abslt_path |
95 |
- , part_path |
|
95 |
+ , rlt_path |
|
96 | 96 |
, extn_nm |
97 | 97 |
, file_sz |
98 | 98 |
, rgtr |
--- src/main/resources/mybatis/mapper/contsType/contsType-SQL.xml
+++ src/main/resources/mybatis/mapper/contsType/contsType-SQL.xml
... | ... | @@ -13,9 +13,9 @@ |
13 | 13 |
<!-- <result property="menuId" column="menu_id" />--> |
14 | 14 |
<result property="contsKornNm" column="conts_korn_nm" /> |
15 | 15 |
<result property="contsEngNm" column="conts_eng_nm" /> |
16 |
- <result property="pageCrs" column="page_crs" /> |
|
17 |
- <result property="mngrPageCrs" column="mngr_page_crs" /> |
|
18 |
- <result property="compnCrs" column="compn_crs" /> |
|
16 |
+ <result property="userPagePath" column="user_page_path" /> |
|
17 |
+ <result property="mngrPagePath" column="mngr_page_path" /> |
|
18 |
+ <result property="compnPath" column="compn_path" /> |
|
19 | 19 |
<collection property="authrtList" ofType="MenuAuthorVO"> |
20 | 20 |
<result property="authrtCd" column="authrt_cd" /> |
21 | 21 |
<result property="menuId" column="menu_id" /> |
... | ... | @@ -45,9 +45,9 @@ |
45 | 45 |
내 용 : 컴포넌트 URL 중복 확인 |
46 | 46 |
--> |
47 | 47 |
<select id="findByCheckCompnCrs" parameterType="String" resultType="boolean"> |
48 |
- SELECT COUNT(compn_crs) |
|
48 |
+ SELECT COUNT(compn_path) |
|
49 | 49 |
FROM conts_type_mng |
50 |
- WHERE LOWER(compn_crs) = LOWER(#{compnCrs}) |
|
50 |
+ WHERE LOWER(compn_path) = LOWER(#{compnPath}) |
|
51 | 51 |
AND use_yn = 'Y' |
52 | 52 |
</select> |
53 | 53 |
|
... | ... | @@ -61,9 +61,9 @@ |
61 | 61 |
conts_id |
62 | 62 |
, conts_korn_nm |
63 | 63 |
, conts_eng_nm |
64 |
- , page_crs |
|
65 |
- , mngr_page_crs |
|
66 |
- , compn_crs |
|
64 |
+ , user_page_path |
|
65 |
+ , mngr_page_path |
|
66 |
+ , compn_path |
|
67 | 67 |
, expsr_yn |
68 | 68 |
, use_yn |
69 | 69 |
, sys_pvsn_yn |
... | ... | @@ -73,9 +73,9 @@ |
73 | 73 |
#{contsId} |
74 | 74 |
, #{contsKornNm} |
75 | 75 |
, #{contsEngNm} |
76 |
- , #{pageCrs} |
|
77 |
- , #{mngrPageCrs} |
|
78 |
- , #{compnCrs} |
|
76 |
+ , #{userPagePath} |
|
77 |
+ , #{mngrPagePath} |
|
78 |
+ , #{compnPath} |
|
79 | 79 |
, #{expsrYn} |
80 | 80 |
, 'Y' |
81 | 81 |
, '1' |
... | ... | @@ -93,9 +93,9 @@ |
93 | 93 |
UPDATE conts_type_mng |
94 | 94 |
SET conts_korn_nm = #{contsKornNm} |
95 | 95 |
, conts_eng_nm = #{contsEngNm} |
96 |
- , page_crs = #{pageCrs} |
|
97 |
- , mngr_page_crs = #{mngrPageCrs} |
|
98 |
- , compn_crs = #{compnCrs} |
|
96 |
+ , user_page_path = #{userPagePath} |
|
97 |
+ , mngr_page_path = #{mngrPagePath} |
|
98 |
+ , compn_path = #{compnPath} |
|
99 | 99 |
, expsr_yn = #{expsrYn} |
100 | 100 |
, use_yn = #{useYn} |
101 | 101 |
, mdfr = #{mdfr} |
... | ... | @@ -107,9 +107,9 @@ |
107 | 107 |
SELECT conts_id |
108 | 108 |
, conts_korn_nm |
109 | 109 |
, conts_eng_nm |
110 |
- , page_crs |
|
111 |
- , mngr_page_crs |
|
112 |
- , compn_crs |
|
110 |
+ , user_page_path |
|
111 |
+ , mngr_page_path |
|
112 |
+ , compn_path |
|
113 | 113 |
, expsr_yn |
114 | 114 |
, use_yn |
115 | 115 |
, sys_pvsn_yn |
... | ... | @@ -204,8 +204,8 @@ |
204 | 204 |
SELECT ctm.conts_id |
205 | 205 |
, ctm.conts_korn_nm |
206 | 206 |
, ctm.conts_eng_nm |
207 |
- , ctm.page_crs |
|
208 |
- , ctm.compn_crs |
|
207 |
+ , ctm.user_page_path |
|
208 |
+ , ctm.compn_path |
|
209 | 209 |
, mi.menu_id |
210 | 210 |
, mai.authrt_cd |
211 | 211 |
, mai.inq_authrt |
... | ... | @@ -216,27 +216,27 @@ |
216 | 216 |
FROM ( SELECT conts_id |
217 | 217 |
, conts_korn_nm |
218 | 218 |
, conts_eng_nm |
219 |
- , page_crs |
|
220 |
- , compn_crs |
|
219 |
+ , user_page_path |
|
220 |
+ , compn_path |
|
221 | 221 |
FROM conts_type_mng |
222 | 222 |
WHERE use_yn = 'Y' |
223 |
- AND page_crs IS NOT NULL |
|
224 |
- AND page_crs != '' |
|
223 |
+ AND user_page_path IS NOT NULL |
|
224 |
+ AND user_page_path != '' |
|
225 | 225 |
|
226 | 226 |
UNION ALL |
227 | 227 |
|
228 | 228 |
SELECT conts_id |
229 | 229 |
, conts_korn_nm |
230 | 230 |
, concat('adm', conts_eng_nm) AS conts_eng_nm |
231 |
- , mngr_page_crs AS page_crs |
|
232 |
- , compn_crs |
|
231 |
+ , mngr_page_path AS user_page_path |
|
232 |
+ , compn_path |
|
233 | 233 |
FROM conts_type_mng |
234 | 234 |
WHERE use_yn = 'Y' |
235 |
- AND mngr_page_crs IS NOT NULL |
|
236 |
- AND mngr_page_crs != '' |
|
235 |
+ AND mngr_page_path IS NOT NULL |
|
236 |
+ AND mngr_page_path != '' |
|
237 | 237 |
) ctm |
238 | 238 |
LEFT JOIN menu_info mi |
239 |
- ON ctm.conts_id = mi.menu_type_ctgry |
|
239 |
+ ON ctm.conts_id = mi.menu_type_artcl |
|
240 | 240 |
LEFT JOIN menu_authrt_info mai |
241 | 241 |
ON mi.menu_id = mai.menu_id |
242 | 242 |
</select> |
--- src/main/resources/mybatis/mapper/loginPolicy/email2ndAuth-SQL.xml
+++ src/main/resources/mybatis/mapper/loginPolicy/email2ndAuth-SQL.xml
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 |
--> |
15 | 15 |
<select id="findLatestEmail2ndAuth" resultType="String"> |
16 | 16 |
SELECT use_yn |
17 |
- FROM eml_2nd_auth_hstry |
|
17 |
+ FROM eml_scd_cept_hstry |
|
18 | 18 |
ORDER BY reg_dt DESC |
19 | 19 |
LIMIT 1 |
20 | 20 |
</select> |
... | ... | @@ -25,14 +25,14 @@ |
25 | 25 |
내 용 : 이메일 2차 인증 등록 |
26 | 26 |
--> |
27 | 27 |
<insert id="save" parameterType="Email2ndAuthVO"> |
28 |
- INSERT INTO eml_2nd_auth_hstry ( |
|
29 |
- eml_2nd_auth_id, |
|
28 |
+ INSERT INTO eml_scd_cept_hstry ( |
|
29 |
+ eml_scd_cept_id, |
|
30 | 30 |
use_yn, |
31 | 31 |
rgtr, |
32 | 32 |
reg_dt |
33 | 33 |
) |
34 | 34 |
VALUES ( |
35 |
- #{eml2ndAuthId}, |
|
35 |
+ #{emlScdCeptId}, |
|
36 | 36 |
#{useYn}, |
37 | 37 |
#{rgtr}, |
38 | 38 |
NOW() |
--- src/main/resources/mybatis/mapper/loginPolicy/loginMode-SQL.xml
+++ src/main/resources/mybatis/mapper/loginPolicy/loginMode-SQL.xml
... | ... | @@ -13,8 +13,8 @@ |
13 | 13 |
내 용 : 로그인 방식 설정 최신값 조회 |
14 | 14 |
--> |
15 | 15 |
<select id="selectLatestLoginMode" resultType="String"> |
16 |
- SELECT lgn_mode |
|
17 |
- FROM lgn_mode_hstry |
|
16 |
+ SELECT lgn_mth |
|
17 |
+ FROM lgn_mth_hstry |
|
18 | 18 |
ORDER BY reg_dt DESC |
19 | 19 |
LIMIT 1 |
20 | 20 |
</select> |
... | ... | @@ -25,14 +25,14 @@ |
25 | 25 |
내 용 : 로그인 방식 설정 등록 |
26 | 26 |
--> |
27 | 27 |
<insert id="insertLoginMode" parameterType="LoginModeVO"> |
28 |
- INSERT INTO lgn_mode_hstry ( |
|
29 |
- lgn_mode_id, |
|
30 |
- lgn_mode, |
|
28 |
+ INSERT INTO lgn_mth_hstry ( |
|
29 |
+ lgn_mth_id, |
|
30 |
+ lgn_mth, |
|
31 | 31 |
rgtr, |
32 | 32 |
reg_dt |
33 | 33 |
) VALUES ( |
34 |
- #{lgnModeId}, |
|
35 |
- #{lgnMode}, |
|
34 |
+ #{lgnMthId}, |
|
35 |
+ #{lgnMth}, |
|
36 | 36 |
#{rgtr}, |
37 | 37 |
NOW() |
38 | 38 |
) |
--- src/main/resources/mybatis/mapper/loginPolicy/loginPolicy-SQL.xml
+++ src/main/resources/mybatis/mapper/loginPolicy/loginPolicy-SQL.xml
... | ... | @@ -13,8 +13,8 @@ |
13 | 13 |
내 용 : 중복로그인 여부 최신값 조회 |
14 | 14 |
--> |
15 | 15 |
<select id="selectLatestPolicy" resultType="String"> |
16 |
- SELECT allow_multiple_login |
|
17 |
- FROM lgn_policy_hstry |
|
16 |
+ SELECT mlt_lgn_prm_yn |
|
17 |
+ FROM lgn_plcy_hstry |
|
18 | 18 |
ORDER BY reg_dt DESC |
19 | 19 |
LIMIT 1 |
20 | 20 |
</select> |
... | ... | @@ -25,15 +25,15 @@ |
25 | 25 |
내 용 : 중복로그인 여부 등록 |
26 | 26 |
--> |
27 | 27 |
<insert id="insertPolicy" parameterType="LoginPolicyVO"> |
28 |
- INSERT INTO lgn_policy_hstry ( |
|
29 |
- policy_id, |
|
30 |
- allow_multiple_login, |
|
28 |
+ INSERT INTO lgn_plcy_hstry ( |
|
29 |
+ plcy_id, |
|
30 |
+ mlt_lgn_prm_yn, |
|
31 | 31 |
rgtr, |
32 | 32 |
reg_dt |
33 | 33 |
) |
34 | 34 |
VALUES ( |
35 |
- #{policyId}, |
|
36 |
- #{allowMultipleLogin}, |
|
35 |
+ #{plcyId}, |
|
36 |
+ #{mltLgnPrmYn}, |
|
37 | 37 |
#{rgtr}, |
38 | 38 |
NOW() |
39 | 39 |
) |
--- src/main/resources/mybatis/mapper/loginPolicy/storageMode-SQL.xml
+++ src/main/resources/mybatis/mapper/loginPolicy/storageMode-SQL.xml
... | ... | @@ -13,8 +13,8 @@ |
13 | 13 |
내 용 : 스토리지 방식 최신값 조회 |
14 | 14 |
--> |
15 | 15 |
<select id="findLatestStorageMode" resultType="String"> |
16 |
- SELECT strg_mode |
|
17 |
- FROM strg_mode_hstry |
|
16 |
+ SELECT strg_mth |
|
17 |
+ FROM strg_mth_hstry |
|
18 | 18 |
ORDER BY reg_dt DESC |
19 | 19 |
LIMIT 1 |
20 | 20 |
</select> |
... | ... | @@ -25,15 +25,15 @@ |
25 | 25 |
내 용 : 스토리지 방식 등록 |
26 | 26 |
--> |
27 | 27 |
<insert id="save" parameterType="StorageModeVO"> |
28 |
- INSERT INTO strg_mode_hstry ( |
|
29 |
- strg_mode_id, |
|
30 |
- strg_mode, |
|
28 |
+ INSERT INTO strg_mth_hstry ( |
|
29 |
+ strg_mth_id, |
|
30 |
+ strg_mth, |
|
31 | 31 |
rgtr, |
32 | 32 |
reg_dt |
33 | 33 |
) |
34 | 34 |
VALUES ( |
35 |
- #{strgModeId}, |
|
36 |
- #{strgMode}, |
|
35 |
+ #{strgMthId}, |
|
36 |
+ #{strgMth}, |
|
37 | 37 |
#{rgtr}, |
38 | 38 |
NOW() |
39 | 39 |
) |
--- src/main/resources/mybatis/mapper/main/adminMain-SQL.xml
+++ src/main/resources/mybatis/mapper/main/adminMain-SQL.xml
... | ... | @@ -25,7 +25,7 @@ |
25 | 25 |
내 용 : 오늘 방문자 수 |
26 | 26 |
--> |
27 | 27 |
<select id="selectCntnDayCnt"> |
28 |
- SELECT SUM(COALESCE(cntn_nope, 0)) |
|
28 |
+ SELECT SUM(COALESCE(acsr_cnt, 0)) |
|
29 | 29 |
FROM user_cntn_stats |
30 | 30 |
WHERE cntn_yr = to_char(now(), 'YYYY') |
31 | 31 |
AND cntn_mm = to_char(now(), 'MM') |
... | ... | @@ -38,7 +38,7 @@ |
38 | 38 |
내 용 : 이번달 방문자 수 |
39 | 39 |
--> |
40 | 40 |
<select id="selectCntnMmCnt"> |
41 |
- SELECT SUM(COALESCE(cntn_nope, 0)) |
|
41 |
+ SELECT SUM(COALESCE(acsr_cnt, 0)) |
|
42 | 42 |
FROM user_cntn_stats |
43 | 43 |
WHERE cntn_yr = to_char(now(), 'YYYY') |
44 | 44 |
AND cntn_mm = to_char(now(), 'MM') |
... | ... | @@ -50,7 +50,7 @@ |
50 | 50 |
내 용 : 총 방문자 수 |
51 | 51 |
--> |
52 | 52 |
<select id="selectCntnTotalCnt"> |
53 |
- SELECT SUM(COALESCE(cntn_nope, 0)) |
|
53 |
+ SELECT SUM(COALESCE(acsr_cnt, 0)) |
|
54 | 54 |
FROM user_cntn_stats |
55 | 55 |
</select> |
56 | 56 |
|
... | ... | @@ -62,7 +62,7 @@ |
62 | 62 |
<select id="findByMonthCntnStats" parameterType="HashMap"> |
63 | 63 |
SELECT ai.dates |
64 | 64 |
, array_agg(authrt_nm) AS authrt_nm |
65 |
- , array_agg(COALESCE(ucs.cntn_nope, 0)) AS cntn_nope |
|
65 |
+ , array_agg(COALESCE(ucs.acsr_cnt, 0)) AS acsr_cnt |
|
66 | 66 |
FROM ( |
67 | 67 |
SELECT generate_series((now() + '-10 days') |
68 | 68 |
, now(), '1 day'::interval)::date AS dates |
... | ... | @@ -72,7 +72,7 @@ |
72 | 72 |
WHERE use_yn = 'Y' |
73 | 73 |
AND authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */ |
74 | 74 |
ORDER BY reg_dt ) AS ai |
75 |
- LEFT JOIN (SELECT authrt_cd, to_date(concat(cntn_yr,cntn_mm,cntn_day), 'YYYYMMDD') AS cntn_date, cntn_nope FROM user_cntn_stats) AS ucs |
|
75 |
+ LEFT JOIN (SELECT authrt_cd, to_date(concat(cntn_yr,cntn_mm,cntn_day), 'YYYYMMDD') AS cntn_date, acsr_cnt FROM user_cntn_stats) AS ucs |
|
76 | 76 |
ON dates = ucs.cntn_date |
77 | 77 |
AND ai.authrt_cd = ucs.authrt_cd |
78 | 78 |
GROUP BY ai.dates |
--- src/main/resources/mybatis/mapper/mber/lgnHstry-SQL.xml
+++ src/main/resources/mybatis/mapper/mber/lgnHstry-SQL.xml
... | ... | @@ -12,8 +12,8 @@ |
12 | 12 |
<result property="lgnType" column="lgn_type" /> |
13 | 13 |
<result property="cntnDt" column="cntn_dt" /> |
14 | 14 |
<result property="cntnIp" column="cntn_ip" /> |
15 |
- <result property="cntnOperSys" column="cntn_oper_sys" /> |
|
16 |
- <result property="deviceNm" column="device_nm" /> |
|
15 |
+ <result property="cntnOperSysm" column="cntn_oper_sysm" /> |
|
16 |
+ <result property="dvcNm" column="dvc_nm" /> |
|
17 | 17 |
<result property="brwsrNm" column="brwsr_nm" /> |
18 | 18 |
</resultMap> |
19 | 19 |
|
... | ... | @@ -28,16 +28,16 @@ |
28 | 28 |
, lgn_type |
29 | 29 |
, cntn_dt |
30 | 30 |
, cntn_ip |
31 |
- , cntn_oper_sys |
|
32 |
- , device_nm |
|
31 |
+ , cntn_oper_sysm |
|
32 |
+ , dvc_nm |
|
33 | 33 |
, brwsr_nm |
34 | 34 |
) VALUES ( |
35 | 35 |
#{lgnId} |
36 | 36 |
, #{lgnType} |
37 | 37 |
, NOW() |
38 | 38 |
, #{cntnIp} |
39 |
- , #{cntnOperSys} |
|
40 |
- , #{deviceNm} |
|
39 |
+ , #{cntnOperSysm} |
|
40 |
+ , #{dvcNm} |
|
41 | 41 |
, #{brwsrNm} |
42 | 42 |
) |
43 | 43 |
</insert> |
... | ... | @@ -48,8 +48,8 @@ |
48 | 48 |
, lh.lgn_type |
49 | 49 |
, TO_CHAR(lh.cntn_dt, 'YYYY-MM-DD HH24:MI') AS cntn_dt |
50 | 50 |
, lh.cntn_ip |
51 |
- , lh.cntn_oper_sys |
|
52 |
- , lh.device_nm |
|
51 |
+ , lh.cntn_oper_sysm |
|
52 |
+ , lh.dvc_nm |
|
53 | 53 |
, lh.brwsr_nm |
54 | 54 |
FROM lgn_hstry AS lh |
55 | 55 |
</sql> |
--- src/main/resources/mybatis/mapper/mber/mber-SQL.xml
+++ src/main/resources/mybatis/mapper/mber/mber-SQL.xml
... | ... | @@ -50,15 +50,15 @@ |
50 | 50 |
<resultMap id="socialAccountMap" type="MberSocialAccountVO"> |
51 | 51 |
<result property="id" column="id" /> |
52 | 52 |
<result property="mbrId" column="mbr_id" /> |
53 |
- <result property="providerType" column="provider_type" /> |
|
54 |
- <result property="socialId" column="social_id" /> |
|
55 |
- <result property="loginId" column="login_id" /> |
|
56 |
- <result property="socialEmail" column="social_email" /> |
|
57 |
- <result property="socialName" column="social_name" /> |
|
58 |
- <result property="isPrimaryProfile" column="is_primary_profile" /> |
|
59 |
- <result property="isActive" column="is_active" /> |
|
60 |
- <result property="linkedDt" column="linked_dt" /> |
|
61 |
- <result property="unlinkedDt" column="unlinked_dt" /> |
|
53 |
+ <result property="lgnOffrType" column="lgn_offr_type" /> |
|
54 |
+ <result property="snsLgnId" column="sns_lgn_id" /> |
|
55 |
+ <result property="lgnId" column="lgn_id" /> |
|
56 |
+ <result property="snsEml" column="sns_eml" /> |
|
57 |
+ <result property="snsNm" column="sns_nm" /> |
|
58 |
+ <result property="mainPrflYn" column="main_prfl_yn" /> |
|
59 |
+ <result property="linkVtlzYn" column="link_vtlz_yn" /> |
|
60 |
+ <result property="linkDt" column="link_dt" /> |
|
61 |
+ <result property="linkCncltnDt" column="link_cncltn_dt" /> |
|
62 | 62 |
<result property="rgtr" column="rgtr" /> |
63 | 63 |
<result property="regDt" column="reg_dt" /> |
64 | 64 |
<result property="mdfr" column="mdfr" /> |
... | ... | @@ -102,13 +102,13 @@ |
102 | 102 |
<select id="findByMberSecurity" parameterType="String" resultMap="mberMap"> |
103 | 103 |
<include refid="selectMber" /> |
104 | 104 |
WHERE EXISTS ( |
105 |
- SELECT 1 FROM mbr_social_accounts msa |
|
105 |
+ SELECT 1 FROM mbr_sns_acnt msa |
|
106 | 106 |
WHERE msa.mbr_id = mi.mbr_id |
107 | 107 |
AND ( |
108 |
- (msa.provider_type = 'S' AND msa.login_id = #{lgnId}) |
|
109 |
- OR (msa.provider_type != 'S' AND msa.social_id = #{lgnId}) |
|
108 |
+ (msa.lgn_offr_type = 'S' AND msa.lgn_id = #{lgnId}) |
|
109 |
+ OR (msa.lgn_offr_type != 'S' AND msa.sns_lgn_id = #{lgnId}) |
|
110 | 110 |
) |
111 |
- AND msa.is_active = true |
|
111 |
+ AND msa.link_vtlz_yn = true |
|
112 | 112 |
) |
113 | 113 |
AND mi.use_yn = 'Y' |
114 | 114 |
LIMIT 1 |
... | ... | @@ -120,17 +120,17 @@ |
120 | 120 |
<select id="findByUnifiedLogin" parameterType="map" resultMap="mberMap"> |
121 | 121 |
<include refid="selectMber" /> |
122 | 122 |
WHERE EXISTS ( |
123 |
- SELECT 1 FROM mbr_social_accounts msa |
|
123 |
+ SELECT 1 FROM mbr_sns_acnt msa |
|
124 | 124 |
WHERE msa.mbr_id = mi.mbr_id |
125 |
- <if test="providerType != null and 'S'.equals(providerType)"> |
|
126 |
- AND msa.provider_type = 'S' |
|
127 |
- AND msa.login_id = #{identifier} |
|
125 |
+ <if test="lgnOffrType != null and 'S'.equals(lgnOffrType)"> |
|
126 |
+ AND msa.lgn_offr_type = 'S' |
|
127 |
+ AND msa.lgn_id = #{identifier} |
|
128 | 128 |
</if> |
129 |
- <if test="providerType != null and !'S'.equals(providerType)"> |
|
130 |
- AND msa.provider_type = #{providerType} |
|
131 |
- AND msa.social_id = #{identifier} |
|
129 |
+ <if test="lgnOffrType != null and !'S'.equals(lgnOffrType)"> |
|
130 |
+ AND msa.lgn_offr_type = #{lgnOffrType} |
|
131 |
+ AND msa.sns_lgn_id = #{identifier} |
|
132 | 132 |
</if> |
133 |
- AND msa.is_active = true |
|
133 |
+ AND msa.link_vtlz_yn = true |
|
134 | 134 |
) |
135 | 135 |
AND mi.use_yn = 'Y' |
136 | 136 |
AND mi.mbr_stts = '1' |
... | ... | @@ -144,11 +144,11 @@ |
144 | 144 |
--> |
145 | 145 |
<select id="findByCheckLoginId" parameterType="String" resultType="boolean"> |
146 | 146 |
SELECT COUNT(*) > 0 |
147 |
- FROM mbr_social_accounts msa |
|
147 |
+ FROM mbr_sns_acnt msa |
|
148 | 148 |
JOIN mbr_info mi ON msa.mbr_id = mi.mbr_id |
149 |
- WHERE msa.provider_type = 'S' |
|
150 |
- AND msa.login_id = #{lgnId} |
|
151 |
- AND msa.is_active = true |
|
149 |
+ WHERE msa.lgn_offr_type = 'S' |
|
150 |
+ AND msa.lgn_id = #{lgnId} |
|
151 |
+ AND msa.link_vtlz_yn = true |
|
152 | 152 |
AND mi.use_yn = 'Y' |
153 | 153 |
</select> |
154 | 154 |
|
... | ... | @@ -380,25 +380,25 @@ |
380 | 380 |
|
381 | 381 |
<!-- 소셜 계정 정보 저장 --> |
382 | 382 |
<insert id="saveSocialAccount" parameterType="MberSocialAccountVO"> |
383 |
- INSERT INTO mbr_social_accounts ( |
|
383 |
+ INSERT INTO mbr_sns_acnt ( |
|
384 | 384 |
mbr_id, |
385 |
- provider_type, |
|
386 |
- social_id, |
|
387 |
- login_id, |
|
388 |
- social_email, |
|
389 |
- social_name, |
|
390 |
- is_primary_profile, |
|
391 |
- is_active, |
|
385 |
+ lgn_offr_type, |
|
386 |
+ sns_lgn_id, |
|
387 |
+ lgn_id, |
|
388 |
+ sns_eml, |
|
389 |
+ sns_nm, |
|
390 |
+ main_prfl_yn, |
|
391 |
+ link_vtlz_yn, |
|
392 | 392 |
rgtr |
393 | 393 |
) VALUES ( |
394 | 394 |
#{mbrId}, |
395 |
- #{providerType}, |
|
396 |
- #{socialId}, |
|
397 |
- #{loginId}, |
|
398 |
- #{socialEmail}, |
|
399 |
- #{socialName}, |
|
400 |
- #{isPrimaryProfile}, |
|
401 |
- #{isActive}, |
|
395 |
+ #{lgnOffrType}, |
|
396 |
+ #{snsLgnId}, |
|
397 |
+ #{lgnId}, |
|
398 |
+ #{snsEml}, |
|
399 |
+ #{snsNm}, |
|
400 |
+ #{mainPrflYn}, |
|
401 |
+ #{linkVtlzYn}, |
|
402 | 402 |
#{rgtr} |
403 | 403 |
) |
404 | 404 |
</insert> |
... | ... | @@ -414,88 +414,88 @@ |
414 | 414 |
|
415 | 415 |
<!-- 회원 ID로 소셜 계정 목록 조회 --> |
416 | 416 |
<select id="findSocialAccountsByMbrId" parameterType="String" resultMap="socialAccountMap"> |
417 |
- SELECT id, mbr_id, provider_type, social_id, login_id, social_email, social_name, |
|
418 |
- is_primary_profile, is_active, linked_dt, unlinked_dt, rgtr, reg_dt, mdfr, mdfcn_dt |
|
419 |
- FROM mbr_social_accounts |
|
417 |
+ SELECT id, mbr_id, lgn_offr_type, sns_lgn_id, lgn_id, sns_eml, sns_nm, |
|
418 |
+ main_prfl_yn, link_vtlz_yn, link_dt, link_cncltn_dt, rgtr, reg_dt, mdfr, mdfcn_dt |
|
419 |
+ FROM mbr_sns_acnt |
|
420 | 420 |
WHERE mbr_id = #{mbrId} |
421 |
- AND is_active = true |
|
422 |
- ORDER BY is_primary_profile DESC, linked_dt ASC |
|
421 |
+ AND link_vtlz_yn = true |
|
422 |
+ ORDER BY main_prfl_yn DESC, link_dt ASC |
|
423 | 423 |
</select> |
424 | 424 |
|
425 | 425 |
<!-- 특정 제공자로 소셜 계정 조회 --> |
426 | 426 |
<select id="findSocialAccountByProvider" parameterType="map" resultMap="socialAccountMap"> |
427 |
- SELECT id, mbr_id, provider_type, social_id, login_id, social_email, social_name, |
|
428 |
- is_primary_profile, is_active, linked_dt, unlinked_dt, rgtr, reg_dt, mdfr, mdfcn_dt |
|
429 |
- FROM mbr_social_accounts |
|
427 |
+ SELECT id, mbr_id, lgn_offr_type, sns_lgn_id, lgn_id, sns_eml, sns_nm, |
|
428 |
+ main_prfl_yn, link_vtlz_yn, link_dt, link_cncltn_dt, rgtr, reg_dt, mdfr, mdfcn_dt |
|
429 |
+ FROM mbr_sns_acnt |
|
430 | 430 |
WHERE mbr_id = #{mbrId} |
431 |
- AND provider_type = #{providerType} |
|
432 |
- AND is_active = true |
|
431 |
+ AND lgn_offr_type = #{lgnOffrType} |
|
432 |
+ AND link_vtlz_yn = true |
|
433 | 433 |
</select> |
434 | 434 |
|
435 | 435 |
<!-- 소셜 계정 연동 --> |
436 | 436 |
<insert id="linkSocialAccount" parameterType="MberSocialAccountVO"> |
437 |
- INSERT INTO mbr_social_accounts ( |
|
437 |
+ INSERT INTO mbr_sns_acnt ( |
|
438 | 438 |
mbr_id, |
439 |
- provider_type, |
|
440 |
- social_id, |
|
441 |
- login_id, |
|
442 |
- social_email, |
|
443 |
- social_name, |
|
444 |
- is_primary_profile, |
|
445 |
- is_active, |
|
439 |
+ lgn_offr_type, |
|
440 |
+ sns_lgn_id, |
|
441 |
+ lgn_id, |
|
442 |
+ sns_eml, |
|
443 |
+ sns_nm, |
|
444 |
+ main_prfl_yn, |
|
445 |
+ link_vtlz_yn, |
|
446 | 446 |
rgtr |
447 | 447 |
) VALUES ( |
448 | 448 |
#{mbrId}, |
449 |
- #{providerType}, |
|
450 |
- #{socialId}, |
|
451 |
- #{loginId}, |
|
452 |
- #{socialEmail}, |
|
453 |
- #{socialName}, |
|
454 |
- #{isPrimaryProfile}, |
|
455 |
- #{isActive}, |
|
449 |
+ #{lgnOffrType}, |
|
450 |
+ #{snsLgnId}, |
|
451 |
+ #{lgnId}, |
|
452 |
+ #{snsEml}, |
|
453 |
+ #{snsNm}, |
|
454 |
+ #{mainPrflYn}, |
|
455 |
+ #{linkVtlzYn}, |
|
456 | 456 |
#{rgtr} |
457 | 457 |
) |
458 |
- ON CONFLICT (mbr_id, provider_type) |
|
458 |
+ ON CONFLICT (mbr_id, lgn_offr_type) |
|
459 | 459 |
DO UPDATE SET |
460 |
- social_id = #{socialId}, |
|
461 |
- login_id = #{loginId}, |
|
462 |
- social_email = #{socialEmail}, |
|
463 |
- social_name = #{socialName}, |
|
464 |
- is_active = true, |
|
465 |
- unlinked_dt = NULL, |
|
460 |
+ sns_lgn_id = #{snsLgnId}, |
|
461 |
+ lgn_id = #{lgnId}, |
|
462 |
+ sns_eml = #{snsEml}, |
|
463 |
+ sns_nm = #{snsNm}, |
|
464 |
+ link_vtlz_yn = true, |
|
465 |
+ link_cncltn_dt = NULL, |
|
466 | 466 |
mdfr = #{rgtr}, |
467 | 467 |
mdfcn_dt = NOW() |
468 | 468 |
</insert> |
469 | 469 |
|
470 | 470 |
<!-- 소셜 계정 연동 해지 --> |
471 | 471 |
<update id="unlinkSocialAccount" parameterType="map"> |
472 |
- UPDATE mbr_social_accounts |
|
473 |
- SET is_active = false, |
|
474 |
- unlinked_dt = NOW(), |
|
472 |
+ UPDATE mbr_sns_acnt |
|
473 |
+ SET link_vtlz_yn = false, |
|
474 |
+ link_cncltn_dt = NOW(), |
|
475 | 475 |
mdfr = #{mdfr}, |
476 | 476 |
mdfcn_dt = NOW() |
477 | 477 |
WHERE mbr_id = #{mbrId} |
478 |
- AND provider_type = #{providerType} |
|
478 |
+ AND lgn_offr_type = #{lgnOffrType} |
|
479 | 479 |
</update> |
480 | 480 |
|
481 | 481 |
<!-- 메인 프로필 설정 --> |
482 | 482 |
<update id="setPrimaryProfile" parameterType="map"> |
483 | 483 |
<!-- 기존 메인 프로필 해제 --> |
484 |
- UPDATE mbr_social_accounts |
|
485 |
- SET is_primary_profile = false, |
|
484 |
+ UPDATE mbr_sns_acnt |
|
485 |
+ SET main_prfl_yn = false, |
|
486 | 486 |
mdfr = #{mdfr}, |
487 | 487 |
mdfcn_dt = NOW() |
488 | 488 |
WHERE mbr_id = #{mbrId} |
489 |
- AND is_primary_profile = true; |
|
489 |
+ AND main_prfl_yn = true; |
|
490 | 490 |
|
491 | 491 |
<!-- 새로운 메인 프로필 설정 --> |
492 |
- UPDATE mbr_social_accounts |
|
493 |
- SET is_primary_profile = true, |
|
492 |
+ UPDATE mbr_sns_acnt |
|
493 |
+ SET main_prfl_yn = true, |
|
494 | 494 |
mdfr = #{mdfr}, |
495 | 495 |
mdfcn_dt = NOW() |
496 | 496 |
WHERE mbr_id = #{mbrId} |
497 |
- AND provider_type = #{providerType} |
|
498 |
- AND is_active = true; |
|
497 |
+ AND lgn_offr_type = #{lgnOffrType} |
|
498 |
+ AND link_vtlz_yn = true; |
|
499 | 499 |
</update> |
500 | 500 |
|
501 | 501 |
<!-- 연동 가능한 계정 조회 (이메일로 검색, 다른 제공자 제외) --> |
... | ... | @@ -505,10 +505,10 @@ |
505 | 505 |
AND mi.use_yn = 'Y' |
506 | 506 |
AND mi.mbr_stts = '1' |
507 | 507 |
AND NOT EXISTS ( |
508 |
- SELECT 1 FROM mbr_social_accounts msa |
|
508 |
+ SELECT 1 FROM mbr_sns_acnt msa |
|
509 | 509 |
WHERE msa.mbr_id = mi.mbr_id |
510 |
- AND msa.provider_type = #{providerType} |
|
511 |
- AND msa.is_active = true |
|
510 |
+ AND msa.lgn_offr_type = #{lgnOffrType} |
|
511 |
+ AND msa.link_vtlz_yn = true |
|
512 | 512 |
) |
513 | 513 |
LIMIT 1 |
514 | 514 |
</select> |
--- src/main/resources/mybatis/mapper/prvcInqHstry/prvcInqHstry-SQL.xml
+++ src/main/resources/mybatis/mapper/prvcInqHstry/prvcInqHstry-SQL.xml
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 |
<result property="inqTrprId" column="inq_trpr_id" /> |
13 | 13 |
<result property="inqRsn" column="inq_rsn" /> |
14 | 14 |
<result property="inqIp" column="inq_ip" /> |
15 |
- <result property="rdr" column="rdr" /> |
|
15 |
+ <result property="inqpr" column="inqpr" /> |
|
16 | 16 |
<result property="inqDt" column="inq_dt" /> |
17 | 17 |
<result property="mbrNm" column="mbr_nm" /> |
18 | 18 |
<result property="lgnId" column="lgn_id" /> |
... | ... | @@ -28,13 +28,13 @@ |
28 | 28 |
inq_trpr_id |
29 | 29 |
, inq_rsn |
30 | 30 |
, inq_ip |
31 |
- , rdr |
|
31 |
+ , inqpr |
|
32 | 32 |
, inq_dt |
33 | 33 |
) VALUES ( |
34 | 34 |
#{inqTrprId} |
35 | 35 |
, #{inqRsn} |
36 | 36 |
, #{inqIp} |
37 |
- , #{rdr} |
|
37 |
+ , #{inqpr} |
|
38 | 38 |
, now() |
39 | 39 |
) |
40 | 40 |
</insert> |
... | ... | @@ -45,13 +45,13 @@ |
45 | 45 |
, pih.inq_trpr_id |
46 | 46 |
, pih.inq_rsn |
47 | 47 |
, pih.inq_ip |
48 |
- , pih.rdr |
|
48 |
+ , pih.inqpr |
|
49 | 49 |
, TO_CHAR(pih.inq_dt, 'YYYY-MM-DD HH24:MI') AS inq_dt |
50 | 50 |
, mi.mbr_nm |
51 | 51 |
, (SELECT lgn_id FROM mbr_info WHERE pih.inq_trpr_id = mbr_id) AS lgn_id |
52 | 52 |
FROM prvc_inq_hstry AS pih |
53 | 53 |
LEFT JOIN mbr_info AS mi |
54 |
- ON pih.rdr = mi.mbr_id |
|
54 |
+ ON pih.inqpr = mi.mbr_id |
|
55 | 55 |
</sql> |
56 | 56 |
|
57 | 57 |
<sql id="selectRequirement"> |
... | ... | @@ -96,7 +96,7 @@ |
96 | 96 |
SELECT COUNT(pih.inq_hstry_id) |
97 | 97 |
FROM prvc_inq_hstry AS pih |
98 | 98 |
LEFT JOIN mbr_info AS mi |
99 |
- ON pih.rdr = mi.mbr_id |
|
99 |
+ ON pih.inqpr = mi.mbr_id |
|
100 | 100 |
WHERE true |
101 | 101 |
<include refid="selectRequirement" /> |
102 | 102 |
</select> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?