diff --git a/pom.xml b/pom.xml
index 9bda8cc6..7ed6dd00 100644
--- a/pom.xml
+++ b/pom.xml
@@ -190,7 +190,13 @@
3.0
-->
-
+
+ tibero6
+ tibero6-custom
+ 1.0.0
+ system
+ ${basedir}/src/main/webapp/WEB-INF/lib/tibero6-jdbc.jar
+
INIPay
@@ -564,7 +570,7 @@
install
${basedir}/target
- visit_edu
+ offeduadvc
diff --git a/src/main/java/kcc/com/cmm/ComDefaultVO.java b/src/main/java/kcc/com/cmm/ComDefaultVO.java
index 31475f18..72df2360 100644
--- a/src/main/java/kcc/com/cmm/ComDefaultVO.java
+++ b/src/main/java/kcc/com/cmm/ComDefaultVO.java
@@ -170,6 +170,8 @@ public class ComDefaultVO implements Serializable {
private String searchDashboard;
+ private String searchQuery;
+
public int getBeSort() {
return beSort;
}
@@ -834,4 +836,12 @@ public class ComDefaultVO implements Serializable {
this.searchInsttNm = searchInsttNm;
}
+ public String getSearchQuery() {
+ return searchQuery;
+ }
+
+ public void setSearchQuery(String searchQuery) {
+ this.searchQuery = searchQuery;
+ }
+
}
diff --git a/src/main/java/kcc/com/cmm/LoginVO.java b/src/main/java/kcc/com/cmm/LoginVO.java
index cbc43b62..dc1d56f5 100644
--- a/src/main/java/kcc/com/cmm/LoginVO.java
+++ b/src/main/java/kcc/com/cmm/LoginVO.java
@@ -117,6 +117,12 @@ public class LoginVO implements Serializable{
private String isSelect;
+ //e-배움터 연동 파라미터
+ private String key;
+ private String user_id;
+ private String returnUrl;
+ private String mberSeq;
+
public String getId() {
return id;
}
@@ -402,6 +408,31 @@ public class LoginVO implements Serializable{
public void setIsSelect(String isSelect) {
this.isSelect = isSelect;
}
+ public String getKey() {
+ return key;
+ }
+ public void setKey(String key) {
+ this.key = key;
+ }
+ public String getUser_id() {
+ return user_id;
+ }
+ public void setUser_id(String user_id) {
+ this.user_id = user_id;
+ }
+ public String getReturnUrl() {
+ return returnUrl;
+ }
+ public void setReturnUrl(String returnUrl) {
+ this.returnUrl = returnUrl;
+ }
+ public String getMberSeq() {
+ return mberSeq;
+ }
+ public void setMberSeq(String mberSeq) {
+ this.mberSeq = mberSeq;
+ }
+
}
diff --git a/src/main/java/kcc/com/cmm/spring/data/CoreConstant.java b/src/main/java/kcc/com/cmm/spring/data/CoreConstant.java
index 301b0de5..b94c015c 100644
--- a/src/main/java/kcc/com/cmm/spring/data/CoreConstant.java
+++ b/src/main/java/kcc/com/cmm/spring/data/CoreConstant.java
@@ -51,6 +51,7 @@ public class CoreConstant {
public static final String PROFILE_LOCAL = "local";
public static final String PROFILE_DEV = "dev";
public static final String PROFILE_PROD = "prod";
+ public static final String PROFILE_TLOCAL = "tLocal";
/* Menu role */
diff --git a/src/main/java/kcc/com/cmm/spring/data/util/ProfileUtil.java b/src/main/java/kcc/com/cmm/spring/data/util/ProfileUtil.java
index f5d97ccb..2019a54d 100644
--- a/src/main/java/kcc/com/cmm/spring/data/util/ProfileUtil.java
+++ b/src/main/java/kcc/com/cmm/spring/data/util/ProfileUtil.java
@@ -15,6 +15,7 @@ public class ProfileUtil {
private static boolean isLocal = false;
private static boolean isDev = false;
private static boolean isProd = false;
+ private static boolean isTLocal = false;
@Autowired
public void setEnvironment(Environment environment) {
@@ -31,6 +32,8 @@ public class ProfileUtil {
ProfileUtil.isProd = true;
} else if (CoreConstant.PROFILE_LOCAL.equalsIgnoreCase(profiles[i])) {
ProfileUtil.isLocal = true;
+ }else if (CoreConstant.PROFILE_TLOCAL.equalsIgnoreCase(profiles[i])) {
+ ProfileUtil.isTLocal = true;
}
}
}
@@ -51,6 +54,10 @@ public class ProfileUtil {
return ProfileUtil.isDev;
}
+ public static boolean isTLocal() {
+ return ProfileUtil.isTLocal;
+ }
+
public static boolean isProd() {
return ProfileUtil.isProd;
}
diff --git a/src/main/java/kcc/let/cop/bbs/web/EgovBBSManageController.java b/src/main/java/kcc/let/cop/bbs/web/EgovBBSManageController.java
index b61d6b16..c5a4c547 100644
--- a/src/main/java/kcc/let/cop/bbs/web/EgovBBSManageController.java
+++ b/src/main/java/kcc/let/cop/bbs/web/EgovBBSManageController.java
@@ -1177,6 +1177,8 @@ public class EgovBBSManageController {
public String selectBoardArticlesWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardVO boardVO, ModelMap model
,RedirectAttributes redirectAttributes) throws Exception {
+ System.out.println("/web/cop/bbsWeb/selectBoardList.do");
+
BoardMasterVO bmVO = new BoardMasterVO();
bmVO.setBbsId(boardVO.getBbsId());
bmVO = bbsAttrbService.selectBBSMasterInf(bmVO);
diff --git a/src/main/java/kcc/let/main/web/EgovMainController.java b/src/main/java/kcc/let/main/web/EgovMainController.java
index b829245f..46f06445 100644
--- a/src/main/java/kcc/let/main/web/EgovMainController.java
+++ b/src/main/java/kcc/let/main/web/EgovMainController.java
@@ -484,9 +484,12 @@ public class EgovMainController {
ModelMap model)
throws Exception {
+ System.out.println("/sym/mms/EgovMainMenuLeft.do");
+
LoginVO user =
EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
if(EgovUserDetailsHelper.isAuthenticated() && user!=null){ //최상단 매뉴
+ System.out.println("/sym/mms/EgovMainMenuLeft.do-in");
//select문에서 사용자보안설정 조회를 위한 set
menuManageVO.setTmp_Id(user.getId());
menuManageVO.setTmp_Password(user.getPassword());
@@ -498,12 +501,14 @@ public class EgovMainController {
//menuManageVO.setMenuUserType("A"); //관리자만 조회
//menuManageVO.setSiteId(user.getSiteId());
List> list_headmenu = menuManageService.selectMainMenuHead(menuManageVO);
- model.addAttribute("list_headmenu", list_headmenu);
+ model.addAttribute("list_headmenu", list_headmenu);
List> list_menulist = menuManageService.selectMainMenuLeft(menuManageVO);
model.addAttribute("list_menulist", list_menulist);
model.addAttribute("user", user);
+
+ System.out.println("/sym/mms/EgovMainMenuLeft.do-in-end");
}
return "main/inc/EgovIncLeftmenu";
}
diff --git a/src/main/java/kcc/let/uat/uia/service/EgovLoginService.java b/src/main/java/kcc/let/uat/uia/service/EgovLoginService.java
index 8c464425..cb813bbb 100644
--- a/src/main/java/kcc/let/uat/uia/service/EgovLoginService.java
+++ b/src/main/java/kcc/let/uat/uia/service/EgovLoginService.java
@@ -88,4 +88,12 @@ public interface EgovLoginService {
void updatePassMissReset(LoginVO loginVO) throws Exception;
void updateEmplyrSttusCode(LoginVO loginVO) throws Exception;
+
+ LoginVO APIActionLogin(LoginVO vo) throws Exception;
+
+ LoginVO selectOffeduMberChk(LoginVO vo) throws Exception;
+
+ void updateMberSeqKeyAjax(LoginVO vo) throws Exception;
+
+ void updateMberSeqKeyNull(LoginVO vo) throws Exception;
}
diff --git a/src/main/java/kcc/let/uat/uia/service/impl/EgovLoginServiceImpl.java b/src/main/java/kcc/let/uat/uia/service/impl/EgovLoginServiceImpl.java
index d6155d25..f8705d29 100644
--- a/src/main/java/kcc/let/uat/uia/service/impl/EgovLoginServiceImpl.java
+++ b/src/main/java/kcc/let/uat/uia/service/impl/EgovLoginServiceImpl.java
@@ -264,5 +264,31 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
loginDAO.updateEmplyrSttusCode(loginVO);
}
+ @Override
+ public LoginVO APIActionLogin(LoginVO vo) throws Exception {
+ // 아이디와 비밀번호가 DB와 일치하는지 확인한다.
+ LoginVO loginVO = loginDAO.APIActionLogin(vo);
+
+ // 3. 결과를 리턴한다.
+ if (loginVO != null && !loginVO.getId().equals("") && !loginVO.getPassword().equals("")) {
+ return loginVO;
+ } else {
+ loginVO = new LoginVO();
+ }
+ return loginVO;
+ }
+ @Override
+ public LoginVO selectOffeduMberChk(LoginVO vo) throws Exception {
+ return loginDAO.selectOffeduMberChk(vo);
+ }
+ @Override
+ public void updateMberSeqKeyAjax(LoginVO vo) throws Exception {
+ loginDAO.updateMberSeqKeyAjax(vo);
+ }
+
+ @Override
+ public void updateMberSeqKeyNull(LoginVO vo) throws Exception {
+ loginDAO.updateMberSeqKeyNull(vo);
+ }
}
diff --git a/src/main/java/kcc/let/uat/uia/service/impl/LoginDAO.java b/src/main/java/kcc/let/uat/uia/service/impl/LoginDAO.java
index 7a5dd4f3..7769173b 100644
--- a/src/main/java/kcc/let/uat/uia/service/impl/LoginDAO.java
+++ b/src/main/java/kcc/let/uat/uia/service/impl/LoginDAO.java
@@ -128,5 +128,21 @@ public class LoginDAO extends EgovAbstractDAO {
update("loginDAO.updateEmplyrSttusCode", loginVO);
}
+
+ public LoginVO APIActionLogin(LoginVO vo) throws Exception {
+ return (LoginVO)select("loginDAO.APIActionLogin", vo);
+ }
+ public LoginVO selectOffeduMberChk(LoginVO vo) throws Exception {
+ return (LoginVO)select("loginDAO.selectOffeduMberChk", vo);
+ }
+ public void updateMberSeqKeyAjax(LoginVO vo) throws Exception{
+ update("loginDAO.updateMberSeqKeyAjax", vo);
+
+ }
+
+ public void updateMberSeqKeyNull(LoginVO vo) throws Exception{
+ update("loginDAO.updateMberSeqKeyNull", vo);
+
+ }
}
diff --git a/src/main/java/kcc/let/uat/uia/web/APILoginContoller.java b/src/main/java/kcc/let/uat/uia/web/APILoginContoller.java
new file mode 100644
index 00000000..591b92ff
--- /dev/null
+++ b/src/main/java/kcc/let/uat/uia/web/APILoginContoller.java
@@ -0,0 +1,289 @@
+package kcc.let.uat.uia.web;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.json.JSONObject;
+import org.springframework.context.ApplicationContext;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import kcc.com.cmm.LoginVO;
+import kcc.com.utl.fcc.service.EgovStringUtil;
+import kcc.let.uat.uia.service.EgovLoginService;
+import kcc.let.uss.umt.service.EgovUserManageService;
+import kcc.let.uss.umt.service.UserManageVO;
+import kcc.let.utl.sim.service.EgovClntInfo;
+
+/**
+ * e-배움터와 연동하여 로그인을 처리하는 컨트롤러 클래스
+ *
+ * @author 이지우
+ * @since 2023.08.31
+ * @version 1.0
+ * @see
+ */
+@CrossOrigin(origins = "*")
+@Controller
+public class APILoginContoller {
+
+ /** userManageService */
+ @Resource(name = "userManageService")
+ private EgovUserManageService userManageService;
+
+ /** EgovLoginService */
+ @Resource(name = "loginService")
+ private EgovLoginService loginService;
+
+ /**
+ * @methodName : loginKeyChk
+ * @author : 이지우
+ * @date : 2023.08.31
+ * @description : 찾교에서 e-배움터 api로 key, id 전달 후 결과 수신
+ * @param LoginVO
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "/web/chkloginKeyForOffedu.do")
+ public String loginKeyChkForOffedu(Map paramRequest, RedirectAttributes redirectAttributes, HttpServletRequest request, HttpServletResponse response,HttpSession session) throws Exception {
+ String userId = paramRequest.get("user_id");
+ String key = paramRequest.get("key");
+ String returnUrl = paramRequest.get("returnUrl");
+
+ System.out.println("@@@@@@@e배움터 로그인 페이지에서 오는 메소드 or e배움터 로그인 상태에서 오는 메소드@@@@@@@@");
+ //테스트를 위한 값 선언
+ /*userId = "std02@forwiz.com";
+ key = "std02@forwiz.comxpnBtqsev3nh9mryXRdL9QRSR72XuNc08ese5iXHb0Waq1dMnSdkHHqKCgoSFeyH.amV1c19kb21haW4vTE1T";
+ returnUrl = "/web/main/mainPage.do";*/
+
+ if(userId == null || key == null) {
+ return "redirect:/web/main/mainPage.do";
+ }
+
+ Map result = loginKeytoEEdu(userId, key);
+ System.out.println("@@@@@@@@@@e배움터 API 결과:"+result);
+ System.out.println("@@@@@@@@@@e배움터 API code 결과:"+result.get("resultCode"));
+ System.out.println("@@@@@@@@@@e배움터 API messea 결과:"+result.get("message"));
+ String resultCode = result.get("resultCode");
+ String message = result.get("message");
+
+
+ if(resultCode.equals("1")) { //API 성공
+ System.out.println("@@@@@@@@@@API성공@@@@@@@@");
+ returnUrl = "/web/main/mainPage.do";//임시 url
+ //회원테이블에 없던 회원이면 insert, 있던 회원이면 update
+ UserManageVO userManageVO = new UserManageVO();
+ userManageVO.setMberId(userId);
+ UserManageVO userManageChk = userManageService.selectOffeduUser(userManageVO);
+ if(userManageChk == null) {
+ userManageVO.setAuthorCode("ROLE_USER_MEMBER");
+ userManageService.insertOffeduUser(userManageVO);
+ System.out.println("@@@@@@@@@@찾교에 계정생성@@@@@@@@@@");
+ }
+ //로그인 처리 시작
+ LoginVO loginVO = new LoginVO();
+ loginVO.setId(userId);
+ loginVO.setPassword("1"); //사용자 로그인만 처리함으로 password 1고정
+ loginVO.setUserSe("GNR");
+ loginVO.setIp(EgovClntInfo.getClntIP(request));
+
+ LoginVO resultVO = loginService.APIActionLogin(loginVO);
+ if (loginService.getUserAuth(resultVO) != null) {
+ resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority());
+ }
+ resultVO.setUrl(returnUrl);
+ request.getSession().setAttribute("APILoginVO", resultVO); // LoginVO세션 생성
+ UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter();
+ ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
+ Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class);
+ if (beans.size() > 0) {
+ springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0];
+ springSecurity.setUsernameParameter("egov_security_username");
+ springSecurity.setPasswordParameter("egov_security_password");
+ springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST"));
+
+ } else {
+ throw new IllegalStateException("No AuthenticationProcessingFilter");
+ }
+ springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null);
+ //doFilter 처리 시 redirect가 불가능하여, context-security.xml에서 login url로 이동 후 redirect 처리
+ System.out.println("@@@@@@@@@@@@@@로그인 처리 완료@@@@@@@@@@@");
+ return "blank";
+ }else if(resultCode.equals("-101")) { //세션 값 만료
+ redirectAttributes.addFlashAttribute("message", message);
+ returnUrl = "/web/main/mainPage.do";
+ return "redirect:" + returnUrl;
+ }else if(resultCode.equals("-102")) { //회원정보 확인불가
+ redirectAttributes.addFlashAttribute("message", message);
+ returnUrl = "/web/main/mainPage.do";
+ return "redirect:" + returnUrl;
+ }else if(resultCode.equals("-1")) { //API 통신 오류
+ redirectAttributes.addFlashAttribute("message", message);
+ returnUrl = "/web/main/mainPage.do";
+ return "redirect:" + returnUrl;
+ }else { //알 수 없는 오류
+ redirectAttributes.addFlashAttribute("message", message);
+ returnUrl = "/web/main/mainPage.do";
+ return "redirect:" + returnUrl;
+ }
+ }
+
+ /**
+ * @methodName : loginKeytoEEdu
+ * @author : 이지우
+ * @date : 2023.08.31
+ * @description : 찾교에서 e-배움터 api로 key, id 전달 후 결과 수신
+ * @param LoginVO
+ * @return
+ * @throws Exception
+ */
+ public Map loginKeytoEEdu(String user_id, String key){
+ HashMap resultMap = new HashMap();
+ try {
+ System.out.println("@@@@@@@@@@@e배움터API시작 id:"+user_id+"key:"+key+"@@@@@@@@@@");
+ // 파라미터 key, user_id를 postData에 넣음
+ StringBuilder postData = new StringBuilder();
+ HashMap params = new HashMap();
+ params.put("user_id", user_id);
+ params.put("key", key);
+ for(Map.Entry param : params.entrySet()) {
+ postData.append('&');
+ postData.append(param.getKey());
+ postData.append('=');
+ postData.append(param.getValue());
+ }
+ byte[] postDataBytes = postData.toString().getBytes("UTF-8");
+ URL obj = new URL("http://223.255.205.7/notdeco/mbrLinkSso.do");
+ HttpURLConnection con = (HttpURLConnection)obj.openConnection();
+ con.setRequestMethod("POST");
+ con.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
+ con.setDoOutput(true);
+ con.getOutputStream().write(postDataBytes);
+
+ BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
+ String line;
+ StringBuffer sb = new StringBuffer();
+ while((line = in.readLine()) != null){
+ sb.append(line);
+ }
+ in.close();
+
+ String text = sb.toString();
+ JSONObject jsonResponse = new JSONObject(text);
+
+ // result_code와 message 값 추출
+ int resultCode = jsonResponse.getInt("result_code");
+ String resultCodeString = Integer.toString(resultCode);
+ String message = jsonResponse.getString("message");
+
+ resultMap.put("resultCode", resultCodeString);
+ resultMap.put("message", message);
+ System.out.println("@@@@@@@@@@e배움터API성공@@@@@@@@@");
+ }catch(Exception e) {
+ e.printStackTrace();
+ resultMap.put("resultCode", "-1");
+ resultMap.put("message", e.getMessage());
+ System.out.println("@@@@@@@@@@e배움터API실패@@@@@@@@@");
+ }
+ return resultMap;
+ }
+
+ /**
+ * @methodName : loginKeytoOffedu
+ * @author : 이지우
+ * @date : 2023.09.07
+ * @description : e-배움터에서 찾교 api로 key, id 전달 후 결과 송신
+ * @param LoginVO
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping(value = "/web/chkloginKeyForEEdu.do", method = RequestMethod.POST)
+ public ResponseEntity