diff --git a/pom.xml b/pom.xml
index f61edf18..1e1a6072 100644
--- a/pom.xml
+++ b/pom.xml
@@ -538,6 +538,13 @@
JSON-java
1
+
+
+ kr.co.linkhub
+ barocert-sdk
+ 1.5.0
+
+
diff --git a/src/main/java/kcc/let/uat/uia/web/SocialCertController.java b/src/main/java/kcc/let/uat/uia/web/SocialCertController.java
new file mode 100644
index 00000000..0039287a
--- /dev/null
+++ b/src/main/java/kcc/let/uat/uia/web/SocialCertController.java
@@ -0,0 +1,188 @@
+package kcc.let.uat.uia.web;
+
+import org.apache.poi.poifs.crypt.Decryptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import com.barocert.BarocertException;
+import com.barocert.kakaocert.KakaocertService;
+import com.barocert.navercert.NavercertService;
+
+/**
+* @packageName : kcc.let.uat.uia.web
+* @fileName : SocialCertController.java
+* @author : JunHo Lee
+* @date : 2024.11.21
+* @description : 소셜 로그인(네이버, 카카오)
+* ===========================================================
+* DATE AUTHOR NOTE
+* -----------------------------------------------------------
+* 2024.11.21 JunHo Lee 최초 생성
+*/
+@Controller
+public class SocialCertController {
+
+ @Autowired
+ private NavercertService navercertService;
+
+ @Autowired
+ private KakaocertService kakaocertService;
+
+ @Value("#{NAVER_CONFIG.ClientCode}")
+ private String NaverClientCode;
+
+ @Value("#{KAKAO_CONFIG.ClientCode}")
+ private String KakaoClientCode;
+
+ /**
+ * 본인인증 요청
+ *
+ * @param clientCode
+ * 이용기관코드
+ * @param identity
+ * 본인인증 요청정보
+ * @return ResponseVerify
+ * 본인인증 요청 응답정보
+ * @throws BarocertException
+ */
+ @RequestMapping(value = "/web/user/cert/nCert.do")
+ public String requestIdentity(Model m) throws BarocertException {
+
+ // 본인인증 요청 정보 객체
+ com.barocert.navercert.identity.Identity identity = new com.barocert.navercert.identity.Identity();
+
+ // 수신자 휴대폰번호 - 11자 (하이픈 제외)
+ identity.setReceiverHP(navercertService.encrypt("01030266269"));
+ // 수신자 성명 - 80자
+ identity.setReceiverName(navercertService.encrypt("이준호"));
+ // 수신자 생년월일 - 8자 (yyyyMMdd)
+ identity.setReceiverBirthday(navercertService.encrypt("19890202"));
+
+ // 고객센터 연락처 - 최대 12자
+ identity.setCallCenterNum("1600-9854");
+ // 인증요청 만료시간 - 최대 1,000(초)까지 입력 가능
+ identity.setExpireIn(1000);
+
+ // AppToApp 인증요청 여부
+ // true - AppToApp 인증방식, false - 푸시(Push) 인증방식
+ identity.setAppUseYN(false);
+
+ try {
+ com.barocert.navercert.identity.IdentityReceipt request = navercertService.requestIdentity(NaverClientCode, identity);
+
+// Boolean test = navercertService.isUseStaticIP();
+
+ System.out.println("ReceiptID :: " + request.getReceiptID());
+ System.out.println("Scheme :: " + request.getScheme());
+ System.out.println("MarketUrl :: " + request.getMarketUrl());
+
+
+
+ /**
+ * 본인인증 서명검증
+ * 인증되었을경우 State : 1
+ * 인증안되었을경우 State : 0
+ */
+// if(status.getState() == 0) {
+//
+// }else if(status.getState() == 1) {
+//
+// }
+
+
+ //서명이 되지 않았을경우
+ com.barocert.navercert.identity.IdentityStatus status = navercertService.getIdentityStatus(NaverClientCode, request.getReceiptID());
+
+ //서명이 되었을경우
+ com.barocert.navercert.identity.IdentityStatus status2 = navercertService.getIdentityStatus(NaverClientCode, request.getReceiptID());
+
+ com.barocert.navercert.identity.IdentityResult result = navercertService.verifyIdentity(NaverClientCode, request.getReceiptID());
+
+ System.out.println("Ci :: " + result.getCi());
+ System.out.println("ReceiptID :: " + result.getReceiptID());
+ System.out.println("ReceiverDay :: " + result.getReceiverDay());
+ System.out.println("ReceiverEmail :: " + result.getReceiverEmail());
+ System.out.println("ReceiverForeign :: " + result.getReceiverForeign());
+ System.out.println("ReceiverGender :: " + result.getReceiverGender());
+ System.out.println("ReceiverHP :: " + result.getReceiverHP());
+ System.out.println("ReceiverName :: " + result.getReceiverName());
+ System.out.println("ReceiverYear :: " + result.getReceiverYear());
+ System.out.println("SignedData :: " + result.getSignedData());
+ System.out.println("State :: " + result.getState());
+
+
+ m.addAttribute("result", result);
+ } catch (BarocertException ne) {
+ m.addAttribute("Exception", ne);
+ return "exception";
+ }
+
+ return "uat/uia/NCert";
+ }
+
+// @RequestMapping(value = "navercert/requestIdentity", method = RequestMethod.GET)
+ @RequestMapping(value = "/web/user/cert/kCert.do")
+ public String requestIdentity_k(Model m) throws BarocertException {
+
+ // 본인인증 요청 정보 객체
+ com.barocert.kakaocert.identity.Identity identity = new com.barocert.kakaocert.identity.Identity();
+
+ // 수신자 휴대폰번호 - 11자 (하이픈 제외)
+ identity.setReceiverHP(kakaocertService.encrypt("01012341234"));
+ // 수신자 성명 - 80자
+ identity.setReceiverName(kakaocertService.encrypt("홍길동"));
+ // 수신자 생년월일 - 8자 (yyyyMMdd)
+ identity.setReceiverBirthday(kakaocertService.encrypt("19700101"));
+
+ // 인증요청 메시지 제목 - 최대 40자
+ identity.setReqTitle("본인인증 요청 메시지 제목");
+ // 커스텀 메시지 - 최대 500자
+ identity.setExtraMessage(kakaocertService.encrypt("본인인증 커스텀 메시지"));
+ // 인증요청 만료시간 - 최대 1,000(초)까지 입력 가능
+ identity.setExpireIn(1000);
+ // 서명 원문 - 최대 40자 까지 입력가능
+ identity.setToken(kakaocertService.encrypt("본인인증 요청 원문"));
+
+ // AppToApp 인증요청 여부
+ // true - AppToApp 인증방식, false - Talk Message 인증방식
+ identity.setAppUseYN(false);
+
+
+ try {
+ com.barocert.kakaocert.identity.IdentityReceipt result = kakaocertService.requestIdentity(KakaoClientCode, identity);
+ m.addAttribute("result", result);
+ } catch (BarocertException ke) {
+ m.addAttribute("Exception", ke);
+ return "exception";
+ }
+
+ return "uat/uia/KCert";
+ }
+
+
+
+ private String decryptNaver() {
+
+ //복호화 키
+ String secretKey = "LqZ8a…";
+ // 초기화 벡터 (고정값)
+ String iv = "6C2Syq8t…";
+ // 암호문
+ String cipherText = "6MXhzI8yDVdCDktJ/Qdz9S…";
+
+ try {
+ // 복호화
+// Decryptor decryptor = new Decryptor();
+// String decryptedCI = decryptor.decrypt(secretKey, iv, cipherText);
+// System.out.println(decryptedCI);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return "";
+ }
+}
+
+
diff --git a/src/main/java/seed/common/web/CommonController.java b/src/main/java/seed/common/web/CommonController.java
index c93dfacf..1ef85255 100644
--- a/src/main/java/seed/common/web/CommonController.java
+++ b/src/main/java/seed/common/web/CommonController.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
+import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -45,12 +46,9 @@ import org.springframework.web.servlet.ModelAndView;
import com.google.gson.Gson;
-import seed.manager.site.service.ManagerSiteManagerService;
-import seed.manager.site.service.ManagerSiteMenuManagerService;
-import seed.manager.site.service.ManagerSiteMenuService;
-import seed.manager.site.service.ManagerSiteService;
-import seed.manager.smartmenu.service.ManagerSmartMenuManagerService;
-import seed.manager.smartmenu.service.ManagerSmartMenuSetService;
+import kcc.com.cmm.service.EgovFileMngService;
+import kcc.com.cmm.service.EgovFileMngUtil;
+import kcc.com.cmm.service.FileVO;
import seed.common.service.CommonErrorLogsService;
import seed.common.service.CommonFileDownLoadService;
import seed.common.service.CommonFileService;
@@ -77,11 +75,17 @@ import seed.manager.popup.service.ManagerPopupSetService;
import seed.manager.quick.service.ManagerQuickDataService;
import seed.manager.quick.service.ManagerQuickManagerService;
import seed.manager.quick.service.ManagerQuickSetService;
+import seed.manager.site.service.ManagerSiteManagerService;
+import seed.manager.site.service.ManagerSiteMenuManagerService;
+import seed.manager.site.service.ManagerSiteMenuService;
+import seed.manager.site.service.ManagerSiteService;
+import seed.manager.smartmenu.service.ManagerSmartMenuManagerService;
+import seed.manager.smartmenu.service.ManagerSmartMenuSetService;
import seed.manager.survey.service.ManagerSurveyManagerService;
import seed.manager.survey.service.ManagerSurveySetService;
-import seed.manager.visual.service.ManagerVisualRelationDataService;
import seed.manager.visual.service.ManagerVisualDataService;
import seed.manager.visual.service.ManagerVisualManagerService;
+import seed.manager.visual.service.ManagerVisualRelationDataService;
import seed.manager.visual.service.ManagerVisualRelationIconService;
import seed.manager.visual.service.ManagerVisualRelationSetService;
import seed.manager.visual.service.ManagerVisualSetService;
@@ -259,9 +263,18 @@ public class CommonController {
@Autowired
private ServletContext servletContext;
- @Value("#{config['root.path']}")
+ @Resource(name = "EgovFileMngService")
+ private EgovFileMngService fileMngService;
+
+ @Resource(name = "EgovFileMngUtil")
+ private EgovFileMngUtil fileUtil;
+
+// @Value("#{config['root.path']}")
+// private String rootPath;
+ @Value("#{globalSettings['root.path']}")
private String rootPath;
+
@Value("#{config['message.file.size']}")
private String messageFileSize;
@@ -3827,7 +3840,8 @@ public class CommonController {
@RequestMapping(value="/common/proc/{siteIdx}/editor/editorFileReg.do", method=RequestMethod.POST)
public ModelAndView setEditorFileReg(HttpSession session, Map map, MultipartFile up_file,
- @PathVariable(value="siteIdx") String siteIdx){
+ @PathVariable(value="siteIdx") String siteIdx
+ , final MultipartHttpServletRequest multiRequest) throws Exception{
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -3847,32 +3861,45 @@ public class CommonController {
try{
//오늘날짜로 폴더 생성(MD5로 폴더 변환하여 생성)
- SeedUtils.setSeedMkDirs(rootPath + "/" + siteIdx + "/upload/editor");
-
- String reFileName = "editorImg_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
-
- File makeFile = new File(rootPath + "/" + siteIdx + "/upload/editor/" +
- reFileName + up_file.getOriginalFilename().substring(up_file.getOriginalFilename().lastIndexOf(".")));
- up_file.transferTo(makeFile);
+// SeedUtils.setSeedMkDirs(rootPath + "/" + siteIdx + "/upload/editor");
+//
+// String reFileName = "editorImg_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
+//
+// File makeFile = new File(rootPath + "/" + siteIdx + "/upload/editor/" +
+// reFileName + up_file.getOriginalFilename().substring(up_file.getOriginalFilename().lastIndexOf(".")));
+// up_file.transferTo(makeFile);
//FTP 전송
- SeedFtpType seedFtpType = new SeedFtpType();
- //WEB 서버의 경로
- seedFtpType.setDestFilePath(siteIdx + "/upload/editor");
- //WAS 서버의 경로
- seedFtpType.setSrcFilePath(rootPath + "/" + siteIdx + "/upload/editor");
- //WAS 파일명
- seedFtpType.setFileName(reFileName + up_file.getOriginalFilename().substring(up_file.getOriginalFilename().lastIndexOf(".")));
- //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
- seedFtpType.setFtpType("regFile");
- seedFtpType.setSeedFtp();
+// SeedFtpType seedFtpType = new SeedFtpType();
+// //WEB 서버의 경로
+// seedFtpType.setDestFilePath(siteIdx + "/upload/editor");
+// //WAS 서버의 경로
+// seedFtpType.setSrcFilePath(rootPath + "/" + siteIdx + "/upload/editor");
+// //WAS 파일명
+// seedFtpType.setFileName(reFileName + up_file.getOriginalFilename().substring(up_file.getOriginalFilename().lastIndexOf(".")));
+// //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
+// seedFtpType.setFtpType("regFile");
+// seedFtpType.setSeedFtp();
map.put("success", "1");
- map.put("url", "/site/"+siteIdx+"/upload/editor/"+reFileName + up_file.getOriginalFilename().substring(up_file.getOriginalFilename().lastIndexOf(".")));
+
+//
+
+ String atchFileId = "";
+ String isThumbFile = "";
+ final Map files = multiRequest.getFileMap();
+ if (!files.isEmpty()) {
+
+ List result = fileUtil.parseFileInf(files, "EDT_", 0, atchFileId, "", isThumbFile);
+
+ atchFileId = fileMngService.insertFileInfs(result);
+ map.put("url", "/uss/ion/pwm/getImage.do"+"?atchFileId="+atchFileId+"&fileSn=");
+ }
+
map.put("alt", up_file.getOriginalFilename().toString());
map.put("title", up_file.getOriginalFilename().toString().substring(0, up_file.getOriginalFilename().toString().lastIndexOf(".")));
- }catch(IOException e){
+ }catch(Exception e){
log.error("CHECK ERROR:",e);
}
diff --git a/src/main/webapp/META-INF/context.xml b/src/main/webapp/META-INF/context.xml
index b107e4cb..7c880530 100644
--- a/src/main/webapp/META-INF/context.xml
+++ b/src/main/webapp/META-INF/context.xml
@@ -32,4 +32,6 @@
url="jdbc:oracle:thin:@192.168.0.60:1523/XE"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
/>
+
+
diff --git a/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml b/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml
index f5f07e91..5d94c62f 100644
--- a/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml
+++ b/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml
@@ -4,10 +4,13 @@
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
+ http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
+ http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd
+ http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
@@ -105,4 +108,40 @@
+
+
+
+
+
+
+ KOFAIR_BC
+ r5fQ5qFzWzolkxMBpXyOXwy1L17RJN01tjotQ7Kzhuk=
+ 024110000010
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+ KOFAIR_BC
+ r5fQ5qFzWzolkxMBpXyOXwy1L17RJN01tjotQ7Kzhuk=
+ 024110000009
+ true
+ true
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/jsp/uat/uia/KCert.jsp b/src/main/webapp/WEB-INF/jsp/uat/uia/KCert.jsp
new file mode 100644
index 00000000..04a2f03a
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/uat/uia/KCert.jsp
@@ -0,0 +1,9 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
+<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
+
+kakaoCert
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/jsp/uat/uia/NCert.jsp b/src/main/webapp/WEB-INF/jsp/uat/uia/NCert.jsp
new file mode 100644
index 00000000..cc7be38f
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/uat/uia/NCert.jsp
@@ -0,0 +1,20 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
+<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
+
+
+
Response
+
+
+
\ No newline at end of file