From d18acfdfd2e74e073042ad98f7506431c366e2fc Mon Sep 17 00:00:00 2001 From: hylee Date: Mon, 18 Dec 2023 15:41:02 +0900 Subject: [PATCH] =?UTF-8?q?=EC=83=88=EB=A1=9C=EC=9A=B4=20=EC=8B=A0?= =?UTF-8?q?=EC=B2=AD=20=EC=95=8C=EB=A6=BC=20=EA=B2=8C=EC=8B=9C=ED=8C=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kcc/let/main/web/EgovMainController.java | 254 +- .../let/uat/uia/web/EgovLoginController.java | 4900 ++++++++--------- .../notify/service/NotifyManageService.java | 80 +- .../notify/service/impl/NotifyManageDAO.java | 123 +- .../service/impl/NotifyManageServiceImpl.java | 182 +- .../notify/web/NotifyManageController.java | 632 +-- .../impl/EduAplctAdultServiceImpl.java | 17 + .../eduAplct/web/EduAplctAdultController.java | 1 + .../service/impl/EduAplctTngrServiceImpl.java | 17 + .../eduInfo/service/VEEduAplctVO.java | 9 + .../web/EduAplctMngAdultController.java | 40 +- .../web/EduAplctMngTngrController.java | 37 +- .../spring/com/context-idgen.xml | 15 + .../ccm/notify/VEANotify_Mng_SQL_Tibero.xml | 11 +- .../sym/ccm/notify/VEANotify_SQL_Tibero.xml | 84 +- .../jsp/cmm/uss/umt/notify/selectList.jsp | 335 +- .../WEB-INF/jsp/main/EgovMainDetail.jsp | 128 + .../webapp/WEB-INF/jsp/main/EgovMainList.jsp | 173 + ...ew.jsp => EgovMainView_bakup_20231215.jsp} | 0 19 files changed, 3819 insertions(+), 3219 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/main/EgovMainDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/main/EgovMainList.jsp rename src/main/webapp/WEB-INF/jsp/main/{EgovMainView.jsp => EgovMainView_bakup_20231215.jsp} (100%) diff --git a/src/main/java/kcc/let/main/web/EgovMainController.java b/src/main/java/kcc/let/main/web/EgovMainController.java index 46f06445..5cba48a9 100644 --- a/src/main/java/kcc/let/main/web/EgovMainController.java +++ b/src/main/java/kcc/let/main/web/EgovMainController.java @@ -47,6 +47,7 @@ import kcc.com.uss.ion.cyb.service.CyberAlertManageVO; import kcc.com.uss.ion.pwm.service.EgovPopupManageService; import kcc.com.uss.ion.pwm.service.PopupManageVO; import kcc.com.uss.ion.pwm.service.PopupzoneVO; +import kcc.com.utl.user.service.CheckLoginUtil; import kcc.kccadr.adjPgrMgr.cmm.service.PgrCmmService; import kcc.let.cop.bbs.service.BoardVO; import kcc.let.cop.bbs.service.EgovBBSManageService; @@ -61,6 +62,8 @@ import kcc.let.sym.mnu.mpm.service.MenuManageVO; import kcc.let.sym.site.service.EgovSiteIpService; import kcc.let.sym.site.service.EgovSiteManagerService; import kcc.let.sym.site.service.SiteManagerVO; +import kcc.let.uss.notify.service.NotifyManageService; +import kcc.let.uss.notify.service.NotifyManageVO; import kcc.let.uss.olp.qmc.service.EgovQustnrManageService; import kcc.let.uss.umt.service.EgovUserManageService; import kcc.let.uss.umt.service.UserDefaultVO; @@ -133,6 +136,16 @@ public class EgovMainController { @Resource(name = "pgrCmmService") private PgrCmmService cmmService; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + @Resource(name = "NotifyManageService") + private NotifyManageService notifyManageService; + + + /** * 메인 페이지에서 각 업무 화면으로 연계하는 기능을 제공한다. * @@ -147,6 +160,21 @@ public class EgovMainController { } + + @RequestMapping(value = "/cmm/main/mainDetail.do") + public String mainDetail(@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + ,HttpServletRequest request + , ModelMap model + , HttpSession session) throws Exception{ + + NotifyManageVO result = notifyManageService.findById(notifyManageVO); +// + model.addAttribute("info", result); + + return "main/EgovMainDetail"; + } + + /** * 템플릿 메인 페이지 조회 * @return 메인페이지 정보 Map [key : 항목명] @@ -157,15 +185,45 @@ public class EgovMainController { */ @SuppressWarnings("unchecked") @RequestMapping(value = "/cmm/main/mainPage.do") - public String selectGetMgtMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception{ + public String selectGetMgtMainPage(@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + ,HttpServletRequest request + , ModelMap model + , HttpSession session) throws Exception{ + + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit()); + paginationInfo.setPageSize(notifyManageVO.getPageSize()); + + + notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex()); + notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + notifyManageVO.setToUserId(loginVO.getId()); + + List resultList = notifyManageService.selectPagingList(notifyManageVO); + + + + paginationInfo.setTotalRecordCount(resultList.size() > 0 ? resultList.get(0).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("list", resultList); + + return "main/EgovMainList"; + /* try{ System.out.println("cmm-main-mainPage"); //23.05.02 메인페이지 redirect 실시 boolean page = true; - if(page) { - return "redirect:/kccadr/oprtn/tngrVisitEdu/areaLctrMngList.do"; - } +// if(page) { +// return "redirect:/kccadr/oprtn/tngrVisitEdu/areaLctrMngList.do"; +// } + + {//관리자 오늘 사용자수 StatsVO statsVO = new StatsVO(); List conectStats = conectStatsService.selectMainConectStats(statsVO); @@ -255,98 +313,101 @@ public class EgovMainController { model.addAttribute("userCount", userCount); } - {//접속통계 사용자만 - StatsVO statsVO = new StatsVO(); - statsVO.setRecordCountPerPage(20); //일카운터(20개) - statsVO.setFirstIndex(0); - List statsDayList = conectStatsService.selectMainStatsDay(statsVO); //일일접속카운터(관리자) - List statsMonthList = conectStatsService.selectMainStatsMonth(statsVO); //월별접속카운터(관리자) - List statsYearList = conectStatsService.selectMainStatsYear(statsVO); //연도변접속카운터(관리자) - {//일일통계 /* 연도없애기 */ - JSONObject statsObject = new JSONObject(); - JSONArray cntArray = new JSONArray(); - JSONArray dateArray = new JSONArray(); - for(StatsVO tempStatsVO : statsDayList){ - cntArray.add(tempStatsVO.getCnt()); - dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length())); - } - statsObject.put("cnt" , cntArray); - statsObject.put("date" , dateArray); - model.addAttribute("statsDayList", statsObject); - } - {//월통계 - JSONObject statsObject = new JSONObject(); - JSONArray cntArray = new JSONArray(); - JSONArray dateArray = new JSONArray(); - for(StatsVO tempStatsVO : statsMonthList){ - cntArray.add(tempStatsVO.getCnt()); - dateArray.add(tempStatsVO.getStatsDate()); - } - statsObject.put("cnt" , cntArray); - statsObject.put("date" , dateArray); - model.addAttribute("statsMonthList", statsObject); - } - {//년통계 - JSONObject statsObject = new JSONObject(); - JSONArray cntArray = new JSONArray(); - JSONArray dateArray = new JSONArray(); - cntArray.add(0); //데이터가 2018 한건만 조회 되어서 2017년도 0 넣어줌 - dateArray.add("2017"); - for(StatsVO tempStatsVO : statsYearList){ - cntArray.add(tempStatsVO.getCnt()); - dateArray.add(tempStatsVO.getStatsDate()); - } - statsObject.put("cnt" , cntArray); - statsObject.put("date" , dateArray); - model.addAttribute("statsYearList", statsObject); - } - - //PC, 모바일 접속통계(주간) - statsVO.setRecordCountPerPage(7); //일카운터(7일 : 일주일) - statsVO.setFirstIndex(0); - List statsPcDayList = conectStatsService.selectPcMainStatsDay(statsVO); //일일접속카운터(사용자) - List statsMobileDayList = conectStatsService.selectMobileMainStatsDay(statsVO); //일일접속카운터(사용자) - List statsAllDayList = conectStatsService.selectPcMobileMainStatsDay(statsVO); //모바일+PC(사용자) - {//PC - JSONObject statsObject = new JSONObject(); - JSONArray cntArray = new JSONArray(); - JSONArray dateArray = new JSONArray(); - for(StatsVO tempStatsVO : statsPcDayList){ - cntArray.add(tempStatsVO.getCnt()); - dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length()) ); - } - statsObject.put("cnt" , cntArray); - statsObject.put("date" , dateArray); - model.addAttribute("statsPcDayList", statsObject); - } - {//모바일 - JSONObject statsObject = new JSONObject(); - JSONArray cntArray = new JSONArray(); - JSONArray dateArray = new JSONArray(); - for(StatsVO tempStatsVO : statsMobileDayList){ - cntArray.add(tempStatsVO.getCnt()); - dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length()) ); - } - statsObject.put("cnt" , cntArray); - statsObject.put("date" , dateArray); - model.addAttribute("statsMobileDayList", statsObject); - } - {//전체 - JSONObject statsObject = new JSONObject(); - JSONArray cntArray = new JSONArray(); - JSONArray dateArray = new JSONArray(); - for(StatsVO tempStatsVO : statsAllDayList){ - cntArray.add(tempStatsVO.getCnt()); - dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length()) ); - } - statsObject.put("cnt" , cntArray); - statsObject.put("date" , dateArray); - model.addAttribute("statsPcMobileDayList", statsObject); - } - } - }catch(Exception ex){ - ex.printStackTrace(); - } + */ +// {//접속통계 사용자만 +// StatsVO statsVO = new StatsVO(); +// statsVO.setRecordCountPerPage(20); //일카운터(20개) +// statsVO.setFirstIndex(0); +// List statsDayList = conectStatsService.selectMainStatsDay(statsVO); //일일접속카운터(관리자) +// List statsMonthList = conectStatsService.selectMainStatsMonth(statsVO); //월별접속카운터(관리자) +// List statsYearList = conectStatsService.selectMainStatsYear(statsVO); //연도변접속카운터(관리자) +// {//일일통계 /* 연도없애기 */ +// JSONObject statsObject = new JSONObject(); +// JSONArray cntArray = new JSONArray(); +// JSONArray dateArray = new JSONArray(); +// for(StatsVO tempStatsVO : statsDayList){ +// cntArray.add(tempStatsVO.getCnt()); +// dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length())); +// } +// statsObject.put("cnt" , cntArray); +// statsObject.put("date" , dateArray); +// model.addAttribute("statsDayList", statsObject); +// } +// {//월통계 +// JSONObject statsObject = new JSONObject(); +// JSONArray cntArray = new JSONArray(); +// JSONArray dateArray = new JSONArray(); +// for(StatsVO tempStatsVO : statsMonthList){ +// cntArray.add(tempStatsVO.getCnt()); +// dateArray.add(tempStatsVO.getStatsDate()); +// } +// statsObject.put("cnt" , cntArray); +// statsObject.put("date" , dateArray); +// model.addAttribute("statsMonthList", statsObject); +// } +// {//년통계 +// JSONObject statsObject = new JSONObject(); +// JSONArray cntArray = new JSONArray(); +// JSONArray dateArray = new JSONArray(); +// cntArray.add(0); //데이터가 2018 한건만 조회 되어서 2017년도 0 넣어줌 +// dateArray.add("2017"); +// for(StatsVO tempStatsVO : statsYearList){ +// cntArray.add(tempStatsVO.getCnt()); +// dateArray.add(tempStatsVO.getStatsDate()); +// } +// statsObject.put("cnt" , cntArray); +// statsObject.put("date" , dateArray); +// model.addAttribute("statsYearList", statsObject); +// } +// +// //PC, 모바일 접속통계(주간) +// statsVO.setRecordCountPerPage(7); //일카운터(7일 : 일주일) +// statsVO.setFirstIndex(0); +// List statsPcDayList = conectStatsService.selectPcMainStatsDay(statsVO); //일일접속카운터(사용자) +// List statsMobileDayList = conectStatsService.selectMobileMainStatsDay(statsVO); //일일접속카운터(사용자) +// List statsAllDayList = conectStatsService.selectPcMobileMainStatsDay(statsVO); //모바일+PC(사용자) +// {//PC +// JSONObject statsObject = new JSONObject(); +// JSONArray cntArray = new JSONArray(); +// JSONArray dateArray = new JSONArray(); +// for(StatsVO tempStatsVO : statsPcDayList){ +// cntArray.add(tempStatsVO.getCnt()); +// dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length()) ); +// } +// statsObject.put("cnt" , cntArray); +// statsObject.put("date" , dateArray); +// model.addAttribute("statsPcDayList", statsObject); +// } +// {//모바일 +// JSONObject statsObject = new JSONObject(); +// JSONArray cntArray = new JSONArray(); +// JSONArray dateArray = new JSONArray(); +// for(StatsVO tempStatsVO : statsMobileDayList){ +// cntArray.add(tempStatsVO.getCnt()); +// dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length()) ); +// } +// statsObject.put("cnt" , cntArray); +// statsObject.put("date" , dateArray); +// model.addAttribute("statsMobileDayList", statsObject); +// } +// {//전체 +// JSONObject statsObject = new JSONObject(); +// JSONArray cntArray = new JSONArray(); +// JSONArray dateArray = new JSONArray(); +// for(StatsVO tempStatsVO : statsAllDayList){ +// cntArray.add(tempStatsVO.getCnt()); +// dateArray.add(tempStatsVO.getStatsDate().substring(5,tempStatsVO.getStatsDate().length()) ); +// } +// statsObject.put("cnt" , cntArray); +// statsObject.put("date" , dateArray); +// model.addAttribute("statsPcMobileDayList", statsObject); +// } +// } + + +// }catch(Exception ex){ +// ex.printStackTrace(); +// } //조정 목록, 이번달 현황 조회(최근 접수, 진행 사건, 처리현황) @@ -398,7 +459,6 @@ public class EgovMainController { showMemory(); showDisk(); showCPU();*/ - return "main/EgovMainView"; } /** diff --git a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java index cc463c6c..42993183 100644 --- a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java @@ -1,2451 +1,2451 @@ -package kcc.let.uat.uia.web; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.math.BigInteger; -import java.net.URLEncoder; -import java.security.SecureRandom; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.annotation.Resource; -import javax.script.ScriptEngineManager; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.message.BasicNameValuePair; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; -import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; -import org.springframework.security.web.savedrequest.HttpSessionRequestCache; -import org.springframework.security.web.savedrequest.SavedRequest; -import org.springframework.security.web.util.matcher.AntPathRequestMatcher; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.web.context.support.WebApplicationContextUtils; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; - -import com.bandi.oauth.BandiSSOAgent; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import egovframework.rte.fdl.cmmn.trace.LeaveaTrace; -import egovframework.rte.fdl.property.EgovPropertyService; -import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; -import egovframework.rte.psl.dataaccess.util.EgovMap; -import kcc.com.cmm.EgovMessageSource; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.captcha.CaptchaUtil; -import kcc.com.cmm.spring.data.util.ProfileUtil; -import kcc.com.cmm.util.WebUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.cmm.service.SMSOracleService; -import kcc.let.sym.log.clg.service.EgovLoginLogService; -import kcc.let.sym.log.clg.service.LoginLog; -import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO; -import kcc.let.sym.site.service.EgovSiteManagerService; -import kcc.let.sym.site.service.SiteManagerVO; -import kcc.let.uat.uap.service.EgovLoginPolicyService; -import kcc.let.uat.uap.service.LoginPolicyVO; -import kcc.let.uat.uia.service.EgovLoginService; -import kcc.let.uat.uia.service.SsoLoginVO; -import kcc.let.uss.umt.service.EgovMberManageService; -import kcc.let.uss.umt.service.EgovUserManageService; -import kcc.let.uss.umt.service.MberManageConfigVO; -import kcc.let.uss.umt.service.UserDefaultVO; -import kcc.let.uss.umt.service.UserGuestVO; -import kcc.let.uss.umt.service.UserManageVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.let.utl.sim.service.EgovClntInfo; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrService; - -/** - * 일반 로그인, 인증서 로그인을 처리하는 컨트롤러 클래스 - * - * @author 공통서비스 개발팀 박지욱 - * @since 2009.03.06 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자          수정내용
- *  -------    --------    ---------------------------
- *  2009.03.06  박지욱          최초 생성
- *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
- *
- *      
- */ -@Controller -public class EgovLoginController { - -// static String RSA_WEB_KEY = "_RSA_WEB_Key_"; // 개인키 session key -// static String RSA_INSTANCE = "RSA"; // rsa transformation - private static final Logger LOGGER = LoggerFactory.getLogger(EgovLoginController.class); - - /** 네이버 인증 관련 */ - @Value("#{globalSettings['Globals.kcc.naver.clentId']}") - private String itnNaverClientId; - @Value("#{globalSettings['Globals.kcc.naver.clientSecret']}") - private String itnNaverClientSecret; - @Value("#{globalSettings['Globals.kcc.naver.returnUrl']}") - private String itnNaverReturnUrl; - - /** 카카오 인증 관련 */ - @Value("#{globalSettings['Globals.kcc.kakao.restApiKey']}") - private String itnKakaoRestApiKey; - @Value("#{globalSettings['Globals.kcc.kakao.returnUrl']}") - private String itnKakaoReturnUrl; - - /** SSO return URL */ - @Value("#{globalSettings['Globals.sso.returnSiteUrl']}") - private String returnSiteUrlGlobal; - @Value("#{globalSettings['Globals.sso.returnSiteCode']}") - private String returnSiteCodeGlobal; - - /** SSO 회원관련 URL */ - @Value("#{globalSettings['Globals.sso.joinUrl']}") - private String joinUrl_Global; - @Value("#{globalSettings['Globals.sso.modifyUrl']}") - private String modifyUrl_Global; - @Value("#{globalSettings['Globals.sso.idFindUrl']}") - private String idFindUrl_Global; - @Value("#{globalSettings['Globals.sso.pwFindUrl']}") - private String pwFindUrl_Global; - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - /** EgovLoginService */ - @Resource(name = "loginService") - private EgovLoginService loginService; - - /** EgovMessageSource */ - @Resource(name = "egovMessageSource") - EgovMessageSource egovMessageSource; - - /** EgovLoginPolicyService */ - @Resource(name = "egovLoginPolicyService") - EgovLoginPolicyService egovLoginPolicyService; - - /** EgovPropertyService */ - @Resource(name = "propertiesService") - protected EgovPropertyService propertiesService; - - /** TRACE */ - @Resource(name = "leaveaTrace") - LeaveaTrace leaveaTrace; - - @Resource(name = "EgovLoginLogService") - private EgovLoginLogService loginLogService; - - @Resource(name = "egovSiteManagerService") - private EgovSiteManagerService egovSiteManagerService; - - /** userManageService */ - @Resource(name = "userManageService") - private EgovUserManageService userManageService; - - /** mberManageService */ - @Resource(name = "mberManageService") - private EgovMberManageService mberManageService; - - @Resource(name = "SMSOracleService") - private SMSOracleService sMSOracleService; - - //강사 정보 - @Resource(name="vEInstrService") - private VEInstrService vEInstrService; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - /** 구동 환경 */ - @Value("#{property['Globals.prod.islocal']}") - private String environment; - - - /* - *//** - * (관리자)로그인 화면으로 들어간다 - * - * @param vo - 로그인후 이동할 URL이 담긴 LoginVO - * @return 로그인 페이지 - * @exception Exception - *//* - * @RequestMapping(value = "/uat/uia/egovLoginUsr.do") public String - * loginUsrView(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletRequest - * request, HttpServletResponse response, ModelMap model) throws Exception { - * return "uat/uia/EgovLoginUsr"; } - */ - - /** - * (관리자) 로그인 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/EgovLoginUsr.do") - public String adminLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - - System.out.println("==start="); - - if (isAuthenticated) - return "redirect:/cmm/main/mainPage.do"; -// initRsa(request); - - System.out.println("==end="); - - // 로그인 페이지 IP 체크 - List loginPolicyGroupList = new ArrayList(); - LoginPolicyVO loginPolicyVOCheck = new LoginPolicyVO(); - String userIpCheck = EgovClntInfo.getClntIP(request); - LOGGER.debug("userIpCheck: [" + userIpCheck + "]"); - loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyAllIP(loginPolicyVOCheck); - -// boolean ipCheck = false; -// if (loginPolicyGroupList != null) { -// for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) { -//// if(userIpCheck.equals(tempPolicyVO.getIpInfo())){ -// if (userIpCheck.contains(tempPolicyVO.getIpInfo())) { -// ipCheck = true; -// break; -// } -// } -// } - - // 1. Spring Security 사용자권한 처리 -// if (!ipCheck) { -// return "/cmm/error/ipFailure"; -// } - if (!isAuthenticated) { - // model.addAttribute("message", - // egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - return "uat/uia/EgovLoginUsr"; - } - - /** - * (사용자) 로그인 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/login.do") - public String userLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - - // sns 회원가입 key 값 설정 - String naverClientId = itnNaverClientId; - String naverClientSecret = itnNaverClientSecret; - - String kakaoRestApiKey = itnKakaoRestApiKey; - String kakaoReturnUrl = itnKakaoReturnUrl; - - // config 정보 가져오기 - MberManageConfigVO mberConfigVO = new MberManageConfigVO(); - - List mberManageCnfVO = mberManageService.selectMberCnf(mberConfigVO); - - for (int i = 0; i < mberManageCnfVO.size(); i++) { - if (mberManageCnfVO.get(i).getIsSns().equals("Y")) { - if (mberManageCnfVO.get(i).getUseYn().equals("Y")) { - if (mberManageCnfVO.get(i).getConfigId().equals("snsNaver")) { - String redirectURI = URLEncoder.encode(itnNaverReturnUrl, "UTF-8"); - SecureRandom random = new SecureRandom(); - BigInteger state = new BigInteger(130, random); - String naver_url = "https://nid.naver.com/oauth2.0/authorize?response_type=code"; - naver_url += "&client_id=" + itnNaverClientId; - naver_url += "&redirect_url=" + redirectURI; - naver_url += "&state=" + state; - mberManageCnfVO.get(i).setSiteUrl(naver_url); - mberManageCnfVO.get(i).setSiteIcon("/img/login_naver_icon.png"); - - } else if (mberManageCnfVO.get(i).getConfigId().equals("snsKakao")) { - - String kakao_url = "https://kauth.kakao.com/oauth/authorize?response_type=code"; - kakao_url += "&client_id=" + kakaoRestApiKey; - kakao_url += "&redirect_uri=" + kakaoReturnUrl; - mberManageCnfVO.get(i).setSiteUrl(kakao_url); - mberManageCnfVO.get(i).setSiteIcon("/img/login_kakao_icon.png"); - - } else if (mberManageCnfVO.get(i).getConfigId().equals("snsGoogle")) { - - } - } - } - } - model.addAttribute("mberManageCnfVO", mberManageCnfVO); - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); -// initRsa(request); - return "web/login/EgovLoginGnrlUsr"; - } - - /** - * (사용자) SSO 로그인 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoLogin.do") - public String ssoLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - /* - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - */ - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - String test = (String) commandMap.get("test"); - - // 실서버 적용시 바꾸기 - String returnSiteUrl = returnSiteUrlGlobal; - String returnSiteCode = returnSiteCodeGlobal; - String idFindUrl = idFindUrl_Global; - String pwFindUrl = pwFindUrl_Global; - String joinUrl = joinUrl_Global; - - model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); - model.addAttribute("returnSiteCode", returnSiteCode); - model.addAttribute("idFindUrl", idFindUrl); - model.addAttribute("pwFindUrl", pwFindUrl); - model.addAttribute("joinUrl", joinUrl); - - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); - model.addAttribute("environment", environment); - //로컬은 셀렉트박스 로그인 - //개발은 e배움터 개발서버 로그인 - //운영은 e배움터 운영서버 로그인 - if("dev".equals(environment)) { - return "redirect:http://223.255.205.7/user/member/loginForm.do?eduOff=Y"; - } - if("real".equals(environment)) { - return "redirect:https://edu-copyright.or.kr/user/member/loginForm.do?eduOff=Y"; - } -// initRsa(request); - if (test != null && test.equals("test")) { - return "web/kccadr/login/SsoLoginUsr3"; - } else { - return "web/kccadr/login/SsoLoginUsr"; - } - } - - - /** - * 임시사용 - 개발서버에서 select방식 로그인을 유지하기 위한 - * - * @return String - * @exception Exception - */ - - /*231031.개발서버 selectbox 로그인용 임시 - 메소드 삭제*/ - @RequestMapping(value = "/web/user/login/ssoDevLogin.do") - public String ssoDevLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - /* - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - */ - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - String test = (String) commandMap.get("test"); - - // 실서버 적용시 바꾸기 - String returnSiteUrl = returnSiteUrlGlobal; - String returnSiteCode = returnSiteCodeGlobal; - String idFindUrl = idFindUrl_Global; - String pwFindUrl = pwFindUrl_Global; - String joinUrl = joinUrl_Global; - - model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); - model.addAttribute("returnSiteCode", returnSiteCode); - model.addAttribute("idFindUrl", idFindUrl); - model.addAttribute("pwFindUrl", pwFindUrl); - model.addAttribute("joinUrl", joinUrl); - - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); - model.addAttribute("environment", environment); - //로컬은 셀렉트박스 로그인 - //개발은 e배움터 개발서버 로그인 - //운영은 e배움터 운영서버 로그인 -// initRsa(request); - if (test != null && test.equals("test")) { - return "web/kccadr/login/SsoLoginUsr3"; - } else { - return "web/kccadr/login/SsoLoginUsr"; - } - } - - @RequestMapping(value = "/web/user/oraSms/sendSms.do") - public String oraSmsSend() throws Exception { - - //if (ProfileUtil.isProd()) { - LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Start"); - //sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 - //AdjReqMgrVO adjReqMgrVO = new AdjReqMgrVO(); - //sMSOracleService.insertSmsSend(adjReqMgrVO); - //sMSOracleService.insertSmsSendTest(); - LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@End"); - //} -// -// -// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); -// sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 -// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); - - return "redirect:/web/main/mainPage.do"; - } - - @RequestMapping(value = "/web/user/login/ssoLogin3.do") - public String ssoLogin3(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - - // 실서버 적용시 바꾸기 - String returnSiteUrl = returnSiteUrlGlobal; - String returnSiteCode = returnSiteCodeGlobal; - - model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); - model.addAttribute("returnSiteCode", returnSiteCode); - - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); -// initRsa(request); - return "web/kccadr/login/ssoLogin3"; - } - - /** - * (사용자) 통합회원 회원탈퇴, 개인정보수정. - * - * @return String - * @exception Exception - */ - @SuppressWarnings("deprecation") - @RequestMapping(value = "/web/user/login/ssoUsrModify.do") - public String ssoUsrModify(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - // 실서버 적용시 바꾸기 - /*String returnSiteUrl = "http://219.240.88.15:8091/web/user/login/ssoUsrModifyResult.do";*/ - String returnSiteUrl = returnSiteUrlGlobal; - - ssoLoginVO.setReturnSiteUrl(URLEncoder.encode(returnSiteUrl)); - - model.addAttribute("ssoLoginVO", ssoLoginVO); - - return "web/kccadr/login/SsoUserModify"; - } - - /** - * (사용자) 통합회원 회원탈퇴, 개인정보수정. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoUsrModifyResult.do") - public String ssoUsrModifyResult(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - - return "redirect:/"; - } - - /** - * (사용자) 외부 개발자용 세션등록 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoSession.do") - public String ssoSession(HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - model.addAttribute("membSeq", ssoLoginVO.getMembSeq()); - - return "web/kccadr/login/SsoLoginSessionRegist"; - } - - /** - * (사용자) 외부 개발자용 세션등록. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoSessionRegist.do") - public String ssoSessionRegist(@ModelAttribute("ssoLoginVO") SsoLoginVO ssoLoginVO, HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) - throws Exception { - - request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); - - return "redirect:/web/main/mainPage.do"; - } - - /** - * (관리자) 일반(스프링 시큐리티) 로그인을 처리한다(관리자) - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/actionSecurityLogin.do") - public String selectActionSecurityLogin(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) - throws Exception { - - // Locale.setDefault(new Locale("en", "GB")); - Locale.setDefault(new Locale("ko", "Kr")); - - // 로그인 정보 check - if (loginVO.getId() == null || loginVO.getPassword() == null) { // 로그인 최초 화면 로딩 - // RSA 키 생성 -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } - - - loginVO.setId(loginVO.getId()); - loginVO.setPassword(loginVO.getPassword()); - - // 사용자일 경우 로그인 안되게 - if (null == loginService.getUserAuth(loginVO)) { // 아이디 없음. -// initRsa(request); - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } else { - if ("ROLE_USER_MEMBER".equals(loginService.getUserAuth(loginVO).getAuthority())) { // 일반사용자 로그인 -// initRsa(request); - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } else if ("ROLE_USER_MANAGER".equals(loginService.getUserAuth(loginVO).getAuthority())) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - } - - // 1. 로그인 처리 - LoginVO resultVO = loginService.actionLogin(loginVO); - System.out.println("UserWork :: "+resultVO.getUserWork()); - - if (loginService.getUserAuth(resultVO) != null) { - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - } - - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } else { - if (resultVO.getPassMiss() > 5) { - model.addAttribute("message", "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } else { // 초기화 - loginService.updatePassMissReset(loginVO); - } - } - - // 2. 허용IP조회 - - boolean loginPolicyYn = false; - // String userIp = EgovClntInfo.getClntIP(request); - // 방화벽 아이피 조회 - - HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); - String userIp = req.getHeader("X-FORWARDED-FOR"); - if (userIp == null) { - userIp = req.getRemoteAddr(); - } - - System.out.println("--------userIp-------" + userIp + "-----------------"); - - LoginPolicyVO loginPolicyVO = new LoginPolicyVO(); - loginPolicyVO.setIpInfo(userIp); - -// boolean ipCheck = false; - /* boolean ipCheck = true; - List loginPolicyGroupList = new ArrayList(); - loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyAll(loginPolicyVO); - if (loginPolicyGroupList != null) { - for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) { - if (userIp.contains(tempPolicyVO.getIpInfo().trim())) { - ipCheck = true; - break; - } - } - } - - if (!ipCheck) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - }*/ - - // resultVO.siteId 의 각 로그인 ip를 조회함 - // if (resultVO != null && resultVO.getId() != null && - // !resultVO.getId().equals("") && loginPolicyYn) { - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - // 2. spring security 연동 - - request.getSession().setAttribute("LoginVO", resultVO); - System.out.println("===============!=============="); - 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"); - } - - System.out.println("==18=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==18=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - loginLog.setSiteId(user.getSiteId()); - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("adminId", user.getId()); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - } - } - - /* - * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); - * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); - * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("A"); - * loginLog.setDeviceType("P"); loginLog.setProgrmFileNm("adminLogin"); - * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); - */ - } - - System.out.println("forward:/uat/uia/actionMain.do"); - - return "forward:/uat/uia/actionMain.do"; // 성공 시 페이지.. (redirect 불가) - // 개인키 삭제 - // session.removeAttribute(EgovLoginController.RSA_WEB_KEY); - // return "blank"; // 성공 시 페이지.. (redirect 불가) - - } else { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } - } - - /** - * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO ID/PW를 통한 로그인 처리) - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/actionSecurityLogin.do") - public String selectActionSecurityLoginWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, - RedirectAttributes redirectAttributes) throws Exception { - - ScriptEngineManager engine = new ScriptEngineManager(); - - // 로그인 정보 check - if (loginVO.getId() == null || loginVO.getPassword() == null) { - SsoLoginVO SsoLoginSessionChk = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - // SSOLoginVO 세션 체크 - if (SsoLoginSessionChk != null) { - - loginVO.setId(SsoLoginSessionChk.getMembId()); - loginVO.setPassword("1"); - } else { - model.addAttribute("message", "로그인을 다시 해주세요."); - // 로그인 페이지로 이동 - /*return "/web/kccadr/login/SsoLoginUsr";*/ - return "redirect:/web/user/login/ssoLogin.do"; - } - } - - SsoLoginVO ssologinVO = new SsoLoginVO(); - - /*231031.개발서버 selectbox 로그인용 임시 - isDev 삭제 처리*/ - if ((ProfileUtil.isLocal() || ProfileUtil.isTLocal() || ProfileUtil.isDev()) && "Y".equals(loginVO.getIsSelect())) { //비 sso login - - loginVO.setPassword("1"); - loginVO.setStatusAll("N"); - ssologinVO.setMembSeq(loginVO.getId()); //중요 - //loginVO = loginService.actionLogin(loginVO); - - //기존에 개발자 로그인은 selectbox와 mber_seq로 로그인 처리. - //e배움터 연동 후 mber_seq는 key로 사용하기 때문에 mber_id로 로그인 처리 과정 - //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 - loginVO = loginService.actionLoginMberId(loginVO); - - - //ssologinVO.setMembSeq(loginVO.getId()); //중요 - - //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 - - //ssologinVO.setMembSeq(loginVO.getId()); //중요 - - ssologinVO.setMembId(loginVO.getEmail()); - - // ================== 이름 암호화로 나오는 문제 해결 ==================== - ssologinVO.setMembName(egovCryptoUtil.decrypt(loginVO.getName())); - - System.out.println("==================임시=================="); - // ==== 계속 암호화에 암호화가 되서 임시로 넣음 - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - - - ssologinVO.setSexCode("M"); - ssologinVO.setMembEmail(loginVO.getEmail()); - ssologinVO.setMembCelnum(loginVO.getMembCelnum()); - ssologinVO.setMembBirth(loginVO.getMembBirth()); - - /* - * ssologinVO.setMembSmsRecpYn(loginVO.getMembSmsRecpYn()); - * ssologinVO.setMembEmailRecpYn(loginVO.getMembEmailRecpYn()); - * - * ssologinVO.setDispsettMembDivisCode(loginVO.getDispsettMembDivisCode()); - * ssologinVO.setCorpnum(loginVO.getCorpnum()); - * ssologinVO.setBuisnRegnum(loginVO.getBuisnRegnum()); - * ssologinVO.setCompTitle(loginVO.getCompTitle()); - */ - - session.setAttribute("SSOLoginVO", ssologinVO); - - } else { //sso login - - ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - String SsoLoginResult = ""; -/* if (ssologinVO == null) { - SSO로그인 및 SSOLoginVO 세선 생성 - SsoLogin ssoLogin = new SsoLogin(); - SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), loginVO.getPassword(), request); - } - if ("fail".equals(SsoLoginResult)) { - redirectAttributes.addAttribute("message", "아이디 비밀번호를 확인해 주세요."); - redirectAttributes.addFlashAttribute("message", "아이디 비밀번호를 확인해 주세요."); - return "redirect:/web/user/login/ssoLogin.do"; - }*/ - } - -// ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - /*if ("".equals(ssologinVO.getDispsettMembDivisCode())) { - 신청 관련코드 받아오면 처리 - System.out.println("조정분류코드 없음"); - - }*/ - - // 기존에 있던 회원이 아니면 DB에 일련번호 저장 - /* UserManageVO userManageVO = new UserManageVO(); - userManageVO.setMberSeq(ssologinVO.getMembSeq()); - userManageVO = userManageService.selectKccadrUser(userManageVO); - if (null == userManageVO) { - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - String result = userManageService.insertUser(tmpUserManageVO); - - userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); - }else { //기존에 있던 회원이라면 이름 최신화 - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - userManageService.updateUserNm(tmpUserManageVO); - }*/ - - /*loginVO.setId(userManageVO.getEmplyrId()); - loginVO.setPassword(userManageVO.getPassword()); -*/ - /* - * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 - * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert - */ - - loginVO.setUserSe("GNR"); - // 로그인 정보 check - - /* - * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 - * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO - * == null) { // RSA 키 생성 initRsa(request); return - * "redirect:/web/user/login/login.do"; } else { - * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); - * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); - * loginVO.setMessage(pLoginVO.getMessage()); } } - */ - - // 관리자 유무 체크 - List authorities = (List) loginService.selectAuthorities(loginVO); - Boolean adminFlag = false; - for (EgovMap authority : authorities) { - // admin_auth_code 최하위 관리자 Roll 코드 - if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) - adminFlag = true; - } - - // 관리자 시 로그인 막기 - if (adminFlag) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - // RSA 키 생성 -// initRsa(request); - return "web/site/login/EgovLoginGnrlUsr"; - } - - // 1. 일반 로그인 처리 - LoginVO resultVO; - // 복호화 - - loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 - /* loginVO.setUserSe("GNR"); */ - resultVO = loginService.actionLogin(loginVO); - // 로그인 시 권한조회 - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - - System.out.println("==1=="); - - String alertMessage = ""; - if (!"admin".equals(loginVO.getId())) { - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - alertMessage = egovMessageSource.getMessage("fail.common.login"); - // 로그인 실패이면 메인페이지로 이동 - return goUserLoginPage(redirectAttributes, request, model, alertMessage); - } /* - * else{ if(resultVO.getPassMiss() > 5) { alertMessage = - * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return - * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else - * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); }else - * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } - */ - } - - boolean loginPolicyYn = true; - System.out.println("==12=="); - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - - // resultVO.siteId 의 각 로그인 ip를 조회함 - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - System.out.println("==13=="); - // LoginVO세션에 사용자 정보 넣기 - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembId(ssologinVO.getMembId()); - resultVO.setMembName(ssologinVO.getMembName()); - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembCi(ssologinVO.getMembCi()); - resultVO.setMembEmail(ssologinVO.getMembEmail()); - resultVO.setMembCelnum(ssologinVO.getMembCelnum()); - resultVO.setMembBirth(ssologinVO.getMembBirth()); - resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); - resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); - resultVO.setSexCode(ssologinVO.getSexCode()); - resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); - resultVO.setCorpnum(ssologinVO.getCorpnum()); - resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); - resultVO.setCompTitle(ssologinVO.getCompTitle()); - - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 - System.out.println("@@@@로그인VO:"+resultVO+"@@@@@@"); - 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"); - } - System.out.println("==14=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==14=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - - // 최근검색어 조회 후 세션에 넣어줌 - /* - * UserManageVO tempUserManageVO = new UserManageVO(); - * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = - * userManageService.selectRecentSearchWord(tempUserManageVO); - * - * List lisRecentSearch = new ArrayList(); if(null != - * tempUserManageVO){ //ArrayList 로 세션 저장 - * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," - * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; - */ - } - } - - loginLog.setLoginId(uniqId); - loginLog.setLoginIp(ip); - loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O - loginLog.setErrOccrrAt("N"); - loginLog.setErrorCode(""); - // 로그인은 관리자, PC만 됨 - loginLog.setUserAt("U"); // 사용자 - loginLog.setDeviceType("P"); // PC - loginLog.setProgrmFileNm("adminLogin"); - loginLog.setMenuNm("관리자로그인"); - loginLogService.logInsertLoginLog(loginLog); - System.out.println("==15=0="); - } - -// session.setAttribute("beforeSiteUrl", request.getRequestURI()); - System.out.println("session.getAttributesession.getAttributesession.getAttributesession.getAttribute"); - loginVO.setBeforeUrl((String) request.getSession().getAttribute("beforeSiteUrl")); - // 로그인 전 URL 호출 시 - if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { - request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); - // 회원가입 시 메세지 처리 - if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { - request.getSession().setAttribute("registMessage", loginVO.getMessage()); - } - } - System.out.println("==16=0="); - // 개인키 삭제 - // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. - request.getSession().setAttribute("pageType", "web"); - return "blank"; // 성공 시 페이지.. (redirect 불가) - } else { - String message = egovMessageSource.getMessage("fail.common.login"); - redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); - redirectAttributes.addAttribute("message", message); - return "redirect:/web/user/login/login.do"; - } - } - - /** - * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO Token를 통한 로그인 처리) 통합회원 SSO 로그인 후 찾교시스템 배너 - * 클릭으로 로그인 - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - /* @RequestMapping(value = "/web/user/login/actionSecurityLoginToken.do") */ - @RequestMapping(value = "/kccadr/ssoLogin.do") - public String selectActionSecurityLoginTokenWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, - RedirectAttributes redirectAttributes) throws Exception { - - ScriptEngineManager engine = new ScriptEngineManager(); - - SsoLoginVO ssologinVO = new SsoLoginVO(); - ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - String SsoLoginResult = ""; - if( - request.getParameter("accessToken") == null - || request.getParameter("refreshToken") == null) { - System.out.println("토큰값 없음."); - return "redirect:/"; - } - - if (ssologinVO == null) { - /* SSO로그인 및 SSOLoginVO 세선 생성 */ - SsoLoginVO tmpssologinVO = new SsoLoginVO(); - - tmpssologinVO.setAccess_token(request.getParameter("accessToken")); - tmpssologinVO.setRefresh_token(request.getParameter("refreshToken")); - - SsoLoginResult = SsoTokenLogin.SsoTokenLogin(tmpssologinVO.getAccess_token(), tmpssologinVO.getRefresh_token(), request); - } - if ("fail".equals(SsoLoginResult)) { - model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); - return "redirect:/web/user/login/ssoLogin.do"; - } - - ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - if ("".equals(ssologinVO.getDispsettMembDivisCode())) { - /* 신청 관련코드 받아오면 처리 */ - } - - // 기존에 있던 회원이 아니면 DB에 일련번호 저장 - UserManageVO userManageVO = new UserManageVO(); - userManageVO.setMberSeq(ssologinVO.getMembSeq()); - userManageVO = userManageService.selectKccadrUser(userManageVO); - if (null == userManageVO) { - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - String result = userManageService.insertUser(tmpUserManageVO); - - userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); - }else { //기존에 있던 회원이라면 이름 최신화 - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - userManageService.updateUserNm(tmpUserManageVO); - } - - loginVO.setId(userManageVO.getEmplyrId()); - loginVO.setPassword(userManageVO.getPassword()); - - /* - * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 - * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert - */ - - loginVO.setUserSe("GNR"); - // 로그인 정보 check - - /* - * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 - * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO - * == null) { // RSA 키 생성 initRsa(request); return - * "redirect:/web/user/login/login.do"; } else { - * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); - * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); - * loginVO.setMessage(pLoginVO.getMessage()); } } - */ - - // 관리자 유무 체크 - List authorities = (List) loginService.selectAuthorities(loginVO); - Boolean adminFlag = false; - for (EgovMap authority : authorities) { - // admin_auth_code 최하위 관리자 Roll 코드 - if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) - adminFlag = true; - } - - // 관리자 시 로그인 막기 - if (adminFlag) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - // RSA 키 생성 -// initRsa(request); - return "web/site/login/EgovLoginGnrlUsr"; - } - - // 1. 일반 로그인 처리 - LoginVO resultVO; - loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 - resultVO = loginService.actionLogin(loginVO); - // 로그인 시 권한조회 - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - - String alertMessage = ""; - if (!"admin".equals(loginVO.getId())) { - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - alertMessage = egovMessageSource.getMessage("fail.common.login"); - // 로그인 실패이면 메인페이지로 이동 - return goUserLoginPage(redirectAttributes, request, model, alertMessage); - } /* - * else{ if(resultVO.getPassMiss() > 5) { alertMessage = - * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return - * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else - * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); }else - * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } - */ - } - - boolean loginPolicyYn = true; - - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - - // resultVO.siteId 의 각 로그인 ip를 조회함 - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - - // LoginVO세션에 사용자 정보 넣기 - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembId(ssologinVO.getMembId()); - resultVO.setMembName(ssologinVO.getMembName()); - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembCi(ssologinVO.getMembCi()); - resultVO.setMembEmail(ssologinVO.getMembEmail()); - resultVO.setMembCelnum(ssologinVO.getMembCelnum()); - resultVO.setMembBirth(ssologinVO.getMembBirth()); - resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); - resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); - resultVO.setSexCode(ssologinVO.getSexCode()); - resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); - resultVO.setCorpnum(ssologinVO.getCorpnum()); - resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); - resultVO.setCompTitle(ssologinVO.getCompTitle()); - - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", 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"); - } - - System.out.println("==15=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==15=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - - // 최근검색어 조회 후 세션에 넣어줌 - /* - * UserManageVO tempUserManageVO = new UserManageVO(); - * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = - * userManageService.selectRecentSearchWord(tempUserManageVO); - * - * List lisRecentSearch = new ArrayList(); if(null != - * tempUserManageVO){ //ArrayList 로 세션 저장 - * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," - * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; - */ - } - } - - loginLog.setLoginId(uniqId); - loginLog.setLoginIp(ip); - loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O - loginLog.setErrOccrrAt("N"); - loginLog.setErrorCode(""); - // 로그인은 관리자, PC만 됨 - loginLog.setUserAt("U"); // 사용자 - loginLog.setDeviceType("P"); // PC - loginLog.setProgrmFileNm("adminLogin"); - loginLog.setMenuNm("관리자로그인"); - loginLogService.logInsertLoginLog(loginLog); - } - - // 로그인 전 URL 호출 시 - if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { - request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); - // 회원가입 시 메세지 처리 - if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { - request.getSession().setAttribute("registMessage", loginVO.getMessage()); - } - } - // 개인키 삭제 - // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. - request.getSession().setAttribute("pageType", "web"); - return "blank"; // 성공 시 페이지.. (redirect 불가) - } else { - String message = egovMessageSource.getMessage("fail.common.login"); - redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); - redirectAttributes.addAttribute("message", message); - return "redirect:/web/user/login/login.do"; - } - } - - /** - * (사용자) 외부 개발자용 로그인 처리 일반(스프링 시큐리티) 로그인을 처리한다 - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/actionSecurityLogin2.do") - public String selectActionSecurityLoginWeb2(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, - RedirectAttributes redirectAttributes) throws Exception { - - ScriptEngineManager engine = new ScriptEngineManager(); - - /* - * //로그인 정보 check if(loginVO.getId() == null || loginVO.getPassword() == null){ - * SsoLoginVO SsoLoginSessionChk = - * (SsoLoginVO)session.getAttribute("SSOLoginVO"); //SSOLoginVO 세션 체크 - * if(SsoLoginSessionChk != null) { - * - * loginVO.setId(SsoLoginSessionChk.getMembId()); loginVO.setPassword("1"); - * }else { model.addAttribute("message", "로그인을 다시 해주세요."); //로그인 페이지로 이동 return - * "/web/kccadr/login/SsoLoginUsr"; } } - * - * SsoLoginVO ssologinVO = new SsoLoginVO(); ssologinVO = - * (SsoLoginVO)session.getAttribute("SSOLoginVO"); String SsoLoginResult = ""; - * if(ssologinVO == null) { SSO로그인 및 SSOLoginVO 세선 생성 SsoLogin ssoLogin = new - * SsoLogin(); SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), - * loginVO.getPassword(), request); } if("fail".equals(SsoLoginResult)) { - * model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); return - * "/web/user/login/ssoLogin.do"; } - * - * ssologinVO = (SsoLoginVO)session.getAttribute("SSOLoginVO"); - * - * if("".equals(ssologinVO.getDispsettMembDivisCode())) { 신청 관련코드 받아오면 처리 } - */ - - // 기존에 있던 회원이 아니면 DB에 일련번호 저장 - UserManageVO userManageVO = new UserManageVO(); - userManageVO.setMberSeq(loginVO.getMembSeq()); - userManageVO = userManageService.selectKccadrUser(userManageVO); - SsoLoginVO ssoLoginVO = new SsoLoginVO(); - ssoLoginVO.setOtherUser("Y"); - ssoLoginVO.setMembSeq(userManageVO.getMberSeq()); - request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); - - loginVO.setId(userManageVO.getEmplyrId()); - loginVO.setPassword(userManageVO.getPassword()); - - /* - * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 - * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert - */ - - loginVO.setUserSe("GNR"); - // 로그인 정보 check - - /* - * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 - * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO - * == null) { // RSA 키 생성 initRsa(request); return - * "redirect:/web/user/login/login.do"; } else { - * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); - * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); - * loginVO.setMessage(pLoginVO.getMessage()); } } - */ - - // 관리자 유무 체크 - List authorities = (List) loginService.selectAuthorities(loginVO); - Boolean adminFlag = false; - for (EgovMap authority : authorities) { - // admin_auth_code 최하위 관리자 Roll 코드 - if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) - adminFlag = true; - } - - // 관리자 시 로그인 막기 - if (adminFlag) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - // RSA 키 생성 -// initRsa(request); - return "web/site/login/EgovLoginGnrlUsr"; - } - - // 1. 일반 로그인 처리 - LoginVO resultVO; - String password = loginVO.getPassword(); - loginVO.setId(loginVO.getId()); - loginVO.setPassword(password); - - loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 - /* loginVO.setUserSe("GNR"); */ - resultVO = loginService.actionLogin(loginVO); - // 로그인 시 권한조회 - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - - String alertMessage = ""; - if (!"admin".equals(loginVO.getId())) { - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - alertMessage = egovMessageSource.getMessage("fail.common.login"); - // 로그인 실패이면 메인페이지로 이동 - return goUserLoginPage(redirectAttributes, request, model, alertMessage); - } /* - * else{ if(resultVO.getPassMiss() > 5) { alertMessage = - * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return - * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else - * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); }else - * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } - */ - } - - boolean loginPolicyYn = true; - - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - - // resultVO.siteId 의 각 로그인 ip를 조회함 - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", 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"); - } - - System.out.println("==16=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==16=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - - // 최근검색어 조회 후 세션에 넣어줌 - /* - * UserManageVO tempUserManageVO = new UserManageVO(); - * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = - * userManageService.selectRecentSearchWord(tempUserManageVO); - * - * List lisRecentSearch = new ArrayList(); if(null != - * tempUserManageVO){ //ArrayList 로 세션 저장 - * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," - * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; - */ - } - } - - loginLog.setLoginId(uniqId); - loginLog.setLoginIp(ip); - loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O - loginLog.setErrOccrrAt("N"); - loginLog.setErrorCode(""); - // 로그인은 관리자, PC만 됨 - loginLog.setUserAt("U"); // 사용자 - loginLog.setDeviceType("P"); // PC - loginLog.setProgrmFileNm("adminLogin"); - loginLog.setMenuNm("관리자로그인"); - loginLogService.logInsertLoginLog(loginLog); - } - - // 로그인 전 URL 호출 시 - if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { - request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); - // 회원가입 시 메세지 처리 - if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { - request.getSession().setAttribute("registMessage", loginVO.getMessage()); - } - } - // 개인키 삭제 - // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. - request.getSession().setAttribute("pageType", "web"); - - return "blank"; // 성공 시 페이지.. (redirect 불가) - } else { - String message = egovMessageSource.getMessage("fail.common.login"); - redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); - redirectAttributes.addAttribute("message", message); - return "redirect:/web/user/login/login.do"; - } - } - - /** - * 로그인 후 메인화면으로 들어간다 - * - * @param - * @return 로그인 페이지 - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/actionMain.do") - public String actionMain(HttpServletResponse response, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes, HttpSession session) throws Exception { - /* - * 1.로그인 성공시 메소드 호출(사용자/관리자 모두) 2.권한없는 페이지 호출시 메소드 호출됨 3.사용자 화면에서 권한 없어도 무조건 - * 이쪽으로 redirect됨(여기서 분기처리요망) - */ - // initial target url. 첫 호출 URL - - System.out.println("===========actionMain==========="); - - SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); // 사용자 최종 클릭 화면 - - //System.out.println(savedRequest.getRedirectUrl()); - - if (savedRequest != null) { // 권한업는 페이지 호출시 호출한 페이지 분기를 위해 - if (savedRequest.getRedirectUrl().contains("web")) { // 사용자페이지에서 옴 - session.setAttribute("pageType", "web"); - } else { - session.setAttribute("pageType", "admin"); - } - - System.out.println("===========actionMain===========0"); - System.out.println(savedRequest.getRedirectUrl()); - }else { - //session.setAttribute("pageType", "web"); - } - - - - // 1. Spring Security 사용자권한 처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - - System.out.println("===========isAuthenticated===========0"); - System.out.println(isAuthenticated); - - if (!isAuthenticated) { // 로그인이 안되었을경우 - if (session.getAttribute("pageType") != null) { // 사용자 로그인 추가 - if ("web".equals((String) session.getAttribute("pageType"))) { - // pageType(Web은 사용자 이외는 관리자) - if (savedRequest != null) { - session.setAttribute("beforeUrl", savedRequest.getRedirectUrl()); - /* return "redirect:/web/user/login/login.do"; */ - redirectAttributes.addFlashAttribute("message", "로그인 후 이용해 주세요."); - return "redirect:/web/user/login/ssoLogin.do"; - } - } else { - return "redirect:/uat/uia/EgovLoginUsr.do"; - } - } - return "forward:/uat/uia/EgovLoginUsr.do"; // 로그아웃 경우(사용자는 uat/uia/actionMain.do 사용안함) - } - - // 외부 개발자 판단 여부 - SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - if (ssoLoginVO != null && "Y".equals(ssoLoginVO.getOtherUser())) { - return "redirect:/web/user/login/ssoSession.do"; - } - - System.out.println("===========actionMain===========1"); - System.out.println(session.getAttribute("pageType")); - - - if (session.getAttribute("pageType") != null) { - if ("web".equals((String) session.getAttribute("pageType"))) { // 사용자 - LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - // 강사 로그인 시 - // 청소년 강사 && 성인 강사 -> 청소년저작권강사 대시보드 - // 성인 강사 -> 성인저작권강사 대시보드 - // 로 redirect - if("ROLE_USER_MANAGER".equals(loginVO.getAuthority())) { - VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO(); - - vEInstrDetailVO.setUserId(loginVO.getUniqId()); - vEInstrDetailVO = vEInstrService.selectDetail(vEInstrDetailVO); - - session.setAttribute("pageType", null); - - if("Y".equals(vEInstrDetailVO.getTngrInstrYn())) { - - //청소년 강사 대시보드 - return "redirect:/web/ve/instr/tngrVisitEdu/instrInfo/instrDashboard.do"; - }else if ("Y".equals(vEInstrDetailVO.getAdultInstrYn())) { - //성인 강사 대시보드 - return "redirect:/web/ve/instr/adultVisitEdu/instrInfo/instrDashboard.do"; - } - } - - if (session.getAttribute("beforeSiteUrl") != null) { // 사용자 메인 - String tempSessionUrl = (String) session.getAttribute("beforeSiteUrl"); -// tempSessionUrl = tempSessionUrl.replace("/offedu", ""); - session.setAttribute("pageType", null); - session.setAttribute("beforeSiteUrl", null); - - if("".equals(tempSessionUrl)) { - return "redirect:/"; - } - - return "redirect:" + tempSessionUrl; - /*return "redirect:/";*/ - } else { - /*System.out.println(savedRequest.getRedirectUrl());*/ - session.setAttribute("pageType", null); - return "redirect:/web/main/mainPage.do"; - } - } - } - - // e-배움터 연동 로그인 시 - LoginVO 세션의 return url로 이동 - try { - LoginVO eEduLoginVO = (LoginVO) session.getAttribute("LoginVO"); - if(eEduLoginVO != null) { - if(eEduLoginVO.getUrl() != null) { - return "redirect:" + eEduLoginVO.getUrl(); - } - } - }catch(Exception ex) { - ex.printStackTrace(); - } - - - // 관리자 로그인 시 - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - - - System.out.println("===========actionMain===========2"); - System.out.println(loginService.getUserAuth(user).getAuthority()); - System.out.println(user.getAuthority()); - - if ("ROLE_ADMIN".equals(loginService.getUserAuth(user).getAuthority())) { // 수퍼관리자 경우 - //return "redirect:/cmm/main/mainPage.do"; - return "redirect:/kccadr/oprtn/tngrVisitEdu/areaLctrMngList.do"; - } else if ("ROLE_USER_MANAGER".equals(user.getAuthority())) { - return "redirect:/web/main/mainPage.do"; - } else if ("ROLE_VISIT".equals(user.getAuthority())) { - return "redirect:/cmm/main/mainPage.do"; - } else if ("ROLE_ADR_JRSDC".equals(user.getAuthority())) { - return "redirect:/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do"; - } else if ("ROLE_USER_MEMBER".equals(user.getAuthority())) { - System.out.println("비정상적인 사용자 redirect 임"); - return "redirect:/web/main/mainPage.do"; - } else { // 일반관리자 경우 - return "redirect:/EgovTopPageLink.do?link=/cop/bbs/SelectBBSMasterInfs.do&baseMenuNo=4300000"; - } - } - - /** - * (관리자)로그아웃한다. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/actionLogout.do") - public String selectActionLogout(HttpServletRequest request, ModelMap model, HttpServletResponse response) throws Exception { - request.getSession().invalidate(); - return "redirect:/uat/uia/EgovLoginUsr.do"; - } - - /** - * (사용자)로그아웃한다. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/uat/uia/actionLogout.do") - public String selectActionLogoutWeb(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - - SsoAgentInfo ssoagentinfo = new SsoAgentInfo(); - - String client_ip = "127.0.0.1"; - - if (!ProfileUtil.isLocal()) { - // SsoLoginVO 세션 정보 취득 - SsoLoginVO ssoLoginVO = new SsoLoginVO(); - HttpSession session = request.getSession(); - /*ssologin에서 e배움터 API 로그인으로 변경*/ - /*ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - if (ssoLoginVO != null) { - if (!"USRCNFRM_00000002940".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002941".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002942".equals(ssoLoginVO.getMembId()) - || !"USRCNFRM_00000002943".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002944".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002550".equals(ssoLoginVO.getMembId()) - || !"USRCNFRM_00000002542".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002541".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002540".equals(ssoLoginVO.getMembId()) - || !"USRCNFRM_00000002533".equals(ssoLoginVO.getMembId())) { - BandiSSOAgent agent = new BandiSSOAgent(ssoUri, clientId, clientSecret, scope); - BandiSSOAgent agent = new BandiSSOAgent(ssoagentinfo.getSsoUri(), ssoagentinfo.getClientId(), ssoagentinfo.getClientSecret(), ssoagentinfo.getScope()); - - // sso 로그아웃 - agent.logout(ssoLoginVO.getAccess_token(), client_ip); - } - }*/ - } - - // Spring Security 로그아웃 - Authentication auth = SecurityContextHolder.getContext().getAuthentication(); - if (auth != null) { - new SecurityContextLogoutHandler().logout(request, response, auth); - } - - // 세션 제거 - request.getSession().invalidate(); - - return "redirect:/web/main/mainPage.do"; - } - - /* 캡차 테스트 */ - @RequestMapping(value = "/captcha/captchaTest.do") - public String captchaTest(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model) throws Exception { - return "cmm/chptcha/captchaTest"; - } - - /* 캡차 이미지 */ - @RequestMapping(value = "/captcha/captchaImg.do") - public String captchaImg1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - - return "cmm/chptcha/captchaImg"; - } - - /* 캡차 오디오 */ - @RequestMapping(value = "/captcha/captchaAudio.do") - public String captchaAudio1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - return "cmm/chptcha/captchaAudio"; - } - - /* 캡차 submit */ - @RequestMapping(value = "/captcha/captchaSubmit.do") - public ModelAndView captchaSubmit(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - String answer = (String) commandMap.get("answer"); - String captcha = (String) request.getSession().getAttribute("captcha"); - String message = "캡차 입력값이 일치하지 않습니다."; - if (answer != null && !"".equals(answer)) { - if (answer.equals(captcha)) { - message = "캡차 입력값이 일치합니다."; - } - } - modelAndView.addObject("message", message); - return modelAndView; - } - - /* 캡차 이미지 */ - @RequestMapping(value = "captchaImg.do") - public void cpatchaImg(HttpServletRequest request, HttpServletResponse response) throws Exception { - new CaptchaUtil().captchaImg(request, response); - } - - @RequestMapping(value = "captchaAudio.do") - public void cpatchaAudio(HttpServletRequest request, HttpServletResponse response) throws Exception { - new CaptchaUtil().captchaAudio(request, response); - } - - /** - * 로그인 후 메인화면으로 들어간다 - * - * @param - * @return 로그인 페이지 - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/actionLoign.do") - public String siteActionMain(@PathVariable("siteId") String siteId, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) throws Exception { - - // initial target url. 첫 호출 URL - SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); - String initialTargetUrl = ""; - if (savedRequest != null) { - initialTargetUrl = savedRequest.getRedirectUrl(); - } - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - - // 1. Spring Security 사용자권한 처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) { - // model.addAttribute("message", - // egovMessageSource.getMessage("fail.common.login")); - - if ("linc".equals(siteId) || "klc".equals(siteId)) { - return "web/" + siteFolder + "/main/MemberLogin"; - } else { - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setSiteId(siteId); - setSiteinfo(siteManagerVO, model, request); - // return - // "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/main/MemberLogin"; - return "web/site/" + siteId + "/" + siteManagerVO.getIsMobile() + "/main/MemberLogin"; - } - } - - LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - if (null != loginVO && !"super".equals(loginVO.getSiteId())) { // 리스트, 수정, 입력 - if (siteId.equals(loginVO.getSiteId())) { // 사이트 아이디가 다르면 - session.setAttribute("pageType", "web"); - return "web/" + siteFolder + "/main/MemberLogin"; - } - } - - // 2. 메인 페이지 이동 - return "forward:/" + siteId + "/web/main/mainPage.do"; - } - - /** - * 일반사용자 (스프링 시큐리티) 로그인을 처리한다 - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/actionSecurityLogin.do") - public String selectActionSiteSecurityLogin(@PathVariable("siteId") String siteId, @ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, - ModelMap model) throws Exception { - // 로그인 정보 check - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - if (loginVO.getId() == null || loginVO.getPassword() == null) { - return "web/" + siteFolder + "/main/MemberLogin"; - } - - // 1. 일반 로그인 처리(사이트) - LoginVO resultVO = loginService.siteActionLogin(loginVO); - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", resultVO); - request.getSession().setAttribute("pageType", "web"); - 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"); - } - - System.out.println("==17=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==17=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - return "blank"; // action.do 에서 일반사용자 분기처리 - } else { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "web/" + siteFolder + "/main/MemberLogin"; - } - } - - /** - * (사용자) 아이디 찾기. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/findUserId.do") - public String findUserId(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - return "web/site/kcc/login/findUserId"; - } - - /** - * (사용자) 비밀번호 찾기. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/findPassword.do") - public String findPassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - return "web/site/kcc/login/findPassword"; - } - - /** - * (사용자) 아이디 비밀번호 안내. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/findView.do") - public String findView(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/cmm/main/mainPage.do"; - - return "web/site/kcc/login/findView"; - } - - /** - * (사용자) 비밀번호 변경 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/changePassword.do") - public String changePassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/cmm/main/mainPage.do"; - - return "web/site/kcc/login/changePassword"; - } - - @RequestMapping(value = "/{siteId}/web/user/join/snsLink.do") - public String snsLink(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) { - String siteId = (String) session.getAttribute("siteId"); - model.addAttribute("loginVO", loginVO); - return "web/site/" + siteId + "/login/snsLinkPage"; - } - - @RequestMapping(value = "/{siteId}/web/user/join/snsLinkUpdate.do") - public String snsLinkUpdate(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) throws Exception { - String siteId = (String) session.getAttribute("siteId"); - String siteFolder = "site/" + siteId; - - loginService.updateSnsLink(loginVO); - - return "web/" + siteFolder + "/login/usrJoinComplete"; - } - - // (사용자) 회원가입 동의 화면 - @RequestMapping(value = "/{siteId}/web/user/join/usrJoinIntro.do") - public String usrJoinIntro(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("loginVO") LoginVO loginVO, - ModelMap model) throws Exception { - - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - model.addAttribute("site_path", "/" + siteFolder); - - MberManageConfigVO mberConfigVO = new MberManageConfigVO(); // 회원가입 환경설정 - mberConfigVO.setUseYn("Y"); // 사용하는것만 - mberConfigVO.setIsSns("N"); - mberConfigVO.setSiteId(siteId); - List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); - model.addAttribute("mberManageCnfList", mberManageCnfList); - model.addAttribute("loginVO", loginVO); - - // 약관가져오기 - SiteManagerVO termsVO = new SiteManagerVO(); - termsVO.setSiteId(siteId); - termsVO = egovSiteManagerService.selectSiteManagerVO(termsVO); - if (null != termsVO) { - if (!"N".equals(termsVO.getTermsYn())) { - model.addAttribute("termsVO", termsVO); - } - } - return "web/" + siteFolder + "/login/usrJoinIntro"; - - } - - // (사용자) 회원가입 화면 - @RequestMapping(value = "/{siteId}/web/user/join/usrJoinRegist.do") - public String usrJoinView(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, - @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - model.addAttribute("site_path", "/" + siteFolder); - return "web/" + siteFolder + "/login/usrJoinRegist"; - } - - /** - * (사용자) 회원가입 처리 - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/join/usrJoinInsert.do") - public String usrJoinInsert(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserGuestVO userManageVO, HttpServletRequest request, HttpServletResponse response, - ModelMap model, @RequestParam Map commandMap, RedirectAttributes redirectAttributes) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - model.addAttribute("site_path", "/" + siteFolder); - -// UserVO userVO = (UserVO) request.getSession().getAttribute("selfauthUserVO"); -// // 본인인증 정보가 없거나, 인증정보와 번호가 다를때 -// if (userVO == null || !userManageVO.getMoblphonNo().equals(userVO.getMblNum())) { -// model.addAttribute("message", "비 정상적인 접근입니다. 본인인증을 해주세요."); -// return "web/login/usrJoinRegist"; -// } -// request.getSession().setAttribute("selfauthUserVO", null); - - // 본인인증 데이터 -// userManageVO.setEmplyrNm(userVO.getName()); -// userManageVO.setBrth(userVO.getBirYMD()); -// userManageVO.setMblDn(userVO.getMblDn()); -// userManageVO.setMoblphonNo(userVO.getMblNum()); - - // 기 가입된 휴대폰번호인지 확인 -// LoginVO vo = new LoginVO(); -// vo.setMblDn(userVO.getMblDn()); -// vo = loginService.searchIdByMblDn(vo); -// -// if (vo != null && vo.getId() != null) { -// } - - if (1 == 2) { - model.addAttribute("message", "이미 가입된 휴대폰 번호입니다."); - return "web/" + siteFolder + "/login/usrJoinRegist"; - } - - userManageVO.setAuthorCode("ROLE_GNRL_USER"); - userManageVO.setJoinType("2"); // 직접가입:2 - userManageVO.setCondition("1"); // 정상:1, 휴면:2, 탈퇴:3 - userManageVO.setUseYn("0"); // 사용:0 - - userManageService.insertUser(userManageVO); - - return "web/" + siteFolder + "/login/usrJoinComplete"; - } - - /** - * (사용자) 아이디 중복 확인 - * - * @return model - * @throws Exception - */ - @RequestMapping(value = "{siteId}/web/user/join/usrIdDplctCnfirmAjax.do") - public ModelAndView usrIdDplctCnfirmAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - String checkId = (String) commandMap.get("checkId"); - // checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); - - int usedCnt = userManageService.checkIdDplct(checkId); - modelAndView.addObject("usedCnt", usedCnt); - modelAndView.addObject("checkId", checkId); - - return modelAndView; - } - - /** - * (사용자) ID 찾기 - * - * @return model - * @throws Exception - */ - @RequestMapping(value = "{siteId}/web/user/join/selectUserIdAjax.do") - public ModelAndView selectUserIdAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - List usedNmList = userManageService.selectUserIdAjax(userManageVO); - - modelAndView.addObject("usedNmList", usedNmList); - return modelAndView; - } - - /** - * (사용자) password 찾기 - * - * @return model - * @throws Exception - */ - @RequestMapping(value = "{siteId}/web/user/join/selectUserPWAjax.do") - public ModelAndView selectPasswordAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - int usedCnt = userManageService.selectUserPWAjax(userManageVO); - - if (usedCnt > 0) { - String id = userManageVO.getEmplyrId() + "!!"; - userManageVO.setPassword(id); - userManageService.updateUserPWAjax(userManageVO); - } - modelAndView.addObject("usedCnt", usedCnt); - return modelAndView; - } - - private void setSiteinfo(SiteManagerVO siteManagerVO, ModelMap model, HttpServletRequest request) throws Exception { - SiteManagerVO tempSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO); - if (tempSiteManagerVO != null) { - siteManagerVO.setIsMobile("pc"); - siteManagerVO.setTheme(tempSiteManagerVO.getTheme()); - } else { - siteManagerVO.setTheme("01"); - } - WebUtil util = new WebUtil(); - if (util.isMobile(request)) { - siteManagerVO.setIsMobile("mobile"); - } - model.addAttribute("siteId", siteManagerVO.getSiteId()); - // model.addAttribute("site_path" , - // "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()); - model.addAttribute("site_path", "/site/" + siteManagerVO.getSiteId() + "/" + siteManagerVO.getIsMobile()); - } - - /** - * 복호화 - * - * @param privateKey - * @param securedValue - * @return - * @throws Exception - */ - /* - * private String decryptRsa(PrivateKey privateKey, String securedValue) throws - * Exception { Cipher cipher = - * Cipher.getInstance(EgovLoginController.RSA_INSTANCE); byte[] encryptedBytes = - * hexToByteArray(securedValue); cipher.init(Cipher.DECRYPT_MODE, privateKey); - * byte[] decryptedBytes = cipher.doFinal(encryptedBytes); String decryptedValue - * = new String(decryptedBytes, "utf-8"); // 문자 인코딩 주의. return decryptedValue; } - */ - - /** - * 16진 문자열을 byte 배열로 변환한다. - * - * @param hex - * @return - */ - public static byte[] hexToByteArray(String hex) { - if (hex == null || hex.length() % 2 != 0) { - return new byte[] {}; - } - - byte[] bytes = new byte[hex.length() / 2]; - for (int i = 0; i < hex.length(); i += 2) { - byte value = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); - bytes[(int) Math.floor(i / 2)] = value; - } - return bytes; - } - - /** - * rsa 공개키, 개인키 생성 - * - * @param request - */ - /* - * public void initRsa(HttpServletRequest request) { HttpSession session = - * request.getSession(); - * - * KeyPairGenerator generator; try { generator = - * KeyPairGenerator.getInstance(EgovLoginController.RSA_INSTANCE); - * generator.initialize(1024); - * - * KeyPair keyPair = generator.genKeyPair(); KeyFactory keyFactory = - * KeyFactory.getInstance(EgovLoginController.RSA_INSTANCE); PublicKey publicKey - * = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); - * - * session.setAttribute(EgovLoginController.RSA_WEB_KEY, privateKey); // - * session에 RSA 개인키를 세션에 저장 - * - * RSAPublicKeySpec publicSpec = (RSAPublicKeySpec) - * keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class); String - * publicKeyModulus = publicSpec.getModulus().toString(16); String - * publicKeyExponent = publicSpec.getPublicExponent().toString(16); - * - * request.setAttribute("RSAModulus", publicKeyModulus); // rsa modulus 를 - * request 에 추가 request.setAttribute("RSAExponent", publicKeyExponent); // rsa - * exponent 를 request 에 추가 } catch (Exception e) { // TODO Auto-generated catch - * block e.printStackTrace(); } } - */ - - // 사용자 에러페이지 표시후 로그인 페이지로 - private String goUserLoginPage(RedirectAttributes redirectAttributes, HttpServletRequest request, ModelMap model, String alertMessage) { - redirectAttributes.addFlashAttribute("message", alertMessage); - return "redirect:/"; - } - - /* SNS 추가 내역 */ - - @RequestMapping(value = "/snsLogin/naverOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) - public String naverRedirect(Model model, @RequestParam("code") String code, @RequestParam String state, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { - - String siteId = (String) session.getAttribute("siteId"); - JsonNode node = getAccessToken("naver", code, state); - - // 결과값 출력 - System.out.println("node : " + node); - - // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 - String token = node.get("access_token").toString(); - - // 세션에 담아준다. - session.setAttribute("token", token); - JsonNode userInfo = getUserInfo("naver", node.get("access_token")); - JsonNode response = userInfo.path("response"); - - String id = response.path("id").asText(); - String name = response.path("name").asText(); - String snsEmail = response.path("email").asText(); - - LoginVO loginVO = new LoginVO(); - loginVO.setSnsId(id); - loginVO.setName(name); - loginVO.setSnsEmail(snsEmail); - loginVO.setSnsSite("naver"); - model.addAttribute("loginVO", loginVO); - return "web/login/EgovUserSNSLogin"; - } - - @RequestMapping(value = "/snsLogin/kakaoOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) - public String kakaoRedirect(Model model, @RequestParam("code") String code, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { - JsonNode node = getAccessToken("kakao", code, ""); - - // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 - String token = node.get("access_token").toString(); - // 세션에 담아준다. - session.setAttribute("token", token); - JsonNode userInfo = getUserInfo("kakao", node.get("access_token")); - - String id = userInfo.path("id").asText(); - String name = userInfo.path("name").asText(); - String snsEmail = userInfo.path("email").asText(); - - // 유저정보 카카오에서 가져오기 Get properties - JsonNode properties = userInfo.path("properties"); - JsonNode kakao_account = userInfo.path("kakao_account"); - - id = userInfo.path("id").asText(); - name = null; - snsEmail = null; - - name = properties.path("nickname").asText(); - snsEmail = kakao_account.path("email").asText(); - - LoginVO loginVO = new LoginVO(); - loginVO.setSnsId(id); - loginVO.setName(name); - loginVO.setSnsEmail(snsEmail); - loginVO.setSnsSite("kakao"); - model.addAttribute("loginVO", loginVO); - -// return "forward:/"+siteId+"/web/user/login/actionSecurityLogin.do?snsnsId="+id+"&name="+name+"&email="+email+"&snsSite=kakao"; - return "web/login/EgovUserSNSLogin"; - - } - - public JsonNode getAccessToken(String site, String code, String state) { - - String RequestUrl = ""; - List postParams = new ArrayList(); - - if (site.equals("kakao")) { - RequestUrl = "https://kauth.kakao.com/oauth/token"; - postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); - postParams.add(new BasicNameValuePair("client_id", itnKakaoRestApiKey)); - postParams.add(new BasicNameValuePair("code", code)); - - } else if (site.equals("naver")) { - RequestUrl = "https://nid.naver.com/oauth2.0/token"; - - postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); - postParams.add(new BasicNameValuePair("client_id", itnNaverClientId)); - postParams.add(new BasicNameValuePair("client_secret", itnNaverClientSecret)); - postParams.add(new BasicNameValuePair("code", code)); - postParams.add(new BasicNameValuePair("state", state)); - - } else if (site.equals("google")) { - - } - - final HttpClient client = HttpClientBuilder.create().build(); - final HttpPost post = new HttpPost(RequestUrl); - - JsonNode returnNode = null; - - try { - post.setEntity(new UrlEncodedFormEntity(postParams)); - final HttpResponse response = client.execute(post); - final int responseCode = response.getStatusLine().getStatusCode(); - - // JSON 형태 반환값 처리 - ObjectMapper mapper = new ObjectMapper(); - returnNode = mapper.readTree(response.getEntity().getContent()); - - } catch (UnsupportedEncodingException e) { - System.out.println("UnsupportedEncodingException Occured!!!"); - } catch (ClientProtocolException e) { - System.out.println("ClientProtocolException Occured!!!"); - } catch (IOException e) { - System.out.println("IOException Occured!!!"); - } finally { - } - return returnNode; - } - - public JsonNode getUserInfo(String site, JsonNode accessToken) { - - // String CLIENT_ID = K_CLIENT_ID; // REST API KEY - // String REDIRECT_URI = K_REDIRECT_URI; // 리다이렉트 URI - // String code = autorize_code; // 로그인 과정중 얻은 토큰 값 - String RequestUrl = ""; - - if (site.equals("kakao")) { - RequestUrl = "https://kapi.kakao.com/v2/user/me"; - - } else if (site.equals("naver")) { - RequestUrl = "https://openapi.naver.com/v1/nid/me"; - - } else if (site.equals("google")) { - - } - - final HttpClient client = HttpClientBuilder.create().build(); - final HttpPost post = new HttpPost(RequestUrl); - - // add header - post.addHeader("Authorization", "Bearer " + accessToken); - - JsonNode returnNode = null; - - try { - final HttpResponse response = client.execute(post); - final int responseCode = response.getStatusLine().getStatusCode(); - // JSON 형태 반환값 처리 - ObjectMapper mapper = new ObjectMapper(); - returnNode = mapper.readTree(response.getEntity().getContent()); - - } catch (UnsupportedEncodingException e) { - System.out.println("UnsupportedEncodingException Occured!!!"); - } catch (ClientProtocolException e) { - System.out.println("ClientProtocolException Occured!!!"); - } catch (IOException e) { - System.out.println("IOException Occured!!!"); - } finally { - // clear resources - } - return returnNode; - } - -} - -class RequestWrapperForSecurity extends HttpServletRequestWrapper { - private String username = null; - private String password = null; - - public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) { - super(request); - this.username = username; - this.password = password; - } - - @Override - public String getServletPath() { - return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; - } - - @Override - public String getRequestURI() { - return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; - } - - @Override - public String getParameter(String name) { - if (name.equals("egov_security_username")) { - return username; - } - - if (name.equals("egov_security_password")) { - return password; - } - - return super.getParameter(name); - } +package kcc.let.uat.uia.web; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.net.URLEncoder; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.annotation.Resource; +import javax.script.ScriptEngineManager; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicNameValuePair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.security.web.savedrequest.HttpSessionRequestCache; +import org.springframework.security.web.savedrequest.SavedRequest; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.bandi.oauth.BandiSSOAgent; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import egovframework.rte.fdl.cmmn.trace.LeaveaTrace; +import egovframework.rte.fdl.property.EgovPropertyService; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import egovframework.rte.psl.dataaccess.util.EgovMap; +import kcc.com.cmm.EgovMessageSource; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.captcha.CaptchaUtil; +import kcc.com.cmm.spring.data.util.ProfileUtil; +import kcc.com.cmm.util.WebUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.cmm.service.SMSOracleService; +import kcc.let.sym.log.clg.service.EgovLoginLogService; +import kcc.let.sym.log.clg.service.LoginLog; +import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO; +import kcc.let.sym.site.service.EgovSiteManagerService; +import kcc.let.sym.site.service.SiteManagerVO; +import kcc.let.uat.uap.service.EgovLoginPolicyService; +import kcc.let.uat.uap.service.LoginPolicyVO; +import kcc.let.uat.uia.service.EgovLoginService; +import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.uss.umt.service.EgovMberManageService; +import kcc.let.uss.umt.service.EgovUserManageService; +import kcc.let.uss.umt.service.MberManageConfigVO; +import kcc.let.uss.umt.service.UserDefaultVO; +import kcc.let.uss.umt.service.UserGuestVO; +import kcc.let.uss.umt.service.UserManageVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.let.utl.sim.service.EgovClntInfo; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrService; + +/** + * 일반 로그인, 인증서 로그인을 처리하는 컨트롤러 클래스 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자          수정내용
+ *  -------    --------    ---------------------------
+ *  2009.03.06  박지욱          최초 생성
+ *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
+ *
+ *      
+ */ +@Controller +public class EgovLoginController { + +// static String RSA_WEB_KEY = "_RSA_WEB_Key_"; // 개인키 session key +// static String RSA_INSTANCE = "RSA"; // rsa transformation + private static final Logger LOGGER = LoggerFactory.getLogger(EgovLoginController.class); + + /** 네이버 인증 관련 */ + @Value("#{globalSettings['Globals.kcc.naver.clentId']}") + private String itnNaverClientId; + @Value("#{globalSettings['Globals.kcc.naver.clientSecret']}") + private String itnNaverClientSecret; + @Value("#{globalSettings['Globals.kcc.naver.returnUrl']}") + private String itnNaverReturnUrl; + + /** 카카오 인증 관련 */ + @Value("#{globalSettings['Globals.kcc.kakao.restApiKey']}") + private String itnKakaoRestApiKey; + @Value("#{globalSettings['Globals.kcc.kakao.returnUrl']}") + private String itnKakaoReturnUrl; + + /** SSO return URL */ + @Value("#{globalSettings['Globals.sso.returnSiteUrl']}") + private String returnSiteUrlGlobal; + @Value("#{globalSettings['Globals.sso.returnSiteCode']}") + private String returnSiteCodeGlobal; + + /** SSO 회원관련 URL */ + @Value("#{globalSettings['Globals.sso.joinUrl']}") + private String joinUrl_Global; + @Value("#{globalSettings['Globals.sso.modifyUrl']}") + private String modifyUrl_Global; + @Value("#{globalSettings['Globals.sso.idFindUrl']}") + private String idFindUrl_Global; + @Value("#{globalSettings['Globals.sso.pwFindUrl']}") + private String pwFindUrl_Global; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + /** EgovLoginService */ + @Resource(name = "loginService") + private EgovLoginService loginService; + + /** EgovMessageSource */ + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + /** EgovLoginPolicyService */ + @Resource(name = "egovLoginPolicyService") + EgovLoginPolicyService egovLoginPolicyService; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + /** TRACE */ + @Resource(name = "leaveaTrace") + LeaveaTrace leaveaTrace; + + @Resource(name = "EgovLoginLogService") + private EgovLoginLogService loginLogService; + + @Resource(name = "egovSiteManagerService") + private EgovSiteManagerService egovSiteManagerService; + + /** userManageService */ + @Resource(name = "userManageService") + private EgovUserManageService userManageService; + + /** mberManageService */ + @Resource(name = "mberManageService") + private EgovMberManageService mberManageService; + + @Resource(name = "SMSOracleService") + private SMSOracleService sMSOracleService; + + //강사 정보 + @Resource(name="vEInstrService") + private VEInstrService vEInstrService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + /** 구동 환경 */ + @Value("#{property['Globals.prod.islocal']}") + private String environment; + + + /* + *//** + * (관리자)로그인 화면으로 들어간다 + * + * @param vo - 로그인후 이동할 URL이 담긴 LoginVO + * @return 로그인 페이지 + * @exception Exception + *//* + * @RequestMapping(value = "/uat/uia/egovLoginUsr.do") public String + * loginUsrView(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletRequest + * request, HttpServletResponse response, ModelMap model) throws Exception { + * return "uat/uia/EgovLoginUsr"; } + */ + + /** + * (관리자) 로그인 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/EgovLoginUsr.do") + public String adminLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + System.out.println("==start="); + + if (isAuthenticated) + return "redirect:/cmm/main/mainPage.do"; +// initRsa(request); + + System.out.println("==end="); + + // 로그인 페이지 IP 체크 + List loginPolicyGroupList = new ArrayList(); + LoginPolicyVO loginPolicyVOCheck = new LoginPolicyVO(); + String userIpCheck = EgovClntInfo.getClntIP(request); + LOGGER.debug("userIpCheck: [" + userIpCheck + "]"); + loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyAllIP(loginPolicyVOCheck); + +// boolean ipCheck = false; +// if (loginPolicyGroupList != null) { +// for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) { +//// if(userIpCheck.equals(tempPolicyVO.getIpInfo())){ +// if (userIpCheck.contains(tempPolicyVO.getIpInfo())) { +// ipCheck = true; +// break; +// } +// } +// } + + // 1. Spring Security 사용자권한 처리 +// if (!ipCheck) { +// return "/cmm/error/ipFailure"; +// } + if (!isAuthenticated) { + // model.addAttribute("message", + // egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + return "uat/uia/EgovLoginUsr"; + } + + /** + * (사용자) 로그인 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/login.do") + public String userLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + + // sns 회원가입 key 값 설정 + String naverClientId = itnNaverClientId; + String naverClientSecret = itnNaverClientSecret; + + String kakaoRestApiKey = itnKakaoRestApiKey; + String kakaoReturnUrl = itnKakaoReturnUrl; + + // config 정보 가져오기 + MberManageConfigVO mberConfigVO = new MberManageConfigVO(); + + List mberManageCnfVO = mberManageService.selectMberCnf(mberConfigVO); + + for (int i = 0; i < mberManageCnfVO.size(); i++) { + if (mberManageCnfVO.get(i).getIsSns().equals("Y")) { + if (mberManageCnfVO.get(i).getUseYn().equals("Y")) { + if (mberManageCnfVO.get(i).getConfigId().equals("snsNaver")) { + String redirectURI = URLEncoder.encode(itnNaverReturnUrl, "UTF-8"); + SecureRandom random = new SecureRandom(); + BigInteger state = new BigInteger(130, random); + String naver_url = "https://nid.naver.com/oauth2.0/authorize?response_type=code"; + naver_url += "&client_id=" + itnNaverClientId; + naver_url += "&redirect_url=" + redirectURI; + naver_url += "&state=" + state; + mberManageCnfVO.get(i).setSiteUrl(naver_url); + mberManageCnfVO.get(i).setSiteIcon("/img/login_naver_icon.png"); + + } else if (mberManageCnfVO.get(i).getConfigId().equals("snsKakao")) { + + String kakao_url = "https://kauth.kakao.com/oauth/authorize?response_type=code"; + kakao_url += "&client_id=" + kakaoRestApiKey; + kakao_url += "&redirect_uri=" + kakaoReturnUrl; + mberManageCnfVO.get(i).setSiteUrl(kakao_url); + mberManageCnfVO.get(i).setSiteIcon("/img/login_kakao_icon.png"); + + } else if (mberManageCnfVO.get(i).getConfigId().equals("snsGoogle")) { + + } + } + } + } + model.addAttribute("mberManageCnfVO", mberManageCnfVO); + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); +// initRsa(request); + return "web/login/EgovLoginGnrlUsr"; + } + + /** + * (사용자) SSO 로그인 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoLogin.do") + public String ssoLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + /* + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + */ + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + String test = (String) commandMap.get("test"); + + // 실서버 적용시 바꾸기 + String returnSiteUrl = returnSiteUrlGlobal; + String returnSiteCode = returnSiteCodeGlobal; + String idFindUrl = idFindUrl_Global; + String pwFindUrl = pwFindUrl_Global; + String joinUrl = joinUrl_Global; + + model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); + model.addAttribute("returnSiteCode", returnSiteCode); + model.addAttribute("idFindUrl", idFindUrl); + model.addAttribute("pwFindUrl", pwFindUrl); + model.addAttribute("joinUrl", joinUrl); + + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); + model.addAttribute("environment", environment); + //로컬은 셀렉트박스 로그인 + //개발은 e배움터 개발서버 로그인 + //운영은 e배움터 운영서버 로그인 + if("dev".equals(environment)) { + return "redirect:http://223.255.205.7/user/member/loginForm.do?eduOff=Y"; + } + if("real".equals(environment)) { + return "redirect:https://edu-copyright.or.kr/user/member/loginForm.do?eduOff=Y"; + } +// initRsa(request); + if (test != null && test.equals("test")) { + return "web/kccadr/login/SsoLoginUsr3"; + } else { + return "web/kccadr/login/SsoLoginUsr"; + } + } + + + /** + * 임시사용 - 개발서버에서 select방식 로그인을 유지하기 위한 + * + * @return String + * @exception Exception + */ + + /*231031.개발서버 selectbox 로그인용 임시 + 메소드 삭제*/ + @RequestMapping(value = "/web/user/login/ssoDevLogin.do") + public String ssoDevLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + /* + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + */ + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + String test = (String) commandMap.get("test"); + + // 실서버 적용시 바꾸기 + String returnSiteUrl = returnSiteUrlGlobal; + String returnSiteCode = returnSiteCodeGlobal; + String idFindUrl = idFindUrl_Global; + String pwFindUrl = pwFindUrl_Global; + String joinUrl = joinUrl_Global; + + model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); + model.addAttribute("returnSiteCode", returnSiteCode); + model.addAttribute("idFindUrl", idFindUrl); + model.addAttribute("pwFindUrl", pwFindUrl); + model.addAttribute("joinUrl", joinUrl); + + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); + model.addAttribute("environment", environment); + //로컬은 셀렉트박스 로그인 + //개발은 e배움터 개발서버 로그인 + //운영은 e배움터 운영서버 로그인 +// initRsa(request); + if (test != null && test.equals("test")) { + return "web/kccadr/login/SsoLoginUsr3"; + } else { + return "web/kccadr/login/SsoLoginUsr"; + } + } + + @RequestMapping(value = "/web/user/oraSms/sendSms.do") + public String oraSmsSend() throws Exception { + + //if (ProfileUtil.isProd()) { + LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Start"); + //sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 + //AdjReqMgrVO adjReqMgrVO = new AdjReqMgrVO(); + //sMSOracleService.insertSmsSend(adjReqMgrVO); + //sMSOracleService.insertSmsSendTest(); + LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@End"); + //} +// +// +// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); +// sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 +// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); + + return "redirect:/web/main/mainPage.do"; + } + + @RequestMapping(value = "/web/user/login/ssoLogin3.do") + public String ssoLogin3(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + + // 실서버 적용시 바꾸기 + String returnSiteUrl = returnSiteUrlGlobal; + String returnSiteCode = returnSiteCodeGlobal; + + model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); + model.addAttribute("returnSiteCode", returnSiteCode); + + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); +// initRsa(request); + return "web/kccadr/login/ssoLogin3"; + } + + /** + * (사용자) 통합회원 회원탈퇴, 개인정보수정. + * + * @return String + * @exception Exception + */ + @SuppressWarnings("deprecation") + @RequestMapping(value = "/web/user/login/ssoUsrModify.do") + public String ssoUsrModify(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + // 실서버 적용시 바꾸기 + /*String returnSiteUrl = "http://219.240.88.15:8091/web/user/login/ssoUsrModifyResult.do";*/ + String returnSiteUrl = returnSiteUrlGlobal; + + ssoLoginVO.setReturnSiteUrl(URLEncoder.encode(returnSiteUrl)); + + model.addAttribute("ssoLoginVO", ssoLoginVO); + + return "web/kccadr/login/SsoUserModify"; + } + + /** + * (사용자) 통합회원 회원탈퇴, 개인정보수정. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoUsrModifyResult.do") + public String ssoUsrModifyResult(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + + return "redirect:/"; + } + + /** + * (사용자) 외부 개발자용 세션등록 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoSession.do") + public String ssoSession(HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + model.addAttribute("membSeq", ssoLoginVO.getMembSeq()); + + return "web/kccadr/login/SsoLoginSessionRegist"; + } + + /** + * (사용자) 외부 개발자용 세션등록. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoSessionRegist.do") + public String ssoSessionRegist(@ModelAttribute("ssoLoginVO") SsoLoginVO ssoLoginVO, HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) + throws Exception { + + request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); + + return "redirect:/web/main/mainPage.do"; + } + + /** + * (관리자) 일반(스프링 시큐리티) 로그인을 처리한다(관리자) + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionSecurityLogin.do") + public String selectActionSecurityLogin(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) + throws Exception { + + // Locale.setDefault(new Locale("en", "GB")); + Locale.setDefault(new Locale("ko", "Kr")); + + // 로그인 정보 check + if (loginVO.getId() == null || loginVO.getPassword() == null) { // 로그인 최초 화면 로딩 + // RSA 키 생성 +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } + + + loginVO.setId(loginVO.getId()); + loginVO.setPassword(loginVO.getPassword()); + + // 사용자일 경우 로그인 안되게 + if (null == loginService.getUserAuth(loginVO)) { // 아이디 없음. +// initRsa(request); + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } else { + if ("ROLE_USER_MEMBER".equals(loginService.getUserAuth(loginVO).getAuthority())) { // 일반사용자 로그인 +// initRsa(request); + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } else if ("ROLE_USER_MANAGER".equals(loginService.getUserAuth(loginVO).getAuthority())) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + } + + // 1. 로그인 처리 + LoginVO resultVO = loginService.actionLogin(loginVO); + System.out.println("UserWork :: "+resultVO.getUserWork()); + + if (loginService.getUserAuth(resultVO) != null) { + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + } + + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } else { + if (resultVO.getPassMiss() > 5) { + model.addAttribute("message", "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } else { // 초기화 + loginService.updatePassMissReset(loginVO); + } + } + + // 2. 허용IP조회 + + boolean loginPolicyYn = false; + // String userIp = EgovClntInfo.getClntIP(request); + // 방화벽 아이피 조회 + + HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); + String userIp = req.getHeader("X-FORWARDED-FOR"); + if (userIp == null) { + userIp = req.getRemoteAddr(); + } + + System.out.println("--------userIp-------" + userIp + "-----------------"); + + LoginPolicyVO loginPolicyVO = new LoginPolicyVO(); + loginPolicyVO.setIpInfo(userIp); + +// boolean ipCheck = false; + /* boolean ipCheck = true; + List loginPolicyGroupList = new ArrayList(); + loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyAll(loginPolicyVO); + if (loginPolicyGroupList != null) { + for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) { + if (userIp.contains(tempPolicyVO.getIpInfo().trim())) { + ipCheck = true; + break; + } + } + } + + if (!ipCheck) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + }*/ + + // resultVO.siteId 의 각 로그인 ip를 조회함 + // if (resultVO != null && resultVO.getId() != null && + // !resultVO.getId().equals("") && loginPolicyYn) { + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + + request.getSession().setAttribute("LoginVO", resultVO); + System.out.println("===============!=============="); + 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"); + } + + System.out.println("==18=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==18=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + loginLog.setSiteId(user.getSiteId()); + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("adminId", user.getId()); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + } + } + + /* + * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); + * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); + * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("A"); + * loginLog.setDeviceType("P"); loginLog.setProgrmFileNm("adminLogin"); + * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); + */ + } + + System.out.println("forward:/uat/uia/actionMain.do"); + + return "forward:/uat/uia/actionMain.do"; // 성공 시 페이지.. (redirect 불가) + // 개인키 삭제 + // session.removeAttribute(EgovLoginController.RSA_WEB_KEY); + // return "blank"; // 성공 시 페이지.. (redirect 불가) + + } else { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } + } + + /** + * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO ID/PW를 통한 로그인 처리) + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/actionSecurityLogin.do") + public String selectActionSecurityLoginWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, + RedirectAttributes redirectAttributes) throws Exception { + + ScriptEngineManager engine = new ScriptEngineManager(); + + // 로그인 정보 check + if (loginVO.getId() == null || loginVO.getPassword() == null) { + SsoLoginVO SsoLoginSessionChk = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + // SSOLoginVO 세션 체크 + if (SsoLoginSessionChk != null) { + + loginVO.setId(SsoLoginSessionChk.getMembId()); + loginVO.setPassword("1"); + } else { + model.addAttribute("message", "로그인을 다시 해주세요."); + // 로그인 페이지로 이동 + /*return "/web/kccadr/login/SsoLoginUsr";*/ + return "redirect:/web/user/login/ssoLogin.do"; + } + } + + SsoLoginVO ssologinVO = new SsoLoginVO(); + + /*231031.개발서버 selectbox 로그인용 임시 + isDev 삭제 처리*/ + if ((ProfileUtil.isLocal() || ProfileUtil.isTLocal() || ProfileUtil.isDev()) && "Y".equals(loginVO.getIsSelect())) { //비 sso login + + loginVO.setPassword("1"); + loginVO.setStatusAll("N"); + ssologinVO.setMembSeq(loginVO.getId()); //중요 + //loginVO = loginService.actionLogin(loginVO); + + //기존에 개발자 로그인은 selectbox와 mber_seq로 로그인 처리. + //e배움터 연동 후 mber_seq는 key로 사용하기 때문에 mber_id로 로그인 처리 과정 + //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 + loginVO = loginService.actionLoginMberId(loginVO); + + + //ssologinVO.setMembSeq(loginVO.getId()); //중요 + + //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 + + //ssologinVO.setMembSeq(loginVO.getId()); //중요 + + ssologinVO.setMembId(loginVO.getEmail()); + + // ================== 이름 암호화로 나오는 문제 해결 ==================== + ssologinVO.setMembName(egovCryptoUtil.decrypt(loginVO.getName())); + + System.out.println("==================임시=================="); + // ==== 계속 암호화에 암호화가 되서 임시로 넣음 + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + + + ssologinVO.setSexCode("M"); + ssologinVO.setMembEmail(loginVO.getEmail()); + ssologinVO.setMembCelnum(loginVO.getMembCelnum()); + ssologinVO.setMembBirth(loginVO.getMembBirth()); + + /* + * ssologinVO.setMembSmsRecpYn(loginVO.getMembSmsRecpYn()); + * ssologinVO.setMembEmailRecpYn(loginVO.getMembEmailRecpYn()); + * + * ssologinVO.setDispsettMembDivisCode(loginVO.getDispsettMembDivisCode()); + * ssologinVO.setCorpnum(loginVO.getCorpnum()); + * ssologinVO.setBuisnRegnum(loginVO.getBuisnRegnum()); + * ssologinVO.setCompTitle(loginVO.getCompTitle()); + */ + + session.setAttribute("SSOLoginVO", ssologinVO); + + } else { //sso login + + ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + String SsoLoginResult = ""; +/* if (ssologinVO == null) { + SSO로그인 및 SSOLoginVO 세선 생성 + SsoLogin ssoLogin = new SsoLogin(); + SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), loginVO.getPassword(), request); + } + if ("fail".equals(SsoLoginResult)) { + redirectAttributes.addAttribute("message", "아이디 비밀번호를 확인해 주세요."); + redirectAttributes.addFlashAttribute("message", "아이디 비밀번호를 확인해 주세요."); + return "redirect:/web/user/login/ssoLogin.do"; + }*/ + } + +// ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + /*if ("".equals(ssologinVO.getDispsettMembDivisCode())) { + 신청 관련코드 받아오면 처리 + System.out.println("조정분류코드 없음"); + + }*/ + + // 기존에 있던 회원이 아니면 DB에 일련번호 저장 + /* UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberSeq(ssologinVO.getMembSeq()); + userManageVO = userManageService.selectKccadrUser(userManageVO); + if (null == userManageVO) { + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + String result = userManageService.insertUser(tmpUserManageVO); + + userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); + }else { //기존에 있던 회원이라면 이름 최신화 + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + userManageService.updateUserNm(tmpUserManageVO); + }*/ + + /*loginVO.setId(userManageVO.getEmplyrId()); + loginVO.setPassword(userManageVO.getPassword()); +*/ + /* + * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 + * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert + */ + + loginVO.setUserSe("GNR"); + // 로그인 정보 check + + /* + * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 + * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO + * == null) { // RSA 키 생성 initRsa(request); return + * "redirect:/web/user/login/login.do"; } else { + * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); + * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + * loginVO.setMessage(pLoginVO.getMessage()); } } + */ + + // 관리자 유무 체크 + List authorities = (List) loginService.selectAuthorities(loginVO); + Boolean adminFlag = false; + for (EgovMap authority : authorities) { + // admin_auth_code 최하위 관리자 Roll 코드 + if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) + adminFlag = true; + } + + // 관리자 시 로그인 막기 + if (adminFlag) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + // RSA 키 생성 +// initRsa(request); + return "web/site/login/EgovLoginGnrlUsr"; + } + + // 1. 일반 로그인 처리 + LoginVO resultVO; + // 복호화 + + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + /* loginVO.setUserSe("GNR"); */ + resultVO = loginService.actionLogin(loginVO); + // 로그인 시 권한조회 + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + + System.out.println("==1=="); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + alertMessage = egovMessageSource.getMessage("fail.common.login"); + // 로그인 실패이면 메인페이지로 이동 + return goUserLoginPage(redirectAttributes, request, model, alertMessage); + } /* + * else{ if(resultVO.getPassMiss() > 5) { alertMessage = + * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return + * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else + * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } + */ + } + + boolean loginPolicyYn = true; + System.out.println("==12=="); + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + System.out.println("==13=="); + // LoginVO세션에 사용자 정보 넣기 + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembId(ssologinVO.getMembId()); + resultVO.setMembName(ssologinVO.getMembName()); + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembCi(ssologinVO.getMembCi()); + resultVO.setMembEmail(ssologinVO.getMembEmail()); + resultVO.setMembCelnum(ssologinVO.getMembCelnum()); + resultVO.setMembBirth(ssologinVO.getMembBirth()); + resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); + resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); + resultVO.setSexCode(ssologinVO.getSexCode()); + resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); + resultVO.setCorpnum(ssologinVO.getCorpnum()); + resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); + resultVO.setCompTitle(ssologinVO.getCompTitle()); + + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 + System.out.println("@@@@로그인VO:"+resultVO+"@@@@@@"); + 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"); + } + System.out.println("==14=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==14=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + + loginLog.setLoginId(uniqId); + loginLog.setLoginIp(ip); + loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O + loginLog.setErrOccrrAt("N"); + loginLog.setErrorCode(""); + // 로그인은 관리자, PC만 됨 + loginLog.setUserAt("U"); // 사용자 + loginLog.setDeviceType("P"); // PC + loginLog.setProgrmFileNm("adminLogin"); + loginLog.setMenuNm("관리자로그인"); + loginLogService.logInsertLoginLog(loginLog); + System.out.println("==15=0="); + } + +// session.setAttribute("beforeSiteUrl", request.getRequestURI()); + System.out.println("session.getAttributesession.getAttributesession.getAttributesession.getAttribute"); + loginVO.setBeforeUrl((String) request.getSession().getAttribute("beforeSiteUrl")); + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + System.out.println("==16=0="); + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + return "blank"; // 성공 시 페이지.. (redirect 불가) + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addAttribute("message", message); + return "redirect:/web/user/login/login.do"; + } + } + + /** + * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO Token를 통한 로그인 처리) 통합회원 SSO 로그인 후 찾교시스템 배너 + * 클릭으로 로그인 + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + /* @RequestMapping(value = "/web/user/login/actionSecurityLoginToken.do") */ + @RequestMapping(value = "/kccadr/ssoLogin.do") + public String selectActionSecurityLoginTokenWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, + RedirectAttributes redirectAttributes) throws Exception { + + ScriptEngineManager engine = new ScriptEngineManager(); + + SsoLoginVO ssologinVO = new SsoLoginVO(); + ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + String SsoLoginResult = ""; + if( + request.getParameter("accessToken") == null + || request.getParameter("refreshToken") == null) { + System.out.println("토큰값 없음."); + return "redirect:/"; + } + + if (ssologinVO == null) { + /* SSO로그인 및 SSOLoginVO 세선 생성 */ + SsoLoginVO tmpssologinVO = new SsoLoginVO(); + + tmpssologinVO.setAccess_token(request.getParameter("accessToken")); + tmpssologinVO.setRefresh_token(request.getParameter("refreshToken")); + + SsoLoginResult = SsoTokenLogin.SsoTokenLogin(tmpssologinVO.getAccess_token(), tmpssologinVO.getRefresh_token(), request); + } + if ("fail".equals(SsoLoginResult)) { + model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); + return "redirect:/web/user/login/ssoLogin.do"; + } + + ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + if ("".equals(ssologinVO.getDispsettMembDivisCode())) { + /* 신청 관련코드 받아오면 처리 */ + } + + // 기존에 있던 회원이 아니면 DB에 일련번호 저장 + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberSeq(ssologinVO.getMembSeq()); + userManageVO = userManageService.selectKccadrUser(userManageVO); + if (null == userManageVO) { + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + String result = userManageService.insertUser(tmpUserManageVO); + + userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); + }else { //기존에 있던 회원이라면 이름 최신화 + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + userManageService.updateUserNm(tmpUserManageVO); + } + + loginVO.setId(userManageVO.getEmplyrId()); + loginVO.setPassword(userManageVO.getPassword()); + + /* + * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 + * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert + */ + + loginVO.setUserSe("GNR"); + // 로그인 정보 check + + /* + * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 + * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO + * == null) { // RSA 키 생성 initRsa(request); return + * "redirect:/web/user/login/login.do"; } else { + * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); + * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + * loginVO.setMessage(pLoginVO.getMessage()); } } + */ + + // 관리자 유무 체크 + List authorities = (List) loginService.selectAuthorities(loginVO); + Boolean adminFlag = false; + for (EgovMap authority : authorities) { + // admin_auth_code 최하위 관리자 Roll 코드 + if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) + adminFlag = true; + } + + // 관리자 시 로그인 막기 + if (adminFlag) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + // RSA 키 생성 +// initRsa(request); + return "web/site/login/EgovLoginGnrlUsr"; + } + + // 1. 일반 로그인 처리 + LoginVO resultVO; + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + resultVO = loginService.actionLogin(loginVO); + // 로그인 시 권한조회 + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + alertMessage = egovMessageSource.getMessage("fail.common.login"); + // 로그인 실패이면 메인페이지로 이동 + return goUserLoginPage(redirectAttributes, request, model, alertMessage); + } /* + * else{ if(resultVO.getPassMiss() > 5) { alertMessage = + * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return + * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else + * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } + */ + } + + boolean loginPolicyYn = true; + + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + + // LoginVO세션에 사용자 정보 넣기 + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembId(ssologinVO.getMembId()); + resultVO.setMembName(ssologinVO.getMembName()); + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembCi(ssologinVO.getMembCi()); + resultVO.setMembEmail(ssologinVO.getMembEmail()); + resultVO.setMembCelnum(ssologinVO.getMembCelnum()); + resultVO.setMembBirth(ssologinVO.getMembBirth()); + resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); + resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); + resultVO.setSexCode(ssologinVO.getSexCode()); + resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); + resultVO.setCorpnum(ssologinVO.getCorpnum()); + resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); + resultVO.setCompTitle(ssologinVO.getCompTitle()); + + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", 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"); + } + + System.out.println("==15=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==15=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + + loginLog.setLoginId(uniqId); + loginLog.setLoginIp(ip); + loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O + loginLog.setErrOccrrAt("N"); + loginLog.setErrorCode(""); + // 로그인은 관리자, PC만 됨 + loginLog.setUserAt("U"); // 사용자 + loginLog.setDeviceType("P"); // PC + loginLog.setProgrmFileNm("adminLogin"); + loginLog.setMenuNm("관리자로그인"); + loginLogService.logInsertLoginLog(loginLog); + } + + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + return "blank"; // 성공 시 페이지.. (redirect 불가) + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addAttribute("message", message); + return "redirect:/web/user/login/login.do"; + } + } + + /** + * (사용자) 외부 개발자용 로그인 처리 일반(스프링 시큐리티) 로그인을 처리한다 + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/actionSecurityLogin2.do") + public String selectActionSecurityLoginWeb2(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, + RedirectAttributes redirectAttributes) throws Exception { + + ScriptEngineManager engine = new ScriptEngineManager(); + + /* + * //로그인 정보 check if(loginVO.getId() == null || loginVO.getPassword() == null){ + * SsoLoginVO SsoLoginSessionChk = + * (SsoLoginVO)session.getAttribute("SSOLoginVO"); //SSOLoginVO 세션 체크 + * if(SsoLoginSessionChk != null) { + * + * loginVO.setId(SsoLoginSessionChk.getMembId()); loginVO.setPassword("1"); + * }else { model.addAttribute("message", "로그인을 다시 해주세요."); //로그인 페이지로 이동 return + * "/web/kccadr/login/SsoLoginUsr"; } } + * + * SsoLoginVO ssologinVO = new SsoLoginVO(); ssologinVO = + * (SsoLoginVO)session.getAttribute("SSOLoginVO"); String SsoLoginResult = ""; + * if(ssologinVO == null) { SSO로그인 및 SSOLoginVO 세선 생성 SsoLogin ssoLogin = new + * SsoLogin(); SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), + * loginVO.getPassword(), request); } if("fail".equals(SsoLoginResult)) { + * model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); return + * "/web/user/login/ssoLogin.do"; } + * + * ssologinVO = (SsoLoginVO)session.getAttribute("SSOLoginVO"); + * + * if("".equals(ssologinVO.getDispsettMembDivisCode())) { 신청 관련코드 받아오면 처리 } + */ + + // 기존에 있던 회원이 아니면 DB에 일련번호 저장 + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberSeq(loginVO.getMembSeq()); + userManageVO = userManageService.selectKccadrUser(userManageVO); + SsoLoginVO ssoLoginVO = new SsoLoginVO(); + ssoLoginVO.setOtherUser("Y"); + ssoLoginVO.setMembSeq(userManageVO.getMberSeq()); + request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); + + loginVO.setId(userManageVO.getEmplyrId()); + loginVO.setPassword(userManageVO.getPassword()); + + /* + * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 + * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert + */ + + loginVO.setUserSe("GNR"); + // 로그인 정보 check + + /* + * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 + * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO + * == null) { // RSA 키 생성 initRsa(request); return + * "redirect:/web/user/login/login.do"; } else { + * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); + * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + * loginVO.setMessage(pLoginVO.getMessage()); } } + */ + + // 관리자 유무 체크 + List authorities = (List) loginService.selectAuthorities(loginVO); + Boolean adminFlag = false; + for (EgovMap authority : authorities) { + // admin_auth_code 최하위 관리자 Roll 코드 + if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) + adminFlag = true; + } + + // 관리자 시 로그인 막기 + if (adminFlag) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + // RSA 키 생성 +// initRsa(request); + return "web/site/login/EgovLoginGnrlUsr"; + } + + // 1. 일반 로그인 처리 + LoginVO resultVO; + String password = loginVO.getPassword(); + loginVO.setId(loginVO.getId()); + loginVO.setPassword(password); + + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + /* loginVO.setUserSe("GNR"); */ + resultVO = loginService.actionLogin(loginVO); + // 로그인 시 권한조회 + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + alertMessage = egovMessageSource.getMessage("fail.common.login"); + // 로그인 실패이면 메인페이지로 이동 + return goUserLoginPage(redirectAttributes, request, model, alertMessage); + } /* + * else{ if(resultVO.getPassMiss() > 5) { alertMessage = + * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return + * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else + * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } + */ + } + + boolean loginPolicyYn = true; + + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", 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"); + } + + System.out.println("==16=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==16=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + + loginLog.setLoginId(uniqId); + loginLog.setLoginIp(ip); + loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O + loginLog.setErrOccrrAt("N"); + loginLog.setErrorCode(""); + // 로그인은 관리자, PC만 됨 + loginLog.setUserAt("U"); // 사용자 + loginLog.setDeviceType("P"); // PC + loginLog.setProgrmFileNm("adminLogin"); + loginLog.setMenuNm("관리자로그인"); + loginLogService.logInsertLoginLog(loginLog); + } + + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + + return "blank"; // 성공 시 페이지.. (redirect 불가) + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addAttribute("message", message); + return "redirect:/web/user/login/login.do"; + } + } + + /** + * 로그인 후 메인화면으로 들어간다 + * + * @param + * @return 로그인 페이지 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionMain.do") + public String actionMain(HttpServletResponse response, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes, HttpSession session) throws Exception { + /* + * 1.로그인 성공시 메소드 호출(사용자/관리자 모두) 2.권한없는 페이지 호출시 메소드 호출됨 3.사용자 화면에서 권한 없어도 무조건 + * 이쪽으로 redirect됨(여기서 분기처리요망) + */ + // initial target url. 첫 호출 URL + + System.out.println("===========actionMain==========="); + + SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); // 사용자 최종 클릭 화면 + + //System.out.println(savedRequest.getRedirectUrl()); + + if (savedRequest != null) { // 권한업는 페이지 호출시 호출한 페이지 분기를 위해 + if (savedRequest.getRedirectUrl().contains("web")) { // 사용자페이지에서 옴 + session.setAttribute("pageType", "web"); + } else { + session.setAttribute("pageType", "admin"); + } + + System.out.println("===========actionMain===========0"); + System.out.println(savedRequest.getRedirectUrl()); + }else { + //session.setAttribute("pageType", "web"); + } + + + + // 1. Spring Security 사용자권한 처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + System.out.println("===========isAuthenticated===========0"); + System.out.println(isAuthenticated); + + if (!isAuthenticated) { // 로그인이 안되었을경우 + if (session.getAttribute("pageType") != null) { // 사용자 로그인 추가 + if ("web".equals((String) session.getAttribute("pageType"))) { + // pageType(Web은 사용자 이외는 관리자) + if (savedRequest != null) { + session.setAttribute("beforeUrl", savedRequest.getRedirectUrl()); + /* return "redirect:/web/user/login/login.do"; */ + redirectAttributes.addFlashAttribute("message", "로그인 후 이용해 주세요."); + return "redirect:/web/user/login/ssoLogin.do"; + } + } else { + return "redirect:/uat/uia/EgovLoginUsr.do"; + } + } + return "forward:/uat/uia/EgovLoginUsr.do"; // 로그아웃 경우(사용자는 uat/uia/actionMain.do 사용안함) + } + + // 외부 개발자 판단 여부 + SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + if (ssoLoginVO != null && "Y".equals(ssoLoginVO.getOtherUser())) { + return "redirect:/web/user/login/ssoSession.do"; + } + + System.out.println("===========actionMain===========1"); + System.out.println(session.getAttribute("pageType")); + + + if (session.getAttribute("pageType") != null) { + if ("web".equals((String) session.getAttribute("pageType"))) { // 사용자 + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + // 강사 로그인 시 + // 청소년 강사 && 성인 강사 -> 청소년저작권강사 대시보드 + // 성인 강사 -> 성인저작권강사 대시보드 + // 로 redirect + if("ROLE_USER_MANAGER".equals(loginVO.getAuthority())) { + VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO(); + + vEInstrDetailVO.setUserId(loginVO.getUniqId()); + vEInstrDetailVO = vEInstrService.selectDetail(vEInstrDetailVO); + + session.setAttribute("pageType", null); + + if("Y".equals(vEInstrDetailVO.getTngrInstrYn())) { + + //청소년 강사 대시보드 + return "redirect:/web/ve/instr/tngrVisitEdu/instrInfo/instrDashboard.do"; + }else if ("Y".equals(vEInstrDetailVO.getAdultInstrYn())) { + //성인 강사 대시보드 + return "redirect:/web/ve/instr/adultVisitEdu/instrInfo/instrDashboard.do"; + } + } + + if (session.getAttribute("beforeSiteUrl") != null) { // 사용자 메인 + String tempSessionUrl = (String) session.getAttribute("beforeSiteUrl"); +// tempSessionUrl = tempSessionUrl.replace("/offedu", ""); + session.setAttribute("pageType", null); + session.setAttribute("beforeSiteUrl", null); + + if("".equals(tempSessionUrl)) { + return "redirect:/"; + } + + return "redirect:" + tempSessionUrl; + /*return "redirect:/";*/ + } else { + /*System.out.println(savedRequest.getRedirectUrl());*/ + session.setAttribute("pageType", null); + return "redirect:/web/main/mainPage.do"; + } + } + } + + // e-배움터 연동 로그인 시 - LoginVO 세션의 return url로 이동 + try { + LoginVO eEduLoginVO = (LoginVO) session.getAttribute("LoginVO"); + if(eEduLoginVO != null) { + if(eEduLoginVO.getUrl() != null) { + return "redirect:" + eEduLoginVO.getUrl(); + } + } + }catch(Exception ex) { + ex.printStackTrace(); + } + + + // 관리자 로그인 시 + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + + + System.out.println("===========actionMain===========2"); + System.out.println(loginService.getUserAuth(user).getAuthority()); + System.out.println(user.getAuthority()); + + if ("ROLE_ADMIN".equals(loginService.getUserAuth(user).getAuthority())) { // 수퍼관리자 경우 + return "redirect:/cmm/main/mainPage.do"; +// return "redirect:/kccadr/oprtn/tngrVisitEdu/areaLctrMngList.do"; + } else if ("ROLE_USER_MANAGER".equals(user.getAuthority())) { + return "redirect:/web/main/mainPage.do"; + } else if ("ROLE_VISIT".equals(user.getAuthority())) { + return "redirect:/cmm/main/mainPage.do"; + } else if ("ROLE_ADR_JRSDC".equals(user.getAuthority())) { + return "redirect:/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do"; + } else if ("ROLE_USER_MEMBER".equals(user.getAuthority())) { + System.out.println("비정상적인 사용자 redirect 임"); + return "redirect:/web/main/mainPage.do"; + } else { // 일반관리자 경우 + return "redirect:/EgovTopPageLink.do?link=/cop/bbs/SelectBBSMasterInfs.do&baseMenuNo=4300000"; + } + } + + /** + * (관리자)로그아웃한다. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionLogout.do") + public String selectActionLogout(HttpServletRequest request, ModelMap model, HttpServletResponse response) throws Exception { + request.getSession().invalidate(); + return "redirect:/uat/uia/EgovLoginUsr.do"; + } + + /** + * (사용자)로그아웃한다. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/uat/uia/actionLogout.do") + public String selectActionLogoutWeb(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + + SsoAgentInfo ssoagentinfo = new SsoAgentInfo(); + + String client_ip = "127.0.0.1"; + + if (!ProfileUtil.isLocal()) { + // SsoLoginVO 세션 정보 취득 + SsoLoginVO ssoLoginVO = new SsoLoginVO(); + HttpSession session = request.getSession(); + /*ssologin에서 e배움터 API 로그인으로 변경*/ + /*ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + if (ssoLoginVO != null) { + if (!"USRCNFRM_00000002940".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002941".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002942".equals(ssoLoginVO.getMembId()) + || !"USRCNFRM_00000002943".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002944".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002550".equals(ssoLoginVO.getMembId()) + || !"USRCNFRM_00000002542".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002541".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002540".equals(ssoLoginVO.getMembId()) + || !"USRCNFRM_00000002533".equals(ssoLoginVO.getMembId())) { + BandiSSOAgent agent = new BandiSSOAgent(ssoUri, clientId, clientSecret, scope); + BandiSSOAgent agent = new BandiSSOAgent(ssoagentinfo.getSsoUri(), ssoagentinfo.getClientId(), ssoagentinfo.getClientSecret(), ssoagentinfo.getScope()); + + // sso 로그아웃 + agent.logout(ssoLoginVO.getAccess_token(), client_ip); + } + }*/ + } + + // Spring Security 로그아웃 + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null) { + new SecurityContextLogoutHandler().logout(request, response, auth); + } + + // 세션 제거 + request.getSession().invalidate(); + + return "redirect:/web/main/mainPage.do"; + } + + /* 캡차 테스트 */ + @RequestMapping(value = "/captcha/captchaTest.do") + public String captchaTest(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model) throws Exception { + return "cmm/chptcha/captchaTest"; + } + + /* 캡차 이미지 */ + @RequestMapping(value = "/captcha/captchaImg.do") + public String captchaImg1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + + return "cmm/chptcha/captchaImg"; + } + + /* 캡차 오디오 */ + @RequestMapping(value = "/captcha/captchaAudio.do") + public String captchaAudio1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + return "cmm/chptcha/captchaAudio"; + } + + /* 캡차 submit */ + @RequestMapping(value = "/captcha/captchaSubmit.do") + public ModelAndView captchaSubmit(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String answer = (String) commandMap.get("answer"); + String captcha = (String) request.getSession().getAttribute("captcha"); + String message = "캡차 입력값이 일치하지 않습니다."; + if (answer != null && !"".equals(answer)) { + if (answer.equals(captcha)) { + message = "캡차 입력값이 일치합니다."; + } + } + modelAndView.addObject("message", message); + return modelAndView; + } + + /* 캡차 이미지 */ + @RequestMapping(value = "captchaImg.do") + public void cpatchaImg(HttpServletRequest request, HttpServletResponse response) throws Exception { + new CaptchaUtil().captchaImg(request, response); + } + + @RequestMapping(value = "captchaAudio.do") + public void cpatchaAudio(HttpServletRequest request, HttpServletResponse response) throws Exception { + new CaptchaUtil().captchaAudio(request, response); + } + + /** + * 로그인 후 메인화면으로 들어간다 + * + * @param + * @return 로그인 페이지 + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/actionLoign.do") + public String siteActionMain(@PathVariable("siteId") String siteId, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) throws Exception { + + // initial target url. 첫 호출 URL + SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); + String initialTargetUrl = ""; + if (savedRequest != null) { + initialTargetUrl = savedRequest.getRedirectUrl(); + } + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + + // 1. Spring Security 사용자권한 처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) { + // model.addAttribute("message", + // egovMessageSource.getMessage("fail.common.login")); + + if ("linc".equals(siteId) || "klc".equals(siteId)) { + return "web/" + siteFolder + "/main/MemberLogin"; + } else { + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setSiteId(siteId); + setSiteinfo(siteManagerVO, model, request); + // return + // "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/main/MemberLogin"; + return "web/site/" + siteId + "/" + siteManagerVO.getIsMobile() + "/main/MemberLogin"; + } + } + + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + if (null != loginVO && !"super".equals(loginVO.getSiteId())) { // 리스트, 수정, 입력 + if (siteId.equals(loginVO.getSiteId())) { // 사이트 아이디가 다르면 + session.setAttribute("pageType", "web"); + return "web/" + siteFolder + "/main/MemberLogin"; + } + } + + // 2. 메인 페이지 이동 + return "forward:/" + siteId + "/web/main/mainPage.do"; + } + + /** + * 일반사용자 (스프링 시큐리티) 로그인을 처리한다 + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/actionSecurityLogin.do") + public String selectActionSiteSecurityLogin(@PathVariable("siteId") String siteId, @ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, + ModelMap model) throws Exception { + // 로그인 정보 check + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + if (loginVO.getId() == null || loginVO.getPassword() == null) { + return "web/" + siteFolder + "/main/MemberLogin"; + } + + // 1. 일반 로그인 처리(사이트) + LoginVO resultVO = loginService.siteActionLogin(loginVO); + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); + request.getSession().setAttribute("pageType", "web"); + 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"); + } + + System.out.println("==17=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==17=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + return "blank"; // action.do 에서 일반사용자 분기처리 + } else { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "web/" + siteFolder + "/main/MemberLogin"; + } + } + + /** + * (사용자) 아이디 찾기. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/findUserId.do") + public String findUserId(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + return "web/site/kcc/login/findUserId"; + } + + /** + * (사용자) 비밀번호 찾기. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/findPassword.do") + public String findPassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + return "web/site/kcc/login/findPassword"; + } + + /** + * (사용자) 아이디 비밀번호 안내. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/findView.do") + public String findView(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/cmm/main/mainPage.do"; + + return "web/site/kcc/login/findView"; + } + + /** + * (사용자) 비밀번호 변경 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/changePassword.do") + public String changePassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/cmm/main/mainPage.do"; + + return "web/site/kcc/login/changePassword"; + } + + @RequestMapping(value = "/{siteId}/web/user/join/snsLink.do") + public String snsLink(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) { + String siteId = (String) session.getAttribute("siteId"); + model.addAttribute("loginVO", loginVO); + return "web/site/" + siteId + "/login/snsLinkPage"; + } + + @RequestMapping(value = "/{siteId}/web/user/join/snsLinkUpdate.do") + public String snsLinkUpdate(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) throws Exception { + String siteId = (String) session.getAttribute("siteId"); + String siteFolder = "site/" + siteId; + + loginService.updateSnsLink(loginVO); + + return "web/" + siteFolder + "/login/usrJoinComplete"; + } + + // (사용자) 회원가입 동의 화면 + @RequestMapping(value = "/{siteId}/web/user/join/usrJoinIntro.do") + public String usrJoinIntro(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("loginVO") LoginVO loginVO, + ModelMap model) throws Exception { + + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + model.addAttribute("site_path", "/" + siteFolder); + + MberManageConfigVO mberConfigVO = new MberManageConfigVO(); // 회원가입 환경설정 + mberConfigVO.setUseYn("Y"); // 사용하는것만 + mberConfigVO.setIsSns("N"); + mberConfigVO.setSiteId(siteId); + List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); + model.addAttribute("mberManageCnfList", mberManageCnfList); + model.addAttribute("loginVO", loginVO); + + // 약관가져오기 + SiteManagerVO termsVO = new SiteManagerVO(); + termsVO.setSiteId(siteId); + termsVO = egovSiteManagerService.selectSiteManagerVO(termsVO); + if (null != termsVO) { + if (!"N".equals(termsVO.getTermsYn())) { + model.addAttribute("termsVO", termsVO); + } + } + return "web/" + siteFolder + "/login/usrJoinIntro"; + + } + + // (사용자) 회원가입 화면 + @RequestMapping(value = "/{siteId}/web/user/join/usrJoinRegist.do") + public String usrJoinView(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, + @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + model.addAttribute("site_path", "/" + siteFolder); + return "web/" + siteFolder + "/login/usrJoinRegist"; + } + + /** + * (사용자) 회원가입 처리 + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/join/usrJoinInsert.do") + public String usrJoinInsert(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserGuestVO userManageVO, HttpServletRequest request, HttpServletResponse response, + ModelMap model, @RequestParam Map commandMap, RedirectAttributes redirectAttributes) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + model.addAttribute("site_path", "/" + siteFolder); + +// UserVO userVO = (UserVO) request.getSession().getAttribute("selfauthUserVO"); +// // 본인인증 정보가 없거나, 인증정보와 번호가 다를때 +// if (userVO == null || !userManageVO.getMoblphonNo().equals(userVO.getMblNum())) { +// model.addAttribute("message", "비 정상적인 접근입니다. 본인인증을 해주세요."); +// return "web/login/usrJoinRegist"; +// } +// request.getSession().setAttribute("selfauthUserVO", null); + + // 본인인증 데이터 +// userManageVO.setEmplyrNm(userVO.getName()); +// userManageVO.setBrth(userVO.getBirYMD()); +// userManageVO.setMblDn(userVO.getMblDn()); +// userManageVO.setMoblphonNo(userVO.getMblNum()); + + // 기 가입된 휴대폰번호인지 확인 +// LoginVO vo = new LoginVO(); +// vo.setMblDn(userVO.getMblDn()); +// vo = loginService.searchIdByMblDn(vo); +// +// if (vo != null && vo.getId() != null) { +// } + + if (1 == 2) { + model.addAttribute("message", "이미 가입된 휴대폰 번호입니다."); + return "web/" + siteFolder + "/login/usrJoinRegist"; + } + + userManageVO.setAuthorCode("ROLE_GNRL_USER"); + userManageVO.setJoinType("2"); // 직접가입:2 + userManageVO.setCondition("1"); // 정상:1, 휴면:2, 탈퇴:3 + userManageVO.setUseYn("0"); // 사용:0 + + userManageService.insertUser(userManageVO); + + return "web/" + siteFolder + "/login/usrJoinComplete"; + } + + /** + * (사용자) 아이디 중복 확인 + * + * @return model + * @throws Exception + */ + @RequestMapping(value = "{siteId}/web/user/join/usrIdDplctCnfirmAjax.do") + public ModelAndView usrIdDplctCnfirmAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String checkId = (String) commandMap.get("checkId"); + // checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); + + int usedCnt = userManageService.checkIdDplct(checkId); + modelAndView.addObject("usedCnt", usedCnt); + modelAndView.addObject("checkId", checkId); + + return modelAndView; + } + + /** + * (사용자) ID 찾기 + * + * @return model + * @throws Exception + */ + @RequestMapping(value = "{siteId}/web/user/join/selectUserIdAjax.do") + public ModelAndView selectUserIdAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + List usedNmList = userManageService.selectUserIdAjax(userManageVO); + + modelAndView.addObject("usedNmList", usedNmList); + return modelAndView; + } + + /** + * (사용자) password 찾기 + * + * @return model + * @throws Exception + */ + @RequestMapping(value = "{siteId}/web/user/join/selectUserPWAjax.do") + public ModelAndView selectPasswordAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + int usedCnt = userManageService.selectUserPWAjax(userManageVO); + + if (usedCnt > 0) { + String id = userManageVO.getEmplyrId() + "!!"; + userManageVO.setPassword(id); + userManageService.updateUserPWAjax(userManageVO); + } + modelAndView.addObject("usedCnt", usedCnt); + return modelAndView; + } + + private void setSiteinfo(SiteManagerVO siteManagerVO, ModelMap model, HttpServletRequest request) throws Exception { + SiteManagerVO tempSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO); + if (tempSiteManagerVO != null) { + siteManagerVO.setIsMobile("pc"); + siteManagerVO.setTheme(tempSiteManagerVO.getTheme()); + } else { + siteManagerVO.setTheme("01"); + } + WebUtil util = new WebUtil(); + if (util.isMobile(request)) { + siteManagerVO.setIsMobile("mobile"); + } + model.addAttribute("siteId", siteManagerVO.getSiteId()); + // model.addAttribute("site_path" , + // "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()); + model.addAttribute("site_path", "/site/" + siteManagerVO.getSiteId() + "/" + siteManagerVO.getIsMobile()); + } + + /** + * 복호화 + * + * @param privateKey + * @param securedValue + * @return + * @throws Exception + */ + /* + * private String decryptRsa(PrivateKey privateKey, String securedValue) throws + * Exception { Cipher cipher = + * Cipher.getInstance(EgovLoginController.RSA_INSTANCE); byte[] encryptedBytes = + * hexToByteArray(securedValue); cipher.init(Cipher.DECRYPT_MODE, privateKey); + * byte[] decryptedBytes = cipher.doFinal(encryptedBytes); String decryptedValue + * = new String(decryptedBytes, "utf-8"); // 문자 인코딩 주의. return decryptedValue; } + */ + + /** + * 16진 문자열을 byte 배열로 변환한다. + * + * @param hex + * @return + */ + public static byte[] hexToByteArray(String hex) { + if (hex == null || hex.length() % 2 != 0) { + return new byte[] {}; + } + + byte[] bytes = new byte[hex.length() / 2]; + for (int i = 0; i < hex.length(); i += 2) { + byte value = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); + bytes[(int) Math.floor(i / 2)] = value; + } + return bytes; + } + + /** + * rsa 공개키, 개인키 생성 + * + * @param request + */ + /* + * public void initRsa(HttpServletRequest request) { HttpSession session = + * request.getSession(); + * + * KeyPairGenerator generator; try { generator = + * KeyPairGenerator.getInstance(EgovLoginController.RSA_INSTANCE); + * generator.initialize(1024); + * + * KeyPair keyPair = generator.genKeyPair(); KeyFactory keyFactory = + * KeyFactory.getInstance(EgovLoginController.RSA_INSTANCE); PublicKey publicKey + * = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); + * + * session.setAttribute(EgovLoginController.RSA_WEB_KEY, privateKey); // + * session에 RSA 개인키를 세션에 저장 + * + * RSAPublicKeySpec publicSpec = (RSAPublicKeySpec) + * keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class); String + * publicKeyModulus = publicSpec.getModulus().toString(16); String + * publicKeyExponent = publicSpec.getPublicExponent().toString(16); + * + * request.setAttribute("RSAModulus", publicKeyModulus); // rsa modulus 를 + * request 에 추가 request.setAttribute("RSAExponent", publicKeyExponent); // rsa + * exponent 를 request 에 추가 } catch (Exception e) { // TODO Auto-generated catch + * block e.printStackTrace(); } } + */ + + // 사용자 에러페이지 표시후 로그인 페이지로 + private String goUserLoginPage(RedirectAttributes redirectAttributes, HttpServletRequest request, ModelMap model, String alertMessage) { + redirectAttributes.addFlashAttribute("message", alertMessage); + return "redirect:/"; + } + + /* SNS 추가 내역 */ + + @RequestMapping(value = "/snsLogin/naverOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) + public String naverRedirect(Model model, @RequestParam("code") String code, @RequestParam String state, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { + + String siteId = (String) session.getAttribute("siteId"); + JsonNode node = getAccessToken("naver", code, state); + + // 결과값 출력 + System.out.println("node : " + node); + + // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 + String token = node.get("access_token").toString(); + + // 세션에 담아준다. + session.setAttribute("token", token); + JsonNode userInfo = getUserInfo("naver", node.get("access_token")); + JsonNode response = userInfo.path("response"); + + String id = response.path("id").asText(); + String name = response.path("name").asText(); + String snsEmail = response.path("email").asText(); + + LoginVO loginVO = new LoginVO(); + loginVO.setSnsId(id); + loginVO.setName(name); + loginVO.setSnsEmail(snsEmail); + loginVO.setSnsSite("naver"); + model.addAttribute("loginVO", loginVO); + return "web/login/EgovUserSNSLogin"; + } + + @RequestMapping(value = "/snsLogin/kakaoOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) + public String kakaoRedirect(Model model, @RequestParam("code") String code, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { + JsonNode node = getAccessToken("kakao", code, ""); + + // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 + String token = node.get("access_token").toString(); + // 세션에 담아준다. + session.setAttribute("token", token); + JsonNode userInfo = getUserInfo("kakao", node.get("access_token")); + + String id = userInfo.path("id").asText(); + String name = userInfo.path("name").asText(); + String snsEmail = userInfo.path("email").asText(); + + // 유저정보 카카오에서 가져오기 Get properties + JsonNode properties = userInfo.path("properties"); + JsonNode kakao_account = userInfo.path("kakao_account"); + + id = userInfo.path("id").asText(); + name = null; + snsEmail = null; + + name = properties.path("nickname").asText(); + snsEmail = kakao_account.path("email").asText(); + + LoginVO loginVO = new LoginVO(); + loginVO.setSnsId(id); + loginVO.setName(name); + loginVO.setSnsEmail(snsEmail); + loginVO.setSnsSite("kakao"); + model.addAttribute("loginVO", loginVO); + +// return "forward:/"+siteId+"/web/user/login/actionSecurityLogin.do?snsnsId="+id+"&name="+name+"&email="+email+"&snsSite=kakao"; + return "web/login/EgovUserSNSLogin"; + + } + + public JsonNode getAccessToken(String site, String code, String state) { + + String RequestUrl = ""; + List postParams = new ArrayList(); + + if (site.equals("kakao")) { + RequestUrl = "https://kauth.kakao.com/oauth/token"; + postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); + postParams.add(new BasicNameValuePair("client_id", itnKakaoRestApiKey)); + postParams.add(new BasicNameValuePair("code", code)); + + } else if (site.equals("naver")) { + RequestUrl = "https://nid.naver.com/oauth2.0/token"; + + postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); + postParams.add(new BasicNameValuePair("client_id", itnNaverClientId)); + postParams.add(new BasicNameValuePair("client_secret", itnNaverClientSecret)); + postParams.add(new BasicNameValuePair("code", code)); + postParams.add(new BasicNameValuePair("state", state)); + + } else if (site.equals("google")) { + + } + + final HttpClient client = HttpClientBuilder.create().build(); + final HttpPost post = new HttpPost(RequestUrl); + + JsonNode returnNode = null; + + try { + post.setEntity(new UrlEncodedFormEntity(postParams)); + final HttpResponse response = client.execute(post); + final int responseCode = response.getStatusLine().getStatusCode(); + + // JSON 형태 반환값 처리 + ObjectMapper mapper = new ObjectMapper(); + returnNode = mapper.readTree(response.getEntity().getContent()); + + } catch (UnsupportedEncodingException e) { + System.out.println("UnsupportedEncodingException Occured!!!"); + } catch (ClientProtocolException e) { + System.out.println("ClientProtocolException Occured!!!"); + } catch (IOException e) { + System.out.println("IOException Occured!!!"); + } finally { + } + return returnNode; + } + + public JsonNode getUserInfo(String site, JsonNode accessToken) { + + // String CLIENT_ID = K_CLIENT_ID; // REST API KEY + // String REDIRECT_URI = K_REDIRECT_URI; // 리다이렉트 URI + // String code = autorize_code; // 로그인 과정중 얻은 토큰 값 + String RequestUrl = ""; + + if (site.equals("kakao")) { + RequestUrl = "https://kapi.kakao.com/v2/user/me"; + + } else if (site.equals("naver")) { + RequestUrl = "https://openapi.naver.com/v1/nid/me"; + + } else if (site.equals("google")) { + + } + + final HttpClient client = HttpClientBuilder.create().build(); + final HttpPost post = new HttpPost(RequestUrl); + + // add header + post.addHeader("Authorization", "Bearer " + accessToken); + + JsonNode returnNode = null; + + try { + final HttpResponse response = client.execute(post); + final int responseCode = response.getStatusLine().getStatusCode(); + // JSON 형태 반환값 처리 + ObjectMapper mapper = new ObjectMapper(); + returnNode = mapper.readTree(response.getEntity().getContent()); + + } catch (UnsupportedEncodingException e) { + System.out.println("UnsupportedEncodingException Occured!!!"); + } catch (ClientProtocolException e) { + System.out.println("ClientProtocolException Occured!!!"); + } catch (IOException e) { + System.out.println("IOException Occured!!!"); + } finally { + // clear resources + } + return returnNode; + } + +} + +class RequestWrapperForSecurity extends HttpServletRequestWrapper { + private String username = null; + private String password = null; + + public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) { + super(request); + this.username = username; + this.password = password; + } + + @Override + public String getServletPath() { + return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; + } + + @Override + public String getRequestURI() { + return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; + } + + @Override + public String getParameter(String name) { + if (name.equals("egov_security_username")) { + return username; + } + + if (name.equals("egov_security_password")) { + return password; + } + + return super.getParameter(name); + } } \ No newline at end of file diff --git a/src/main/java/kcc/let/uss/notify/service/NotifyManageService.java b/src/main/java/kcc/let/uss/notify/service/NotifyManageService.java index f41c5892..5c01c3d2 100644 --- a/src/main/java/kcc/let/uss/notify/service/NotifyManageService.java +++ b/src/main/java/kcc/let/uss/notify/service/NotifyManageService.java @@ -1,36 +1,44 @@ -package kcc.let.uss.notify.service; - -import java.util.List; - -import kcc.com.cmm.service.CmmnDetailCode; - -/** - * - * 알림 관리자 관리 - * @author 이호영 - * @since 2023.12.14 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2023.12.14  이호영          최초 생성
- *   
- *
- * 
- */ -public interface NotifyManageService { - - List selectMngPagingList(NotifyManageVO notifyManageVO); - - void mngInsert(NotifyManageVO notifyManageVO); - - NotifyManageVO findById(NotifyManageVO notifyManageVO); - - void mngUpdate(NotifyManageVO notifyManageVO); - - void mngDel(NotifyManageVO notifyManageVO); -} +package kcc.let.uss.notify.service; + +import java.util.List; + +import egovframework.rte.fdl.cmmn.exception.FdlException; + +/** + * + * 알림 관리자 관리 + * @author 이호영 + * @since 2023.12.14 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2023.12.14  이호영          최초 생성
+ *   
+ *
+ * 
+ */ +public interface NotifyManageService { + + List selectMngPagingList(NotifyManageVO notifyManageVO); + + void mngInsert(NotifyManageVO notifyManageVO); + + NotifyManageVO findByMngId(NotifyManageVO notifyManageVO); + + void mngUpdate(NotifyManageVO notifyManageVO); + + void mngDel(NotifyManageVO notifyManageVO); + + void insertNotifyEduForAdmin(String userId, String eduAplctOrd, List eduChasiOrdList, String lctrDivCd) throws FdlException; + + List selectPagingList(NotifyManageVO notifyManageVO); + + NotifyManageVO findById(NotifyManageVO notifyManageVO); + + void updateNotifyChkWhereCmmNotifyOrd(String cmmNotifyOrd); +} diff --git a/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageDAO.java b/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageDAO.java index d90db90b..33a6205a 100644 --- a/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageDAO.java +++ b/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageDAO.java @@ -1,53 +1,70 @@ -package kcc.let.uss.notify.service.impl; - -import java.util.List; - -import org.springframework.stereotype.Repository; - -import egovframework.rte.psl.dataaccess.EgovAbstractDAO; -import kcc.com.cmm.service.CmmnDetailCode; -import kcc.let.sym.ccm.cde.service.CmmnDetailCodeVO; -import kcc.let.uss.notify.service.NotifyManageVO; - -/** - * - * 알림 관리자 관리 - * @author 이호영 - * @since 2023.12.14 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2023.12.14  이호영          최초 생성
- *   
- *
- * 
- */ -@Repository("NotifyManageDAO") -public class NotifyManageDAO extends EgovAbstractDAO { - - public List selectMngPagingList(NotifyManageVO notifyManageVO) { - return (List) list("VEANotifyMngDAO.selectMngPagingList", notifyManageVO); - } - - public void mngInsert(NotifyManageVO notifyManageVO) { - insert("VEANotifyMngDAO.mngInsert", notifyManageVO); - } - - public NotifyManageVO findById(NotifyManageVO notifyManageVO) { - return (NotifyManageVO) select("VEANotifyMngDAO.findById", notifyManageVO); - } - - public void mngUpdate(NotifyManageVO notifyManageVO) { - update("VEANotifyMngDAO.mngUpdate", notifyManageVO); - } - - public void mngDel(NotifyManageVO notifyManageVO) { - update("VEANotifyMngDAO.mngDel", notifyManageVO); - } - -} +package kcc.let.uss.notify.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import kcc.com.cmm.service.CmmnDetailCode; +import kcc.let.sym.ccm.cde.service.CmmnDetailCodeVO; +import kcc.let.uss.notify.service.NotifyManageVO; + +/** + * + * 알림 관리자 관리 + * @author 이호영 + * @since 2023.12.14 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2023.12.14  이호영          최초 생성
+ *   
+ *
+ * 
+ */ +@Repository("NotifyManageDAO") +public class NotifyManageDAO extends EgovAbstractDAO { + + public List selectMngPagingList(NotifyManageVO notifyManageVO) { + return (List) list("VEANotifyMngDAO.selectMngPagingList", notifyManageVO); + } + + public void mngInsert(NotifyManageVO notifyManageVO) { + insert("VEANotifyMngDAO.mngInsert", notifyManageVO); + } + + public NotifyManageVO findByMngId(NotifyManageVO notifyManageVO) { + return (NotifyManageVO) select("VEANotifyMngDAO.findByMngId", notifyManageVO); + } + + public void mngUpdate(NotifyManageVO notifyManageVO) { + update("VEANotifyMngDAO.mngUpdate", notifyManageVO); + } + + public void mngDel(NotifyManageVO notifyManageVO) { + update("VEANotifyMngDAO.mngDel", notifyManageVO); + } + + public void insertNotifyEduForAdmin(NotifyManageVO notifyManageVO) { + insert("VEANotifyDAO.insertNotifyEduForAdmin", notifyManageVO); + } + + public List selectPagingList(NotifyManageVO notifyManageVO) { + return (List) list("VEANotifyDAO.selectPagingList", notifyManageVO); + } + + public NotifyManageVO findById(NotifyManageVO notifyManageVO) { + return (NotifyManageVO) select("VEANotifyDAO.findById", notifyManageVO); + } + + public void updateNotifyChkWhereCmmNotifyOrd(String cmmNotifyOrd) { + update("VEANotifyDAO.updateNotifyChkWhereCmmNotifyOrd", cmmNotifyOrd); + } + + +} diff --git a/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageServiceImpl.java b/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageServiceImpl.java index 5d4a32cf..541e7689 100644 --- a/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageServiceImpl.java +++ b/src/main/java/kcc/let/uss/notify/service/impl/NotifyManageServiceImpl.java @@ -1,63 +1,119 @@ -package kcc.let.uss.notify.service.impl; - -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; - -import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; -import kcc.let.uss.notify.service.NotifyManageService; -import kcc.let.uss.notify.service.NotifyManageVO; - -/** - * - * 알림 관리자 관리 - * @author 이호영 - * @since 2023.12.14 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2023.12.14  이호영          최초 생성
- *   
- *
- * 
- */ -@Service("NotifyManageService") -public class NotifyManageServiceImpl extends EgovAbstractServiceImpl implements NotifyManageService { - - @Resource(name="NotifyManageDAO") - private NotifyManageDAO notifyManageDAO; - - @Override - public List selectMngPagingList(NotifyManageVO notifyManageVO) { - return notifyManageDAO.selectMngPagingList(notifyManageVO); - } - - @Override - public void mngInsert(NotifyManageVO notifyManageVO) { - notifyManageDAO.mngInsert(notifyManageVO); - - } - - @Override - public NotifyManageVO findById(NotifyManageVO notifyManageVO) { - return notifyManageDAO.findById(notifyManageVO); - } - - @Override - public void mngUpdate(NotifyManageVO notifyManageVO) { - notifyManageDAO.mngUpdate(notifyManageVO); - } - - @Override - public void mngDel(NotifyManageVO notifyManageVO) { - notifyManageDAO.mngDel(notifyManageVO); - } - -} +package kcc.let.uss.notify.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.fdl.cmmn.exception.FdlException; +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import kcc.let.uss.notify.service.NotifyManageService; +import kcc.let.uss.notify.service.NotifyManageVO; + +/** + * + * 알림 관리자 관리 + * @author 이호영 + * @since 2023.12.14 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2023.12.14  이호영          최초 생성
+ *   
+ *
+ * 
+ */ +@Service("NotifyManageService") +public class NotifyManageServiceImpl extends EgovAbstractServiceImpl implements NotifyManageService { + + @Resource(name="NotifyManageDAO") + private NotifyManageDAO notifyManageDAO; + + //교육과정순번 + @Resource(name="veaCmmNotifyMngOrdGnrService") + private EgovIdGnrService veaCmmNotifyOrdGnrService; + + @Override + public List selectMngPagingList(NotifyManageVO notifyManageVO) { + return notifyManageDAO.selectMngPagingList(notifyManageVO); + } + + @Override + public void mngInsert(NotifyManageVO notifyManageVO) { + notifyManageDAO.mngInsert(notifyManageVO); + + } + + @Override + public NotifyManageVO findByMngId(NotifyManageVO notifyManageVO) { + return notifyManageDAO.findByMngId(notifyManageVO); + } + + @Override + public NotifyManageVO findById(NotifyManageVO notifyManageVO) { + return notifyManageDAO.findById(notifyManageVO); + } + + @Override + public void mngUpdate(NotifyManageVO notifyManageVO) { + notifyManageDAO.mngUpdate(notifyManageVO); + } + + @Override + public void mngDel(NotifyManageVO notifyManageVO) { + notifyManageDAO.mngDel(notifyManageVO); + } + + @Override + public void insertNotifyEduForAdmin(String userId, String eduAplctOrd, List eduChasiOrdList, String lctrDivCd) throws FdlException { + + + // 담당자 ID 가져오기 + NotifyManageVO p_VO = new NotifyManageVO(); + p_VO.setLctrDivCd(lctrDivCd); + p_VO.setFirstIndex(0); + p_VO.setRecordCountPerPage(1000); + List notifyManageListVO = notifyManageDAO.selectMngPagingList(p_VO); + +// for(String chasi : eduChasiOrdList) { + + NotifyManageVO notifyManageVO = new NotifyManageVO(); + notifyManageVO.setCmmNotifyOrd(veaCmmNotifyOrdGnrService.getNextStringId()); + notifyManageVO.setLctrDivCd(lctrDivCd); + notifyManageVO.setNotifyCn("["+userId+"]["+eduChasiOrdList.size()+"차시] 교육신청을 하였습니다."); + String notifyPath = ""; + if("10".equals(lctrDivCd)) + notifyPath = "/kccadr/oprtn/tngrVisitEdu/eduAplctMngDetail.do"; + if("20".equals(lctrDivCd)) + notifyPath = "/kccadr/oprtn/adultVisitEdu/eduAplctMngDetail.do"; + notifyManageVO.setNotifyPath(notifyPath); + notifyManageVO.setNotifyChk("N"); + notifyManageVO.setEduAplctOrd(eduAplctOrd); + notifyManageVO.setEduChasiOrd(eduChasiOrdList.toString()); + notifyManageVO.setFrstRegisterId(userId); + for(NotifyManageVO vo : notifyManageListVO) { + notifyManageVO.setToUserId(vo.getMngUserId()); + notifyManageDAO.insertNotifyEduForAdmin(notifyManageVO); + } +// } + + } + + @Override + public List selectPagingList(NotifyManageVO notifyManageVO) { + return notifyManageDAO.selectPagingList(notifyManageVO); + } + + @Override + public void updateNotifyChkWhereCmmNotifyOrd(String cmmNotifyOrd) { + notifyManageDAO.updateNotifyChkWhereCmmNotifyOrd(cmmNotifyOrd); + } + +} diff --git a/src/main/java/kcc/let/uss/notify/web/NotifyManageController.java b/src/main/java/kcc/let/uss/notify/web/NotifyManageController.java index 00ddf990..c3982f57 100644 --- a/src/main/java/kcc/let/uss/notify/web/NotifyManageController.java +++ b/src/main/java/kcc/let/uss/notify/web/NotifyManageController.java @@ -1,317 +1,317 @@ -package kcc.let.uss.notify.web; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -import egovframework.rte.fdl.idgnr.EgovIdGnrService; -import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.com.cmm.ComDefaultCodeVO; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.service.CmmnDetailCode; -import kcc.com.cmm.util.StringUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.let.sec.ram.service.AuthorManageVO; -import kcc.let.uat.uia.service.SsoLoginVO; -import kcc.let.uss.notify.service.NotifyManageService; -import kcc.let.uss.notify.service.NotifyManageVO; -import kcc.let.uss.umt.service.EgovUserManageService; -import kcc.let.uss.umt.service.UserDefaultVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.oprtn.fndtnEnhanceTrn.prcsInfoMng.web.FndthPrcsInfoMngController; - -/** - * - * 알림 관리자 관리 - * @author 이호영 - * @since 2023.12.14 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2023.12.14  이호영          최초 생성
- *   
- *
- * 
- */ -@Controller -public class NotifyManageController { - - private static final Logger LOGGER = LoggerFactory.getLogger(NotifyManageController.class); - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - @Resource(name = "NotifyManageService") - private NotifyManageService notifyManageService; - - /** userManageService */ - @Resource(name = "userManageService") - private EgovUserManageService userManageService; - - //교육과정순번 - @Resource(name="veaCmmNotifyMngOrdGnrService") - private EgovIdGnrService veaCmmNotifyMngOrdGnrService; - - - - /** - * @methodName : selectCmmnDetailCodeDetail - * @author : 이호영 - * @date : 2023.12.14 - * @description : - * @param notifyManageVO - * @param model - * @return - * @throws Exception - */ - @RequestMapping(value="/uss/umt/notify/selectList.do") - public String selectList (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO - , ModelMap model - ) throws Exception { - - if(notifyManageVO.getPageUnit() != 10) { - notifyManageVO.setPageUnit(notifyManageVO.getPageUnit()); - } - - try{ - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - - - - /** pageing */ - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit()); - paginationInfo.setPageSize(notifyManageVO.getPageSize()); - - notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); - notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex()); - notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); - - - //userSearchVO.setAdminYn("Y"); - List resultList = notifyManageService.selectMngPagingList(notifyManageVO) ; - - - paginationInfo.setTotalRecordCount(resultList.size() > 0 ? resultList.get(0).getTotCnt() : 0); - model.addAttribute("paginationInfo", paginationInfo); - - model.addAttribute("list", resultList); - }catch(Exception ex) { - ex.printStackTrace(); - } - - - return "cmm/uss/umt/notify/selectList"; - } - - /** - * @methodName : notifyUserReg - * @author : 이호영 - * @date : 2023.12.14 - * @description : 수신자 등록 - * @param notifyManageVO - * @param model - * @return - * @throws Exception - */ - @RequestMapping(value="/uss/umt/notify/notifyUserReg.do") - public String notifyUserReg (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO - , ModelMap model - ) throws Exception { - - UserDefaultVO userSearchVO = new UserDefaultVO(); - - userSearchVO.setFirstIndex(0); - userSearchVO.setRecordCountPerPage(500000); - List adminList = userManageService.selectUserList(userSearchVO) ; - model.addAttribute("adminList", adminList); - - return "cmm/uss/umt/notify/notifyUserReg"; - } - - @RequestMapping(value="/uss/umt/notify/notifyUserModify.do") - public String notifyUserModify (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO - , ModelMap model - ) throws Exception { - - UserDefaultVO userSearchVO = new UserDefaultVO(); - - userSearchVO.setFirstIndex(0); - userSearchVO.setRecordCountPerPage(500000); - List adminList = userManageService.selectUserList(userSearchVO) ; - model.addAttribute("adminList", adminList); - - NotifyManageVO resultVO = notifyManageService.findById(notifyManageVO) ; - model.addAttribute("info", resultVO); - - return "cmm/uss/umt/notify/notifyUserModify"; - } - - /** - * @methodName : notifyUserRegAjax - * @author : 이호영 - * @date : 2023.12.14 - * @description : 수신자 등록 ajax - * @param notifyManageVO - * @param model - * @param request - * @return - * @throws Exception - */ - @RequestMapping("/uss/umt/notify/notifyUserRegAjax.do") - public ModelAndView notifyUserRegAjax( - @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO - , ModelMap model - //, RedirectAttributes redirectAttributes - , HttpServletRequest request - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) { - modelAndView.addObject("result", "loginFail"); - return modelAndView; - } - - //로그인 처리==================================== - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - notifyManageVO.setCmmNotifyMngOrd(veaCmmNotifyMngOrdGnrService.getNextStringId()); // 고유ID); - notifyManageVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id - notifyManageService.mngInsert(notifyManageVO); - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - - - @RequestMapping("/uss/umt/notify/notifyUserModifyAjax.do") - public ModelAndView notifyUserModifyAjax( - @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) { - modelAndView.addObject("result", "loginFail"); - return modelAndView; - } - - //로그인 처리==================================== - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - notifyManageVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id - notifyManageService.mngUpdate(notifyManageVO); - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - @RequestMapping("/uss/umt/notify/notifyUserDelAjax.do") - public ModelAndView notifyUserDelAjax( - @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) { - modelAndView.addObject("result", "loginFail"); - return modelAndView; - } - - //로그인 처리==================================== - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - notifyManageVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id - notifyManageService.mngDel(notifyManageVO); - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - - @RequestMapping(value="/uss/umt/notify/notifyUserDetail.do") - public String notifyUserDetail (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO - , ModelMap model - ) throws Exception { - - UserDefaultVO userSearchVO = new UserDefaultVO(); - -// -// -// userId LIKE '%'||#searchKeyword#||'%' -// -// - - NotifyManageVO resultVO = notifyManageService.findById(notifyManageVO) ; - - - userSearchVO.setSearchKeyword(resultVO.getMngUserId()); - userSearchVO.setSearchCondition("0"); - userSearchVO.setFirstIndex(0); - userSearchVO.setRecordCountPerPage(500000); - List adminList = userManageService.selectUserList(userSearchVO) ; - - - List> filteredList = adminList.stream() - .filter(map -> map instanceof Map) - .map(map -> (Map) map) - .filter(map -> resultVO.getMngUserId().equals(map.get("userId"))) - .collect(Collectors.toList()); - - - resultVO.setMngUserNm(filteredList.get(0).get("userNm").toString()); - model.addAttribute("adminList", adminList); - model.addAttribute("info", resultVO); - - return "cmm/uss/umt/notify/notifyUserDetail"; - } - +package kcc.let.uss.notify.web; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.ComDefaultCodeVO; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.CmmnDetailCode; +import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.let.sec.ram.service.AuthorManageVO; +import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.uss.notify.service.NotifyManageService; +import kcc.let.uss.notify.service.NotifyManageVO; +import kcc.let.uss.umt.service.EgovUserManageService; +import kcc.let.uss.umt.service.UserDefaultVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.oprtn.fndtnEnhanceTrn.prcsInfoMng.web.FndthPrcsInfoMngController; + +/** + * + * 알림 관리자 관리 + * @author 이호영 + * @since 2023.12.14 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2023.12.14  이호영          최초 생성
+ *   
+ *
+ * 
+ */ +@Controller +public class NotifyManageController { + + private static final Logger LOGGER = LoggerFactory.getLogger(NotifyManageController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + @Resource(name = "NotifyManageService") + private NotifyManageService notifyManageService; + + /** userManageService */ + @Resource(name = "userManageService") + private EgovUserManageService userManageService; + + //교육과정순번 + @Resource(name="veaCmmNotifyMngOrdGnrService") + private EgovIdGnrService veaCmmNotifyMngOrdGnrService; + + + + /** + * @methodName : selectCmmnDetailCodeDetail + * @author : 이호영 + * @date : 2023.12.14 + * @description : + * @param notifyManageVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value="/uss/umt/notify/selectList.do") + public String selectList (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + , ModelMap model + ) throws Exception { + + if(notifyManageVO.getPageUnit() != 10) { + notifyManageVO.setPageUnit(notifyManageVO.getPageUnit()); + } + + try{ + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + + + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit()); + paginationInfo.setPageSize(notifyManageVO.getPageSize()); + + notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex()); + notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + + //userSearchVO.setAdminYn("Y"); + List resultList = notifyManageService.selectMngPagingList(notifyManageVO) ; + + + paginationInfo.setTotalRecordCount(resultList.size() > 0 ? resultList.get(0).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + model.addAttribute("list", resultList); + }catch(Exception ex) { + ex.printStackTrace(); + } + + + return "cmm/uss/umt/notify/selectList"; + } + + /** + * @methodName : notifyUserReg + * @author : 이호영 + * @date : 2023.12.14 + * @description : 수신자 등록 + * @param notifyManageVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value="/uss/umt/notify/notifyUserReg.do") + public String notifyUserReg (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + , ModelMap model + ) throws Exception { + + UserDefaultVO userSearchVO = new UserDefaultVO(); + + userSearchVO.setFirstIndex(0); + userSearchVO.setRecordCountPerPage(500000); + List adminList = userManageService.selectUserList(userSearchVO) ; + model.addAttribute("adminList", adminList); + + return "cmm/uss/umt/notify/notifyUserReg"; + } + + @RequestMapping(value="/uss/umt/notify/notifyUserModify.do") + public String notifyUserModify (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + , ModelMap model + ) throws Exception { + + UserDefaultVO userSearchVO = new UserDefaultVO(); + + userSearchVO.setFirstIndex(0); + userSearchVO.setRecordCountPerPage(500000); + List adminList = userManageService.selectUserList(userSearchVO) ; + model.addAttribute("adminList", adminList); + + NotifyManageVO resultVO = notifyManageService.findByMngId(notifyManageVO) ; + model.addAttribute("info", resultVO); + + return "cmm/uss/umt/notify/notifyUserModify"; + } + + /** + * @methodName : notifyUserRegAjax + * @author : 이호영 + * @date : 2023.12.14 + * @description : 수신자 등록 ajax + * @param notifyManageVO + * @param model + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/uss/umt/notify/notifyUserRegAjax.do") + public ModelAndView notifyUserRegAjax( + @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + + //로그인 처리==================================== + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + notifyManageVO.setCmmNotifyMngOrd(veaCmmNotifyMngOrdGnrService.getNextStringId()); // 고유ID); + notifyManageVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + notifyManageService.mngInsert(notifyManageVO); + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + + + @RequestMapping("/uss/umt/notify/notifyUserModifyAjax.do") + public ModelAndView notifyUserModifyAjax( + @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + + //로그인 처리==================================== + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + notifyManageVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + notifyManageService.mngUpdate(notifyManageVO); + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + @RequestMapping("/uss/umt/notify/notifyUserDelAjax.do") + public ModelAndView notifyUserDelAjax( + @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + + //로그인 처리==================================== + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + notifyManageVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id + notifyManageService.mngDel(notifyManageVO); + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + + @RequestMapping(value="/uss/umt/notify/notifyUserDetail.do") + public String notifyUserDetail (@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO + , ModelMap model + ) throws Exception { + + UserDefaultVO userSearchVO = new UserDefaultVO(); + +// +// +// userId LIKE '%'||#searchKeyword#||'%' +// +// + + NotifyManageVO resultVO = notifyManageService.findByMngId(notifyManageVO) ; + + + userSearchVO.setSearchKeyword(resultVO.getMngUserId()); + userSearchVO.setSearchCondition("0"); + userSearchVO.setFirstIndex(0); + userSearchVO.setRecordCountPerPage(500000); + List adminList = userManageService.selectUserList(userSearchVO) ; + + + List> filteredList = adminList.stream() + .filter(map -> map instanceof Map) + .map(map -> (Map) map) + .filter(map -> resultVO.getMngUserId().equals(map.get("userId"))) + .collect(Collectors.toList()); + + + resultVO.setMngUserNm(filteredList.get(0).get("userNm").toString()); + model.addAttribute("adminList", adminList); + model.addAttribute("info", resultVO); + + return "cmm/uss/umt/notify/notifyUserDetail"; + } + } \ No newline at end of file diff --git a/src/main/java/kcc/ve/aplct/adultVisitEdu/eduAplct/service/impl/EduAplctAdultServiceImpl.java b/src/main/java/kcc/ve/aplct/adultVisitEdu/eduAplct/service/impl/EduAplctAdultServiceImpl.java index a14ab456..5f904518 100644 --- a/src/main/java/kcc/ve/aplct/adultVisitEdu/eduAplct/service/impl/EduAplctAdultServiceImpl.java +++ b/src/main/java/kcc/ve/aplct/adultVisitEdu/eduAplct/service/impl/EduAplctAdultServiceImpl.java @@ -1,5 +1,6 @@ package kcc.ve.aplct.adultVisitEdu.eduAplct.service.impl; +import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; @@ -15,6 +16,7 @@ import kcc.com.cmm.service.EgovFileMngService; import kcc.com.cmm.service.FileVO; import kcc.com.utl.user.service.CheckFileUtil; import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.let.uss.notify.service.NotifyManageService; import kcc.let.utl.fcc.service.EgovCryptoUtil; import kcc.ve.aplct.adultVisitEdu.eduAplct.service.EduAplctAdultService; import kcc.ve.cmm.VeConstants; @@ -46,6 +48,10 @@ public class EduAplctAdultServiceImpl implements EduAplctAdultService { //파일정보의 관리 @Resource(name = "EgovFileMngService") private EgovFileMngService fileService; + + //알림 서비스 + @Resource(name = "NotifyManageService") + private NotifyManageService notifyManageService; //과정 관리 @@ -139,6 +145,9 @@ public class EduAplctAdultServiceImpl implements EduAplctAdultService { vEEduChasiVO.setEduAplctOrd(eduAplctOrd); //교육신청순번 vEEduChasiVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id + // 알림을 위한 LIST + List eduChasiOrdList = new ArrayList(); + for (int i=0;i eduChasiOrdList = new ArrayList(); + String bb = null; for (int i=0;i hylee if(StringUtils.isEmpty(vEEduAplctVO.getOrderByQuery())) { vEEduAplctVO.setOrderByQuery("CC.EDU_HOPE_DT desc"); @@ -205,7 +216,10 @@ public class EduAplctMngAdultController { */ @RequestMapping("eduAplctMngDetail.do") public String eduAplctMngDetail( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , ModelMap model ,HttpSession session, HttpServletRequest request ) throws Exception { - + + + notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEEduAplctVO.getCmmNotifyOrd()); + LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; //기본데이터 불러오기 @@ -247,14 +261,18 @@ public class EduAplctMngAdultController { }else { tblUnitOrd = vEEduAplctVO.getEduAplctOrd(); } - - vEAsgnmNotiVO.setTblUniqOrd(tblUnitOrd); - vEAsgnmNotiVO.setFrstRegisterId(user.getUniqId()); - vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); - vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); - - vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); - + + try { + vEAsgnmNotiVO.setTblUniqOrd(tblUnitOrd); + vEAsgnmNotiVO.setFrstRegisterId(user.getUniqId()); + vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); + vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); + + vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); + + } catch (Exception e) { + // TODO: handle exception + } return "oprtn/adultVisitEdu/eduAplctMngDetail"; } diff --git a/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAplctMng/web/EduAplctMngTngrController.java b/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAplctMng/web/EduAplctMngTngrController.java index 1492b033..b6d5965e 100644 --- a/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAplctMng/web/EduAplctMngTngrController.java +++ b/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAplctMng/web/EduAplctMngTngrController.java @@ -36,6 +36,7 @@ import kcc.kccadr.sch.service.SchduleManageService; import kcc.kccadr.sch.service.SchduleManageVO; import kcc.let.uss.ion.cnt.service.CntManageVO; import kcc.let.uss.ion.cnt.service.EgovCntManageService; +import kcc.let.uss.notify.service.NotifyManageService; import kcc.let.uss.umt.service.EgovMberManageService; import kcc.let.uss.umt.service.UserManageVO; import kcc.let.utl.fcc.service.EgovCryptoUtil; @@ -135,7 +136,10 @@ public class EduAplctMngTngrController { //강의설정 관리(MIX) @Resource(name = "vEAStngMixService") private VEAStngMixService vEAStngMixService; - + + @Resource(name = "NotifyManageService") + private NotifyManageService notifyManageService; + /** * 교육신청관리 목록 화면 */ @@ -408,7 +412,12 @@ public class EduAplctMngTngrController { public String eduAplctMngDetail( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , ModelMap model , HttpServletRequest request, HttpSession session ) throws Exception { LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - + + + notifyManageService.updateNotifyChkWhereCmmNotifyOrd(vEEduAplctVO.getCmmNotifyOrd()); + System.out.println("vEEduAplctVO.getCmmNotifyOrd() : "+ vEEduAplctVO.getCmmNotifyOrd()); + + //기본데이터 불러오기 vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); //데이터 복호화 - VO 단위로 만들어서 사용 @@ -452,16 +461,21 @@ public class EduAplctMngTngrController { tblUnitOrd = vEEduAplctVO.getEduAplctOrd(); } - vEAsgnmNotiVO.setTblUniqOrd(tblUnitOrd); - vEAsgnmNotiVO.setFrstRegisterId(user.getUniqId()); - vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); - vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); - vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); + + + try { + vEAsgnmNotiVO.setTblUniqOrd(tblUnitOrd); + vEAsgnmNotiVO.setFrstRegisterId(user.getUniqId()); + vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); + vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); + + vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); + + } catch (Exception e) { + // TODO: handle exception + } - System.out.println("session.getAttribute(menuNo).toString()-since20230424"); - System.out.println(session.toString()); - System.out.println(session.getAttribute("menuNo").toString()); //서류 요청 목록 VEEduAplctVO veEduDocReqVO = new VEEduAplctVO(); @@ -471,6 +485,9 @@ public class EduAplctMngTngrController { vEEduDocReqList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduDocReqList); model.addAttribute("docReqList", vEEduDocReqList); + + + return "oprtn/tngrVisitEdu/eduAplctMngDetail"; } diff --git a/src/main/resources/egovframework/spring/com/context-idgen.xml b/src/main/resources/egovframework/spring/com/context-idgen.xml index 1a0e30da..18cd8b88 100644 --- a/src/main/resources/egovframework/spring/com/context-idgen.xml +++ b/src/main/resources/egovframework/spring/com/context-idgen.xml @@ -3044,5 +3044,20 @@ + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_Mng_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_Mng_SQL_Tibero.xml index 586b7acd..bc4427e5 100644 --- a/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_Mng_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_Mng_SQL_Tibero.xml @@ -47,11 +47,16 @@ FROM a - WHERE USE_YN = 'Y' + WHERE + USE_YN = 'Y' + + AND a.LCTR_DIV_CD = #lctrDivCd# + + OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY; - + /* VEANotifyMngDAO.findByMngId */ SELECT FROM diff --git a/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_SQL_Tibero.xml index 7e459b17..664bc7a2 100644 --- a/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/let/sym/ccm/notify/VEANotify_SQL_Tibero.xml @@ -10,23 +10,23 @@ - VEA_CMM_NOTIFY a + VEA_CMM_NOTIFY CMM_NOTIFY_ORD - TO_USER_ID - NOTIFY_CN - NOTIFY_CHK - LCTR_DIV_CD - NOTIFY_PATH - EDU_APLCT_ORD - EDU_CHASI_ORD - FRST_REGIST_PNTTM - FRST_REGISTER_ID - LAST_UPDT_PNTTM - LAST_UPDUSR_ID + , TO_USER_ID + , NOTIFY_CN + , NOTIFY_CHK + , LCTR_DIV_CD + , NOTIFY_PATH + , EDU_APLCT_ORD + , EDU_CHASI_ORD + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID @@ -47,5 +47,65 @@ + + + /* VEANotifyDAO.insertNotifyEduForAdmin */ + + INSERT INTO ( + + )VALUES( + #cmmNotifyOrd# + , #toUserId# + , #notifyCn# + , #notifyChk# + , #lctrDivCd# + , #notifyPath# + , #eduAplctOrd# + , #eduChasiOrd# + , SYSDATE + , #frstRegisterId# + , '' + , '' + ) + + + + + + + + /* VEANotifyDAO.updateNotifyChkWhereCmmNotifyOrd */ + + UPDATE + + SET + notify_chk = 'Y' + , last_updt_pnttm = SYSDATE + , last_updusr_id = #lastUpdusrId# + WHERE + cmm_notify_ord = #cmmNotifyOrd# + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/notify/selectList.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/notify/selectList.jsp index b23a5e42..a57b2ef1 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/notify/selectList.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/notify/selectList.jsp @@ -1,168 +1,167 @@ - -<%-- - Class Name : EgovUserManage.jsp - Description : 사용자관리(조회,삭제) JSP - Modification Information - - 수정일 수정자 수정내용 - ------- -------- --------------------------- - 2009.03.03 JJY 최초 생성 - 2011.08.31 JJY 경량환경 버전 생성 - - author : 공통서비스 개발팀 JJY - since : 2009.03.03 ---%> -<%@ page 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 prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> -<%@ taglib prefix="double-submit" uri="http://www.egovframe.go.kr/tags/double-submit/jsp" %> -<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> - - - - - -사용자 목록 - - - - -
- -
-
- - " /> - " /> -
-
-
-

알림수신자관리

-
    -
  • -
  • -

    관리자관리

    -
  • -
  • 알림수신자관리
  • -
-
- -
- -
-

총 건수 :

-
- <%-- - - - - - - - - --%> -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
담당자ID관련영역등록일
- - - - - -
-
- - - -
-
-
-
- -
-
- - - - -
- -
- -
- -
-
-
-
- -
- - + +<%-- + Class Name : EgovUserManage.jsp + Description : 사용자관리(조회,삭제) JSP + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2009.03.03 JJY 최초 생성 + 2011.08.31 JJY 경량환경 버전 생성 + + author : 공통서비스 개발팀 JJY + since : 2009.03.03 +--%> +<%@ page 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 prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="double-submit" uri="http://www.egovframe.go.kr/tags/double-submit/jsp" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> + + + + + +사용자 목록 + + + + +
+ +
+
+ + " /> + " /> +
+
+
+

알림수신자관리

+
    +
  • +
  • +

    관리자관리

    +
  • +
  • 알림수신자관리
  • +
+
+ +
+ +
+

총 건수 :

+
+ <%-- + + + + + + + + --%> +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
담당자ID관련영역등록일
+ + + + + +
+
+ + + +
+
+
+
+ +
+
+ + + +
+ +
+ +
+ +
+
+
+
+ +
+ + diff --git a/src/main/webapp/WEB-INF/jsp/main/EgovMainDetail.jsp b/src/main/webapp/WEB-INF/jsp/main/EgovMainDetail.jsp new file mode 100644 index 00000000..da87625a --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/main/EgovMainDetail.jsp @@ -0,0 +1,128 @@ + +<%@ 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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<% + /** + * @Class Name : fndthEduPrcsMngReg.jsp + * @Description : 기반강화연수 과정 등록 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.16 조용준 최초 생성 + * @author 조용주 + * @since 2021.12.16 + * @version 1.0 + * @see + * + */ +%> + + +교육과정관리 + + + + + +
+ + + + +
+
+ + +
+

알림상세

+
    +
  • + + + +
  • 알림상세
  • +
+
+ + +
+ +
+

알림 상세

+
+
+ + + + + + + + + + + + + + + + + + + + + +
분류 + +
알림 메세지 + ${info.notifyCn } +
바로가기 + + +
+
+ + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/main/EgovMainList.jsp b/src/main/webapp/WEB-INF/jsp/main/EgovMainList.jsp new file mode 100644 index 00000000..a766a2f0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/main/EgovMainList.jsp @@ -0,0 +1,173 @@ + +<%-- + Class Name : EgovUserManage.jsp + Description : 사용자관리(조회,삭제) JSP + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2009.03.03 JJY 최초 생성 + 2011.08.31 JJY 경량환경 버전 생성 + + author : 공통서비스 개발팀 JJY + since : 2009.03.03 +--%> +<%@ page 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 prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="double-submit" uri="http://www.egovframe.go.kr/tags/double-submit/jsp" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> + + + + + +관리자 목록 + + + + +
+ +
+
+ + " /> + " /> +
+
+
+

알림목록

+
    +
  • + + + +
  • 알림목록
  • +
+
+ +
+ +
+

총 건수 :

+
+ <%-- + + + + + + + + --%> +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
확인여부분야메세지등록일
+ + + new + + + 확인완료 + + + + + + + + +
+
+ + + +
+
+
+
+ +
+
+ + + +
+ +
+
+ +
+
+
+
+ +
+ + diff --git a/src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp b/src/main/webapp/WEB-INF/jsp/main/EgovMainView_bakup_20231215.jsp similarity index 100% rename from src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp rename to src/main/webapp/WEB-INF/jsp/main/EgovMainView_bakup_20231215.jsp