From b6e4effa14de7b74b9784c2de908dcf5fc354a18 Mon Sep 17 00:00:00 2001 From: hehih Date: Thu, 2 Nov 2023 16:48:38 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EA=B8=B0?= =?UTF-8?q?=EC=86=8C=EC=9C=A0=EC=98=88=20-=20=EC=B2=A8=EB=B6=80=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EA=B8=B0=EB=8A=A5,=20=EA=B4=80=ED=95=A0=EC=B2=AD=20?= =?UTF-8?q?=EA=B3=B5=ED=86=B5=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/uat/uia/web/EgovLoginController.java | 4896 +++++++++-------- .../kcc/let/utl/fcc/service/VEPagingUtil.java | 558 +- .../endInfo/web/VEAdultEduEndController.java | 1682 +++--- .../web/EduRsltMngAdultController.java | 996 ++-- .../web/EduSchdlMngAdultController.java | 710 +-- .../trgtMng/service/CndtnTrgtMngVO.java | 7 + .../trgtMng/web/CndtnTrgtMngController.java | 107 +- .../spring/com/context-crypto.xml | 62 +- .../spring/com/context-properties.xml | 54 +- .../sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml | 472 +- .../ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml | 6 +- .../sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml | 704 +-- src/main/resources/log4j2.xml | 90 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp | 13 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp | 2 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp | 187 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp | 197 +- src/main/webapp/js/ncms_common_sendmail.js | 758 +-- src/main/webapp/js/util.js | 268 +- 19 files changed, 6074 insertions(+), 5695 deletions(-) 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 0cdea4f2..9ff8f4b6 100644 --- a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java @@ -1,2448 +1,2450 @@ -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); - - 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); - - 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_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); + + 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); + + 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/utl/fcc/service/VEPagingUtil.java b/src/main/java/kcc/let/utl/fcc/service/VEPagingUtil.java index f2add14c..864152af 100644 --- a/src/main/java/kcc/let/utl/fcc/service/VEPagingUtil.java +++ b/src/main/java/kcc/let/utl/fcc/service/VEPagingUtil.java @@ -1,280 +1,280 @@ -package kcc.let.utl.fcc.service; - -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO; - -/** - * - * paging 에 대한 Util 클래스 - * @author 사업기술본부 조용준(ITN) - * @since 2021.07.16 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2021.07.16  조용준          최초 생성 *   
- *
- * 
- */ -@Component("vEPagingUtil") -public class VEPagingUtil { - - private static final Logger LOGGER = LoggerFactory.getLogger(VEPagingUtil.class); - - - ////////////////////////////////////////////////// - // - // VEInstrAsgnmVO paging - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - public PaginationInfo setPagingStep1_VEInstrAsgnmVO( - PaginationInfo p_paginationInfo, - VEInstrAsgnmVO p_VEInstrAsgnmVO - ){ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrAsgnmVO()"); - - // pageing step1 - p_paginationInfo.setCurrentPageNo(p_VEInstrAsgnmVO.getPageIndex()); - p_paginationInfo.setRecordCountPerPage(p_VEInstrAsgnmVO.getPageUnit()); - p_paginationInfo.setPageSize(p_VEInstrAsgnmVO.getPageSize()); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - public VEInstrAsgnmVO setPagingStep2_VEInstrAsgnmVO( - VEInstrAsgnmVO p_VEInstrAsgnmVO - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); - - // pageing step2 - p_VEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_VEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_VEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_VEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_VEInstrAsgnmVO.setSearchSortCnd("prcs_ord"); - p_VEInstrAsgnmVO.setSearchSortOrd("desc"); - } - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_VEInstrAsgnmVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - public PaginationInfo setPagingStep3_VEInstrAsgnmVO( - List p_VEInstrAsgnmVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrAsgnmVO()"); - - // pageing step3 - int totCnt = 0; - if(p_VEInstrAsgnmVOList.size() > 0) totCnt = p_VEInstrAsgnmVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - ////////////////////////////////////////////////// - // - // VELctrDetailVO paging - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - public PaginationInfo setPagingStep1_VELctrDetailVO( - PaginationInfo p_paginationInfo, - VELctrDetailVO p_VELctrDetailVO - ){ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep1_VELctrDetailVO()"); - - // pageing step1 - p_paginationInfo.setCurrentPageNo(p_VELctrDetailVO.getPageIndex()); - p_paginationInfo.setRecordCountPerPage(p_VELctrDetailVO.getPageUnit()); - p_paginationInfo.setPageSize(p_VELctrDetailVO.getPageSize()); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - public VELctrDetailVO setPagingStep2_VELctrDetailVO( - VELctrDetailVO p_VELctrDetailVO - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); - - // pageing step2 - p_VELctrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_VELctrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_VELctrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_VELctrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_VELctrDetailVO.setSearchSortCnd("prcs_ord"); - p_VELctrDetailVO.setSearchSortOrd("desc"); - } - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_VELctrDetailVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - public PaginationInfo setPagingStep3_VELctrDetailVO( - List p_VELctrDetailVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep3_VELctrDetailVO()"); - - // pageing step3 - int totCnt = 0; - if(p_VELctrDetailVOList.size() > 0) totCnt = p_VELctrDetailVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - - ////////////////////////////////////////////////// - // - // VEInstrDetailVO paging - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - public PaginationInfo setPagingStep1_VEInstrDetailVO( - PaginationInfo p_paginationInfo, - VEInstrDetailVO p_VEInstrDetailVO - ){ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrDetailVO()"); - - // pageing step1 - p_paginationInfo.setCurrentPageNo(p_VEInstrDetailVO.getPageIndex()); - p_paginationInfo.setRecordCountPerPage(p_VEInstrDetailVO.getPageUnit()); - p_paginationInfo.setPageSize(p_VEInstrDetailVO.getPageSize()); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - public VEInstrDetailVO setPagingStep2_VEInstrDetailVO( - VEInstrDetailVO p_VEInstrDetailVO - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep2_p_VEInstrDetailVO()"); - - // pageing step2 - p_VEInstrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_VEInstrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_VEInstrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_VEInstrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_VEInstrDetailVO.setSearchSortCnd("prcs_ord"); - p_VEInstrDetailVO.setSearchSortOrd("desc"); - } - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_VEInstrDetailVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - public PaginationInfo setPagingStep3_VEInstrDetailVO( - List p_VEInstrDetailVO - - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrDetailVO()"); - - // pageing step3 - int totCnt = 0; - if(p_VEInstrDetailVO.size() > 0) totCnt = p_VEInstrDetailVO.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } +package kcc.let.utl.fcc.service; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO; + +/** + * + * paging 에 대한 Util 클래스 + * @author 사업기술본부 조용준(ITN) + * @since 2021.07.16 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.07.16  조용준          최초 생성 *   
+ *
+ * 
+ */ +@Component("vEPagingUtil") +public class VEPagingUtil { + + private static final Logger LOGGER = LoggerFactory.getLogger(VEPagingUtil.class); + + + ////////////////////////////////////////////////// + // + // VEInstrAsgnmVO paging + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + public PaginationInfo setPagingStep1_VEInstrAsgnmVO( + PaginationInfo p_paginationInfo, + VEInstrAsgnmVO p_VEInstrAsgnmVO + ){ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrAsgnmVO()"); + + // pageing step1 + p_paginationInfo.setCurrentPageNo(p_VEInstrAsgnmVO.getPageIndex()); + p_paginationInfo.setRecordCountPerPage(p_VEInstrAsgnmVO.getPageUnit()); + p_paginationInfo.setPageSize(p_VEInstrAsgnmVO.getPageSize()); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + public VEInstrAsgnmVO setPagingStep2_VEInstrAsgnmVO( + VEInstrAsgnmVO p_VEInstrAsgnmVO + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); + + // pageing step2 + p_VEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_VEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_VEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_VEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_VEInstrAsgnmVO.setSearchSortCnd("prcs_ord"); + p_VEInstrAsgnmVO.setSearchSortOrd("desc"); + } + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_VEInstrAsgnmVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + public PaginationInfo setPagingStep3_VEInstrAsgnmVO( + List p_VEInstrAsgnmVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrAsgnmVO()"); + + // pageing step3 + int totCnt = 0; + if(p_VEInstrAsgnmVOList.size() > 0) totCnt = p_VEInstrAsgnmVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + ////////////////////////////////////////////////// + // + // VELctrDetailVO paging + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + public PaginationInfo setPagingStep1_VELctrDetailVO( + PaginationInfo p_paginationInfo, + VELctrDetailVO p_VELctrDetailVO + ){ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep1_VELctrDetailVO()"); + + // pageing step1 + p_paginationInfo.setCurrentPageNo(p_VELctrDetailVO.getPageIndex()); + p_paginationInfo.setRecordCountPerPage(p_VELctrDetailVO.getPageUnit()); + p_paginationInfo.setPageSize(p_VELctrDetailVO.getPageSize()); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + public VELctrDetailVO setPagingStep2_VELctrDetailVO( + VELctrDetailVO p_VELctrDetailVO + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); + + // pageing step2 + p_VELctrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_VELctrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_VELctrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_VELctrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_VELctrDetailVO.setSearchSortCnd("prcs_ord"); + p_VELctrDetailVO.setSearchSortOrd("desc"); + } + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_VELctrDetailVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + public PaginationInfo setPagingStep3_VELctrDetailVO( + List p_VELctrDetailVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep3_VELctrDetailVO()"); + + // pageing step3 + int totCnt = 0; + if(p_VELctrDetailVOList.size() > 0) totCnt = p_VELctrDetailVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + + ////////////////////////////////////////////////// + // + // VEInstrDetailVO paging + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + public PaginationInfo setPagingStep1_VEInstrDetailVO( + PaginationInfo p_paginationInfo, + VEInstrDetailVO p_VEInstrDetailVO + ){ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrDetailVO()"); + + // pageing step1 + p_paginationInfo.setCurrentPageNo(p_VEInstrDetailVO.getPageIndex()); + p_paginationInfo.setRecordCountPerPage(p_VEInstrDetailVO.getPageUnit()); + p_paginationInfo.setPageSize(p_VEInstrDetailVO.getPageSize()); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + public VEInstrDetailVO setPagingStep2_VEInstrDetailVO( + VEInstrDetailVO p_VEInstrDetailVO + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep2_p_VEInstrDetailVO()"); + + // pageing step2 + p_VEInstrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_VEInstrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_VEInstrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_VEInstrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_VEInstrDetailVO.setSearchSortCnd("prcs_ord"); + p_VEInstrDetailVO.setSearchSortOrd("desc"); + } + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_VEInstrDetailVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + public PaginationInfo setPagingStep3_VEInstrDetailVO( + List p_VEInstrDetailVO + + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrDetailVO()"); + + // pageing step3 + int totCnt = 0; + if(p_VEInstrDetailVO.size() > 0) totCnt = p_VEInstrDetailVO.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } } \ No newline at end of file diff --git a/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java b/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java index 72bb6b93..928adc42 100644 --- a/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java +++ b/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java @@ -1,841 +1,841 @@ -package kcc.ve.instr.adultVisitEdu.endInfo.web; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.net.URLEncoder; -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.util.FileCopyUtils; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartHttpServletRequest; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; - -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.com.cmm.EgovMessageSource; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.FileVO; -import kcc.com.cmm.util.IpUtil; -import kcc.com.cmm.web.EgovFileDownloadController; -import kcc.com.utl.user.service.CheckFileUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.sch.service.SchduleManageService; -import kcc.kccadr.sch.service.SchduleManageVO; -import kcc.let.uat.uia.service.SsoLoginVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.let.utl.fcc.service.EgovCryptoUtil4VO; -import kcc.ve.cmm.VeConstants; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; -import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; -import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRsltRprtService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; - - -@Controller -public class VEAdultEduEndController { - - // eGov 공통 메세지 - @Resource(name = "egovMessageSource") - EgovMessageSource egovMessageSource; - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - //강사상세 정보 - @Resource(name="vEInstrDetailService") - private VEInstrDetailService vEInstrDetailService; - - //결과보고 - @Resource(name="vEEduRsltRprtService") - private VEEduRsltRprtService vEEduRsltRprtService; - - //배정 MIX 정보 - @Resource(name="vEAsgnmMIXService") - private VEAsgnmMIXService vEAsgnmMIXService; - - //강의 - @Resource(name="vEPrcsService") - private VEPrcsService vEPrcsService; - - //강사료 - @Resource(name="vEInstrFeeService") - private VEInstrFeeService vEInstrFeeService; - - //숙박 - @Resource(name="vEAcmdtAplctService") - private VEAcmdtAplctService vEAcmdtAplctService; - - //VO 암/복호화 - @Resource(name="egovCryptoUtil4VO") - private EgovCryptoUtil4VO egovCryptoUtil4VO; - - // 파일첨부 - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - //파일 체크 util - @Resource(name = "checkFileUtil") - private CheckFileUtil checkFileUtil; - - //NOTI 서비스 - @Resource(name="vEAsgnmNotiService") - private VEAsgnmNotiService vEAsgnmNotiService; - - //일정 정보 - @Resource(name = "schduleManageService") - private SchduleManageService schduleManageService; - - private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); - - /** - * 브라우저 구분 얻기. - * - * @param request - * @return - */ - private String getBrowser(HttpServletRequest request) { - String header = request.getHeader("User-Agent"); - if (header.indexOf("MSIE") > -1) { - return "MSIE"; - } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 - return "Trident"; - } else if (header.indexOf("Chrome") > -1) { - return "Chrome"; - } else if (header.indexOf("Opera") > -1) { - return "Opera"; - } - return "Firefox"; - } - - //청소년강사 강의 종료교육 목록 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do") - public String instrEduEndList( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , ModelMap model - , RedirectAttributes redirectAttributes - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - if (loginVO == null || ssoLoginVO == null) { - return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - - //3.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); - - - //4. pageing step2 - vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); - - vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); - vEInstrAsgnmVO.setInstrDiv("20"); - vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - vEInstrAsgnmVO.setMenuNo("9991300"); - } - - List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); - - //6.pageing step3 - paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); - - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList"; - } - - //청소년강사 강의 종료교육 목록 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do") - public String instrEduEndSchdl( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , ModelMap model - , RedirectAttributes redirectAttributes - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - if (loginVO == null || ssoLoginVO == null) { - return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - - //3.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); - - - //4. pageing step2 - vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); - - vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); - vEInstrAsgnmVO.setInstrDiv("20"); - vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - vEInstrAsgnmVO.setMenuNo("9991300"); - } - - List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); - - //6.pageing step3 - paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); - - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl"; - } - - @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do") - @ResponseBody - public List adultSchduleManagerAjaxLoadData(@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO, ModelMap model) throws Exception { - schduleManageVO.setAprvlCd("60"); - schduleManageVO.setLctrDivCd("10"); - - schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", "")); - - return schduleManageService.selectSchManageStatusList(schduleManageVO); - } - - //청소년강사 강의 종료교육 상세 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do") - public String instrEduEndDetail( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , ModelMap model - , RedirectAttributes redirectAttributes - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - try{ - System.out.println("adultVisitEdu-endInfo-instrEduEndDetail"); - //로그인 처리==================================== - //로그인 정보 가져오기 - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - if (loginVO == null || ssoLoginVO == null) { - return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - // 교육차시 강사배정 정보 - VEInstrAsgnmVO vEInstrAsgnmVOInfo = new VEInstrAsgnmVO(); - vEInstrAsgnmVOInfo = vEAsgnmMIXService.selectAsgnmRqstDetail(vEInstrAsgnmVO); - - // 강사 상세정보 - VEInstrDetailVO vEInstrDetailVOInfo = new VEInstrDetailVO(); - vEInstrDetailVOInfo.setInstrDiv("20"); - vEInstrDetailVOInfo.setUserId(loginVO.getUniqId()); - vEInstrDetailVOInfo.setUseYn("Y"); - vEInstrDetailVOInfo = vEInstrDetailService.selectDetail(vEInstrDetailVOInfo); - if (vEInstrDetailVOInfo != null) { - //데이터 복호화 - VO 단위로 만들어서 사용 - VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); - vEEduAplctVO.setInstrNm(vEInstrDetailVOInfo.getInstrNm()); - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - vEInstrDetailVOInfo.setInstrNm(vEEduAplctVO.getInstrNm()); - } - - //강사료 - VEInstrFeeAcmdtVO instrFee = new VEInstrFeeAcmdtVO(); - instrFee.setEduAplctOrd(vEInstrAsgnmVO.getEduAplctOrd()); - instrFee.setEduChasiOrd(vEInstrAsgnmVO.getEduChasiOrd()); - - instrFee = vEInstrFeeService.selectDetail(instrFee); - - //강사료 제외 합계 - int instrFeeSum = Integer.parseInt(instrFee.getInstrFee()) - + Integer.parseInt(instrFee.getBsnsTripFee()) - + Integer.parseInt(instrFee.getSpareFee()); - instrFee.setInstrFeeSum(instrFeeSum); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setUseYn("Y"); - vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); - List vEPrcsDetailVOList = vEPrcsService.selectTngrPrcsList(vEPrcsDetailVO); - model.addAttribute("prcsList", vEPrcsDetailVOList); - - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEInstrAsgnmVOInfo != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEInstrAsgnmVOInfo.getLctrPlanAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("eduAplctOrd", vEInstrAsgnmVO.getEduAplctOrd()); - model.addAttribute("eduChasiOrd", vEInstrAsgnmVO.getEduChasiOrd()); - model.addAttribute("info", vEInstrAsgnmVOInfo); - model.addAttribute("info2", vEInstrDetailVOInfo); - model.addAttribute("instrFee", instrFee); - model.addAttribute("cryptoUtil",egovCryptoUtil); - - //20220222 우영두 추가 - //강의내역 NOTI 입력 - VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); - - vEAsgnmNotiVO.setTblUniqOrd(vEInstrAsgnmVO.getEduChasiOrd()); - vEAsgnmNotiVO.setFrstRegisterId(loginVO.getUniqId()); - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - } - - vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); - - vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); - - }catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail"; - } - - /** - * 결과보고 팝업 - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop.do") - public String filePopup( - @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO - ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - try { - vEEduRprtVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEEduRprtVO != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEEduRprtVO.getAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - model.addAttribute("vEEduRprtVO", vEEduRprtVO); - model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); - } - catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop"; - } - - /** - * 숙박신청자 영수증 등록 팝업 - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtRegPop.do") - public String eduAcmdtRegPop( - @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO - ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - try { - vEInstrFeeAcmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEInstrFeeAcmdtVO != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEInstrFeeAcmdtVO.getAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - model.addAttribute("vEInstrFeeAcmdtVO", vEInstrFeeAcmdtVO); - model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); - } - catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPop"; - } - - /** - * 결과보고 Ajax - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtPopupAjax.do") - public ModelAndView filePopupAjax( - @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO - , ModelMap model - //, RedirectAttributes redirectAttributes - , HttpServletRequest request - , final MultipartHttpServletRequest multiRequest - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - /* - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if (!"".equals(s_userCheckNInfo)) { - modelAndView.addObject("result", "loginFail"); - return modelAndView; - } - */ - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - //로그인 처리==================================== - - - //step2.파일 처리==================================== - //파일 정상 처리 여부와 첨부 파일 정보 - //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); - //파일 제한 수량 가져오기, 없으면 기본값 사용 - int i_file_limit = checkFileUtil.getLimitCount(request); // file count - int i_limit_size = checkFileUtil.getLimitSize(request); // file MB - String s_file_exts = checkFileUtil.getS_exts(); // file exts - - - //step2.기존 첨부파일 체크 후 저장 하기 - String s_atchFileId = ""; - VEEduRprtVO fileVEEduAplctVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); - if (fileVEEduAplctVO != null) { - s_atchFileId = fileVEEduAplctVO.getAtchFileId(); - } - - //DB에서 실제 첨부파일 존재 여부 확인 - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(s_atchFileId); - List result = fileService.selectFileInfs(fileVO); - if (result.size()<=0) { - s_atchFileId = ""; - } - - if ("".equals(s_atchFileId)) { - s_atchFileId = checkFileUtil.fileValCheckNdbInsert( - multiRequest, modelAndView - , "EDURSLTRPRT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - ); //EXT, MB size and ea - }else { - s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( - multiRequest, modelAndView - , "EDURSLTRPRT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - , s_atchFileId - ); - } - - if ("ERROR".equals(s_atchFileId)) return modelAndView; - - //step2.파일 처리==================================== - - try { - //결과 저장 - vEEduRprtVO.setAtchFileId(s_atchFileId); - - //최초등록 시 - if(fileVEEduAplctVO == null) { - vEEduRprtVO.setFrstRegisterId(loginVO.getUniqId()); - } else { //수정 시 - vEEduRprtVO.setLastUpdusrId(loginVO.getUniqId()); - } - - vEEduRsltRprtService.insert(vEEduRprtVO); - - }catch(Exception ex) { - System.out.println("Exception vEEduRsltRprtService.insert"); - } - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - /** - * 영수증 등록 Ajax - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPopupAjax.do") - public ModelAndView eduAcmdtPopupAjax( - @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO - , ModelMap model - //, RedirectAttributes redirectAttributes - , HttpServletRequest request - , final MultipartHttpServletRequest multiRequest - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - /* - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if (!"".equals(s_userCheckNInfo)) { - modelAndView.addObject("result", "loginFail"); - return modelAndView; - } - */ - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - //로그인 처리==================================== - - - //step2.파일 처리==================================== - //파일 정상 처리 여부와 첨부 파일 정보 - //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); - //파일 제한 수량 가져오기, 없으면 기본값 사용 - int i_file_limit = checkFileUtil.getLimitCount(request); // file count - int i_limit_size = checkFileUtil.getLimitSize(request); // file MB - String s_file_exts = checkFileUtil.getS_exts(); // file exts - - - //step2.기존 첨부파일 체크 후 저장 하기 - String s_atchFileId = ""; - VEInstrFeeAcmdtVO acmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); - s_atchFileId = acmdtVO.getAtchFileId(); - - //DB에서 실제 첨부파일 존재 여부 확인 - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(s_atchFileId); - List result = fileService.selectFileInfs(fileVO); - if (result.size()<=0) { - s_atchFileId = ""; - } - - if ("".equals(s_atchFileId)) { - s_atchFileId = checkFileUtil.fileValCheckNdbInsert( - multiRequest, modelAndView - , "ACMDTRECEIPT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - ); //EXT, MB size and ea - }else { - s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( - multiRequest, modelAndView - , "ACMDTRECEIPT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - , s_atchFileId - ); - } - - if ("ERROR".equals(s_atchFileId)) return modelAndView; - - //step2.파일 처리==================================== - - try { - //결과 저장 - vEInstrFeeAcmdtVO.setAtchFileId(s_atchFileId); - vEInstrFeeAcmdtVO.setLastUpdusrId(loginVO.getUniqId()); - - vEAcmdtAplctService.update(vEInstrFeeAcmdtVO); - - }catch(Exception ex) { - System.out.println("Exception vEAcmdtAplctService.update"); - } - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - //첨부파일 이름 변경하여 다운로드 - /** - * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. - * - * @param commandMap - * @param response - * @throws Exception - */ - @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/FileDown.do") - public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { - - String atchFileId = (String) commandMap.get("atchFileId"); - String fileSn = (String) commandMap.get("fileSn"); - String newFileNm = (String) commandMap.get("newFileNm"); - - /*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();*/ - - /*if (isAuthenticated) {*/ - - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(atchFileId); - fileVO.setFileSn(fileSn); - FileVO fvo = fileService.selectFileInf(fileVO); - if(fvo == null){ - response.setContentType("application/x-msdownload"); - PrintWriter printwriter = response.getWriter(); - printwriter.println(""); - printwriter.println("


Could not get file name:

"); - printwriter.println("


Back

"); - printwriter.println("


© webAccess"); - printwriter.println(""); - printwriter.flush(); - printwriter.close(); - return ; - } - - File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); - long fSize = uFile.length(); - - if (fSize > 0) { - String mimetype = "application/x-msdownload"; - - response.setContentType(mimetype); -// setDisposition(fvo.getOrignlFileNm(), request, response); - setDisposition(newFileNm+"."+fvo.getFileExtsn(), request, response); //받아온 파일명으로 다운로드 실행 - //response.setContentLength(fSize); - - BufferedInputStream in = null; - BufferedOutputStream out = null; - - try { - in = new BufferedInputStream(new FileInputStream(uFile)); - out = new BufferedOutputStream(response.getOutputStream()); - - FileCopyUtils.copy(in, out); - out.flush(); - } catch (Exception ex) { - LOGGER.debug("IGNORED: {}", ex.getMessage()); - } finally { - if (in != null) { - try { - in.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); - } - } - if (out != null) { - try { - out.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); - } - } - } - - } else { - response.setContentType("application/x-msdownload"); - - PrintWriter printwriter = response.getWriter(); - printwriter.println(""); - printwriter.println("


Could not get file name:
" + fvo.getOrignlFileNm() + "

"); - printwriter.println("


Back

"); - printwriter.println("


© webAccess"); - printwriter.println(""); - printwriter.flush(); - printwriter.close(); - } - /*}*/ - } - - - - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEInstrAsgnmVO p_vEInstrAsgnmVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEInstrAsgnmVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEInstrAsgnmVO.getPageUnit()); - paginationInfo.setPageSize(p_vEInstrAsgnmVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEInstrAsgnmVO setPagingStep2( - VEInstrAsgnmVO p_vEInstrAsgnmVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEInstrAsgnmVO.setSearchSortCnd("user_id"); - p_vEInstrAsgnmVO.setSearchSortOrd("desc"); - } - - return p_vEInstrAsgnmVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEInstrAsgnmVOList - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEInstrAsgnmVOList.size() > 0) totCnt = p_vEInstrAsgnmVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } - - /** - * Disposition 지정하기. - * - * @param filename - * @param request - * @param response - * @throws Exception - */ - private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception { - String browser = getBrowser(request); - - String dispositionPrefix = "attachment; filename="; - String encodedFilename = null; - - if (browser.equals("MSIE")) { - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Firefox")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Opera")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Chrome")) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < filename.length(); i++) { - char c = filename.charAt(i); - if (c > '~') { - sb.append(URLEncoder.encode("" + c, "UTF-8")); - } else { - sb.append(c); - } - } - encodedFilename = sb.toString(); - } else { - //throw new RuntimeException("Not supported browser"); - throw new IOException("Not supported browser"); - } - -// response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); // 파일명에 콤마 포함시 오류 - response.setHeader("Content-Disposition", dispositionPrefix + "\"" + encodedFilename + "\""); - - if ("Opera".equals(browser)) { - response.setContentType("application/octet-stream;charset=UTF-8"); - } - } - -} +package kcc.ve.instr.adultVisitEdu.endInfo.web; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.EgovMessageSource; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.util.IpUtil; +import kcc.com.cmm.web.EgovFileDownloadController; +import kcc.com.utl.user.service.CheckFileUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.sch.service.SchduleManageService; +import kcc.kccadr.sch.service.SchduleManageVO; +import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.let.utl.fcc.service.EgovCryptoUtil4VO; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; +import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; +import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRsltRprtService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; + + +@Controller +public class VEAdultEduEndController { + + // eGov 공통 메세지 + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + //강사상세 정보 + @Resource(name="vEInstrDetailService") + private VEInstrDetailService vEInstrDetailService; + + //결과보고 + @Resource(name="vEEduRsltRprtService") + private VEEduRsltRprtService vEEduRsltRprtService; + + //배정 MIX 정보 + @Resource(name="vEAsgnmMIXService") + private VEAsgnmMIXService vEAsgnmMIXService; + + //강의 + @Resource(name="vEPrcsService") + private VEPrcsService vEPrcsService; + + //강사료 + @Resource(name="vEInstrFeeService") + private VEInstrFeeService vEInstrFeeService; + + //숙박 + @Resource(name="vEAcmdtAplctService") + private VEAcmdtAplctService vEAcmdtAplctService; + + //VO 암/복호화 + @Resource(name="egovCryptoUtil4VO") + private EgovCryptoUtil4VO egovCryptoUtil4VO; + + // 파일첨부 + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + //파일 체크 util + @Resource(name = "checkFileUtil") + private CheckFileUtil checkFileUtil; + + //NOTI 서비스 + @Resource(name="vEAsgnmNotiService") + private VEAsgnmNotiService vEAsgnmNotiService; + + //일정 정보 + @Resource(name = "schduleManageService") + private SchduleManageService schduleManageService; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); + + /** + * 브라우저 구분 얻기. + * + * @param request + * @return + */ + private String getBrowser(HttpServletRequest request) { + String header = request.getHeader("User-Agent"); + if (header.indexOf("MSIE") > -1) { + return "MSIE"; + } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 + return "Trident"; + } else if (header.indexOf("Chrome") > -1) { + return "Chrome"; + } else if (header.indexOf("Opera") > -1) { + return "Opera"; + } + return "Firefox"; + } + + //청소년강사 강의 종료교육 목록 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do") + public String instrEduEndList( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + if (loginVO == null || ssoLoginVO == null) { + return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + + //3.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); + + + //4. pageing step2 + vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); + + vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); + vEInstrAsgnmVO.setInstrDiv("20"); + vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + vEInstrAsgnmVO.setMenuNo("9991300"); + } + + List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); + + //6.pageing step3 + paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); + + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList"; + } + + //청소년강사 강의 종료교육 목록 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do") + public String instrEduEndSchdl( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + if (loginVO == null || ssoLoginVO == null) { + return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + + //3.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); + + + //4. pageing step2 + vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); + + vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); + vEInstrAsgnmVO.setInstrDiv("20"); + vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + vEInstrAsgnmVO.setMenuNo("9991300"); + } + + List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); + + //6.pageing step3 + paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); + + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl"; + } + + @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do") + @ResponseBody + public List adultSchduleManagerAjaxLoadData(@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO, ModelMap model) throws Exception { + schduleManageVO.setAprvlCd("60"); + schduleManageVO.setLctrDivCd("10"); + + schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", "")); + + return schduleManageService.selectSchManageStatusList(schduleManageVO); + } + + //청소년강사 강의 종료교육 상세 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do") + public String instrEduEndDetail( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + try{ + System.out.println("adultVisitEdu-endInfo-instrEduEndDetail"); + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + if (loginVO == null || ssoLoginVO == null) { + return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + // 교육차시 강사배정 정보 + VEInstrAsgnmVO vEInstrAsgnmVOInfo = new VEInstrAsgnmVO(); + vEInstrAsgnmVOInfo = vEAsgnmMIXService.selectAsgnmRqstDetail(vEInstrAsgnmVO); + + // 강사 상세정보 + VEInstrDetailVO vEInstrDetailVOInfo = new VEInstrDetailVO(); + vEInstrDetailVOInfo.setInstrDiv("20"); + vEInstrDetailVOInfo.setUserId(loginVO.getUniqId()); + vEInstrDetailVOInfo.setUseYn("Y"); + vEInstrDetailVOInfo = vEInstrDetailService.selectDetail(vEInstrDetailVOInfo); + if (vEInstrDetailVOInfo != null) { + //데이터 복호화 - VO 단위로 만들어서 사용 + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + vEEduAplctVO.setInstrNm(vEInstrDetailVOInfo.getInstrNm()); + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + vEInstrDetailVOInfo.setInstrNm(vEEduAplctVO.getInstrNm()); + } + + //강사료 + VEInstrFeeAcmdtVO instrFee = new VEInstrFeeAcmdtVO(); + instrFee.setEduAplctOrd(vEInstrAsgnmVO.getEduAplctOrd()); + instrFee.setEduChasiOrd(vEInstrAsgnmVO.getEduChasiOrd()); + + instrFee = vEInstrFeeService.selectDetail(instrFee); + + //강사료 제외 합계 + int instrFeeSum = Integer.parseInt(instrFee.getInstrFee()) + + Integer.parseInt(instrFee.getBsnsTripFee()) + + Integer.parseInt(instrFee.getSpareFee()); + instrFee.setInstrFeeSum(instrFeeSum); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setUseYn("Y"); + vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); + List vEPrcsDetailVOList = vEPrcsService.selectTngrPrcsList(vEPrcsDetailVO); + model.addAttribute("prcsList", vEPrcsDetailVOList); + + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEInstrAsgnmVOInfo != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEInstrAsgnmVOInfo.getLctrPlanAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("eduAplctOrd", vEInstrAsgnmVO.getEduAplctOrd()); + model.addAttribute("eduChasiOrd", vEInstrAsgnmVO.getEduChasiOrd()); + model.addAttribute("info", vEInstrAsgnmVOInfo); + model.addAttribute("info2", vEInstrDetailVOInfo); + model.addAttribute("instrFee", instrFee); + model.addAttribute("cryptoUtil",egovCryptoUtil); + + //20220222 우영두 추가 + //강의내역 NOTI 입력 + VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); + + vEAsgnmNotiVO.setTblUniqOrd(vEInstrAsgnmVO.getEduChasiOrd()); + vEAsgnmNotiVO.setFrstRegisterId(loginVO.getUniqId()); + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + } + + vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); + + vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); + + }catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail"; + } + + /** + * 결과보고 팝업 + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop.do") + public String filePopup( + @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO + ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + try { + vEEduRprtVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEEduRprtVO != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEEduRprtVO.getAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + model.addAttribute("vEEduRprtVO", vEEduRprtVO); + model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); + } + catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop"; + } + + /** + * 숙박신청자 영수증 등록 팝업 + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtRegPop.do") + public String eduAcmdtRegPop( + @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO + ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + try { + vEInstrFeeAcmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEInstrFeeAcmdtVO != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEInstrFeeAcmdtVO.getAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + model.addAttribute("vEInstrFeeAcmdtVO", vEInstrFeeAcmdtVO); + model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); + } + catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPop"; + } + + /** + * 결과보고 Ajax + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtPopupAjax.do") + public ModelAndView filePopupAjax( + @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + /* + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if (!"".equals(s_userCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + */ + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //step2.기존 첨부파일 체크 후 저장 하기 + String s_atchFileId = ""; + VEEduRprtVO fileVEEduAplctVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); + if (fileVEEduAplctVO != null) { + s_atchFileId = fileVEEduAplctVO.getAtchFileId(); + } + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_atchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_atchFileId = ""; + } + + if ("".equals(s_atchFileId)) { + s_atchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "EDURSLTRPRT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + }else { + s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "EDURSLTRPRT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + , s_atchFileId + ); + } + + if ("ERROR".equals(s_atchFileId)) return modelAndView; + + //step2.파일 처리==================================== + + try { + //결과 저장 + vEEduRprtVO.setAtchFileId(s_atchFileId); + + //최초등록 시 + if(fileVEEduAplctVO == null) { + vEEduRprtVO.setFrstRegisterId(loginVO.getUniqId()); + } else { //수정 시 + vEEduRprtVO.setLastUpdusrId(loginVO.getUniqId()); + } + + vEEduRsltRprtService.insert(vEEduRprtVO); + + }catch(Exception ex) { + System.out.println("Exception vEEduRsltRprtService.insert"); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + /** + * 영수증 등록 Ajax + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPopupAjax.do") + public ModelAndView eduAcmdtPopupAjax( + @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + /* + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if (!"".equals(s_userCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + */ + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //step2.기존 첨부파일 체크 후 저장 하기 + String s_atchFileId = ""; + VEInstrFeeAcmdtVO acmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); + s_atchFileId = acmdtVO.getAtchFileId(); + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_atchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_atchFileId = ""; + } + + if ("".equals(s_atchFileId)) { + s_atchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "ACMDTRECEIPT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + }else { + s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "ACMDTRECEIPT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + , s_atchFileId + ); + } + + if ("ERROR".equals(s_atchFileId)) return modelAndView; + + //step2.파일 처리==================================== + + try { + //결과 저장 + vEInstrFeeAcmdtVO.setAtchFileId(s_atchFileId); + vEInstrFeeAcmdtVO.setLastUpdusrId(loginVO.getUniqId()); + + vEAcmdtAplctService.update(vEInstrFeeAcmdtVO); + + }catch(Exception ex) { + System.out.println("Exception vEAcmdtAplctService.update"); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + //첨부파일 이름 변경하여 다운로드 + /** + * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. + * + * @param commandMap + * @param response + * @throws Exception + */ + @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/FileDown.do") + public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { + + String atchFileId = (String) commandMap.get("atchFileId"); + String fileSn = (String) commandMap.get("fileSn"); + String newFileNm = (String) commandMap.get("newFileNm"); + + /*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();*/ + + /*if (isAuthenticated) {*/ + + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(atchFileId); + fileVO.setFileSn(fileSn); + FileVO fvo = fileService.selectFileInf(fileVO); + if(fvo == null){ + response.setContentType("application/x-msdownload"); + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


Could not get file name:

"); + printwriter.println("


Back

"); + printwriter.println("


© webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + return ; + } + + File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + long fSize = uFile.length(); + + if (fSize > 0) { + String mimetype = "application/x-msdownload"; + + response.setContentType(mimetype); +// setDisposition(fvo.getOrignlFileNm(), request, response); + setDisposition(newFileNm+"."+fvo.getFileExtsn(), request, response); //받아온 파일명으로 다운로드 실행 + //response.setContentLength(fSize); + + BufferedInputStream in = null; + BufferedOutputStream out = null; + + try { + in = new BufferedInputStream(new FileInputStream(uFile)); + out = new BufferedOutputStream(response.getOutputStream()); + + FileCopyUtils.copy(in, out); + out.flush(); + } catch (Exception ex) { + LOGGER.debug("IGNORED: {}", ex.getMessage()); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + if (out != null) { + try { + out.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + } + + } else { + response.setContentType("application/x-msdownload"); + + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


Could not get file name:
" + fvo.getOrignlFileNm() + "

"); + printwriter.println("


Back

"); + printwriter.println("


© webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + } + /*}*/ + } + + + + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEInstrAsgnmVO p_vEInstrAsgnmVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEInstrAsgnmVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEInstrAsgnmVO.getPageUnit()); + paginationInfo.setPageSize(p_vEInstrAsgnmVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEInstrAsgnmVO setPagingStep2( + VEInstrAsgnmVO p_vEInstrAsgnmVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEInstrAsgnmVO.setSearchSortCnd("user_id"); + p_vEInstrAsgnmVO.setSearchSortOrd("desc"); + } + + return p_vEInstrAsgnmVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEInstrAsgnmVOList + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEInstrAsgnmVOList.size() > 0) totCnt = p_vEInstrAsgnmVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } + + /** + * Disposition 지정하기. + * + * @param filename + * @param request + * @param response + * @throws Exception + */ + private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception { + String browser = getBrowser(request); + + String dispositionPrefix = "attachment; filename="; + String encodedFilename = null; + + if (browser.equals("MSIE")) { + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Firefox")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Opera")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Chrome")) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < filename.length(); i++) { + char c = filename.charAt(i); + if (c > '~') { + sb.append(URLEncoder.encode("" + c, "UTF-8")); + } else { + sb.append(c); + } + } + encodedFilename = sb.toString(); + } else { + //throw new RuntimeException("Not supported browser"); + throw new IOException("Not supported browser"); + } + +// response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); // 파일명에 콤마 포함시 오류 + response.setHeader("Content-Disposition", dispositionPrefix + "\"" + encodedFilename + "\""); + + if ("Opera".equals(browser)) { + response.setContentType("application/octet-stream;charset=UTF-8"); + } + } + +} diff --git a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java index a4e3ddff..b09e2ed9 100644 --- a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java +++ b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java @@ -1,498 +1,498 @@ -package kcc.ve.oprtn.adultVisitEdu.eduRsltMng.web; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Properties; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -import org.apache.poi.xssf.streaming.SXSSFWorkbook; -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.security.userdetails.util.EgovUserDetailsHelper; -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.service.EgovCmmUseService; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.EgovFileMngUtil; -import kcc.com.cmm.service.FileVO; -import kcc.com.cmm.spring.data.util.ExcelUtil; -import kcc.com.cmm.util.IpUtil; -import kcc.com.cmm.util.StringUtil; -import kcc.com.utl.user.service.CheckAdrProcessUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; -import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; -import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService; -import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.ve.cmm.VeConstants; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduExcelVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduPnltyService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; - -/** - * 교육보고관리(관리자-성인찾아가는저작권교육) - * 교육보고관리에 관한 controller 클래스를 정의한다. - * @author 조용준 - * @since 2021.12.16 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2021.12.16  조용준          최초 생성
- *
- * 
- */ - -@Controller -@RequestMapping("/kccadr/oprtn/adultVisitEdu") -public class EduRsltMngAdultController { - - private static final Logger LOGGER = LoggerFactory.getLogger(EduRsltMngAdultController.class); - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //과정 관리 - @Resource(name = "vEPrcsService") - private VEPrcsService vEPrcsService; - - //신청과정 관리 - @Resource(name = "vEEduMIXService") - private VEEduMIXService vEEduMIXService; - - //교육신청 - @Resource(name = "vEEduAplctService") - private VEEduAplctService vEEduAplctService; - - //교육과정신청 - @Resource(name = "vEPrcsMIXService") - private VEPrcsMIXService vEPrcsMIXService; - - //차시 - @Resource(name = "vEEduChasiService") - private VEEduChasiService vVEEduChasiService; - - // eGov 공통코드 - @Resource(name = "EgovCmmUseService") - private EgovCmmUseService cmmUseService; - - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - // global 프로퍼티 - @Resource(name="globalSettings") - protected Properties propertiesService; - - //첨부파일 경로, realPath 설정 - @Resource(name="EgovFileMngUtil") - private EgovFileMngUtil fileUtil; - - // 첨부파일 정보 - @Resource(name="EgovFileMngService") - private EgovFileMngService fileMngService; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - - @Resource(name="KccadrMgrUdtService") - private KccadrMgrUdtService kccadrMgrUdtService; - - // 교육신청 서비스단 - @Resource(name = "checkAdrProcessUtil") - private CheckAdrProcessUtil checkAdrProcessUtil; - - // 교육패널티 - @Resource(name = "vEEduPnltyService") - private VEEduPnltyService vEEduPnltyService; - - // 강의배정정보 - @Resource(name = "vEAsgnmMIXService") - private VEAsgnmMIXService vEAsgnmMIXService; - - @Resource(name = "egovQustnrRespondInfoService") - private EgovQustnrRespondInfoService egovQustnrRespondInfoService; - - //NOTI 서비스 - @Resource(name="vEAsgnmNotiService") - private VEAsgnmNotiService vEAsgnmNotiService; - - /** - * 교육결과관리 목록 화면 - */ - @RequestMapping("eduRsltMngList.do") - public String eduRsltMngList( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , HttpSession session - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - //로그인 처리==================================== - - // 검색자가 '강사이름'일 때, 암호화하여 검색자에 set한다. - if("2".equals(vEEduAplctVO.getSearchCondition())) { - vEEduAplctVO.setSearchKeyword(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchKeyword())); - } - - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); - - //2. pageing step2 - vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); - vEEduAplctVO.setInstrDiv("20"); // 성인 교육 코드 - vEEduAplctVO.setLctrDivCd("20"); - vEEduAplctVO.setAprvlCd("60"); - vEEduAplctVO.setNotiUserId(user.getUniqId()); - vEEduAplctVO.setMenuNo(session.getAttribute("menuNo").toString()); - - vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO); - - - List vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList(vEEduAplctVO); - VEEduAplctVO vo = new VEEduAplctVO(); - for(int i=0; i < vEEduAplctVOList.size(); i++) { - vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i)); - vEEduAplctVOList.get(i).setChrgNm(vo.getChrgNm()); - } - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); - - // 검색자가 '강사이름'일 때, 복호화하여 검색자에 set 한다. - if("2".equals(vEEduAplctVO.getSearchCondition())) { - vEEduAplctVO.setSearchKeyword(egovCryptoUtil.decrypt(vEEduAplctVO.getSearchKeyword())); - } - - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("list", vEEduAplctVOList); - - - //대상 리스트, 페이징 정보 전달 - //model.addAttribute("resultList", vEEduAplctVOList); - - - return "oprtn/adultVisitEdu/eduRsltMngList"; - } - - /** - * 교육결과관리 등록 화면 - */ - @RequestMapping("eduRsltMngReg.do") - public String eduRsltMngReg( - @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - - return "oprtn/adultVisitEdu/eduRsltMngReg"; - - } - - - /** - * 교육결과관리 상세 화면 - */ - @RequestMapping("eduRsltMngDetail.do") - public String eduRsltMngDetail( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - //로그인 처리==================================== - String chasiOrd = vEEduAplctVO.getEduChasiOrd(); - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - vEEduAplctVO.setEduChasiOrd(chasiOrd); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - model.addAttribute("list", vEPrcsDetailVOList); - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - - vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_20);// 청소년교육 코드 - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - vEEduChasiVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - VEEduChasiVO vo = new VEEduChasiVO(); - for(int i=0; i < vEEduChasiVOList.size(); i++) { - vo = egovCryptoUtil.decryptVEEduChasiVO(vEEduChasiVOList.get(i)); - vEEduChasiVOList.get(i).setInstrNm(vo.getInstrNm()); - } - - model.addAttribute("chasiList", vEEduChasiVOList); - - // 설문조사 정보 - QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); - qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20); - QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO); - - // 설문조사 문항리스트 조회 - Map commandMap =new HashMap(); - commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001"); - commandMap.put("qestnrId",info.getQestnrId()); //문제 ID - model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap)); - - // 설문조사 결과 조회 - qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); - List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyList(qustnrRespondInfoVO); - if(chasiSrvyList.size() > 0) { - model.addAttribute("qestnrRespondent", chasiSrvyList.get(0).getQestnrRespondent()); - model.addAttribute("qestnrParticipant", chasiSrvyList.get(0).getQestnrParticipant()); - model.addAttribute("chasiSrvyList",chasiSrvyList); - } - - - - /* - System.out.println("------------------------"); - //전체 차시 배정 강사 정보 - vEInstrAsgnmVO.setEduChasiOrd(""); - List selectAsgnmInstrList = vEAsgnmMIXService.selectAsgnmInstrList(vEInstrAsgnmVO); - model.addAttribute("listChasi", selectAsgnmInstrList); - System.out.println("------------------------======================="); - */ - - //20220223 우영두 추가 - //강의내역 NOTI 입력 - VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); - String tblUnitOrd = ""; - if(StringUtil.isNotEmpty(vEEduAplctVO.getEduChasiOrd())) { - tblUnitOrd = vEEduAplctVO.getEduChasiOrd(); - }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); - - - return "oprtn/adultVisitEdu/eduRsltMngDetail"; - } - - /** - * 교육결과반려 처리 팝업 - */ - @RequestMapping("popup/eduRsltMngDetailRfslSecurityPopup.do") - public String eduRsltMngDetailRfslSecurityPopup( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - - model.addAttribute("list", vEPrcsDetailVOList); - - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - - model.addAttribute("chasiList", vEEduChasiVOList); - - - return "oprtn/adultVisitEdu/popup/eduRsltMngDetailRfslSecurityPopup"; - } - - - @SuppressWarnings("rawtypes") - @RequestMapping(value = "eduRsltSrvyExcelDownLoad.do") - public ModelAndView eduRsltSrvyExcelDownLoad(@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO, ModelMap model) throws Exception { - - try { - // 설문조사 정보 - QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); - qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); - List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyExcelList(qustnrRespondInfoVO); - - - - System.out.println("out-list-1"); - - List excelData = new ArrayList<>(); - excelData.addAll(chasiSrvyList); - - // 세팅값 - String title = "성인 찾아가는 저작권 교육"; - int[] width = { - 18000, 4000, 4000, 4000, 4000, 4000 - }; // 너비 - - //33개 항목 - String[] header = { - "평가문항", "매우만족", "만족", "보통", "불만족", "매우불만족" - }; - - String[] order = { - "RespondAnswerCn","VerySatisfied","Satisfied","Neither","Dissatisfied","VeryDissatisfied" - }; - - // 호출 - SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); - model.addAttribute("locale", Locale.KOREA); - model.addAttribute("workbook", workbook); - model.addAttribute("workbookName", title); - - }catch(Exception ep) { - ep.getStackTrace(); - } - - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("excelDownloadView"); - modelAndView.addObject(model); - return modelAndView; - } - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - // - // private function - // - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEEduAplctVO p_vEEduAplctVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); - paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEEduAplctVO setPagingStep2( - VEEduAplctVO p_vEEduAplctVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); - p_vEEduAplctVO.setSearchSortOrd("desc"); - } - - return p_vEEduAplctVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEEduAplctVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } -} +package kcc.ve.oprtn.adultVisitEdu.eduRsltMng.web; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Properties; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +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.security.userdetails.util.EgovUserDetailsHelper; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.EgovFileMngUtil; +import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.spring.data.util.ExcelUtil; +import kcc.com.cmm.util.IpUtil; +import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckAdrProcessUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; +import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; +import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService; +import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduExcelVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduPnltyService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; + +/** + * 교육보고관리(관리자-성인찾아가는저작권교육) + * 교육보고관리에 관한 controller 클래스를 정의한다. + * @author 조용준 + * @since 2021.12.16 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.12.16  조용준          최초 생성
+ *
+ * 
+ */ + +@Controller +@RequestMapping("/kccadr/oprtn/adultVisitEdu") +public class EduRsltMngAdultController { + + private static final Logger LOGGER = LoggerFactory.getLogger(EduRsltMngAdultController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //과정 관리 + @Resource(name = "vEPrcsService") + private VEPrcsService vEPrcsService; + + //신청과정 관리 + @Resource(name = "vEEduMIXService") + private VEEduMIXService vEEduMIXService; + + //교육신청 + @Resource(name = "vEEduAplctService") + private VEEduAplctService vEEduAplctService; + + //교육과정신청 + @Resource(name = "vEPrcsMIXService") + private VEPrcsMIXService vEPrcsMIXService; + + //차시 + @Resource(name = "vEEduChasiService") + private VEEduChasiService vVEEduChasiService; + + // eGov 공통코드 + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + // global 프로퍼티 + @Resource(name="globalSettings") + protected Properties propertiesService; + + //첨부파일 경로, realPath 설정 + @Resource(name="EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + // 첨부파일 정보 + @Resource(name="EgovFileMngService") + private EgovFileMngService fileMngService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + + @Resource(name="KccadrMgrUdtService") + private KccadrMgrUdtService kccadrMgrUdtService; + + // 교육신청 서비스단 + @Resource(name = "checkAdrProcessUtil") + private CheckAdrProcessUtil checkAdrProcessUtil; + + // 교육패널티 + @Resource(name = "vEEduPnltyService") + private VEEduPnltyService vEEduPnltyService; + + // 강의배정정보 + @Resource(name = "vEAsgnmMIXService") + private VEAsgnmMIXService vEAsgnmMIXService; + + @Resource(name = "egovQustnrRespondInfoService") + private EgovQustnrRespondInfoService egovQustnrRespondInfoService; + + //NOTI 서비스 + @Resource(name="vEAsgnmNotiService") + private VEAsgnmNotiService vEAsgnmNotiService; + + /** + * 교육결과관리 목록 화면 + */ + @RequestMapping("eduRsltMngList.do") + public String eduRsltMngList( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , HttpSession session + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + //로그인 처리==================================== + + // 검색자가 '강사이름'일 때, 암호화하여 검색자에 set한다. + if("2".equals(vEEduAplctVO.getSearchCondition())) { + vEEduAplctVO.setSearchKeyword(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchKeyword())); + } + + + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); + + //2. pageing step2 + vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); + vEEduAplctVO.setInstrDiv("20"); // 성인 교육 코드 + vEEduAplctVO.setLctrDivCd("20"); + vEEduAplctVO.setAprvlCd("60"); + vEEduAplctVO.setNotiUserId(user.getUniqId()); + vEEduAplctVO.setMenuNo(session.getAttribute("menuNo").toString()); + + vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO); + + + List vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList(vEEduAplctVO); + VEEduAplctVO vo = new VEEduAplctVO(); + for(int i=0; i < vEEduAplctVOList.size(); i++) { + vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i)); + vEEduAplctVOList.get(i).setChrgNm(vo.getChrgNm()); + } + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); + + // 검색자가 '강사이름'일 때, 복호화하여 검색자에 set 한다. + if("2".equals(vEEduAplctVO.getSearchCondition())) { + vEEduAplctVO.setSearchKeyword(egovCryptoUtil.decrypt(vEEduAplctVO.getSearchKeyword())); + } + + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEEduAplctVOList); + + + //대상 리스트, 페이징 정보 전달 + //model.addAttribute("resultList", vEEduAplctVOList); + + + return "oprtn/adultVisitEdu/eduRsltMngList"; + } + + /** + * 교육결과관리 등록 화면 + */ + @RequestMapping("eduRsltMngReg.do") + public String eduRsltMngReg( + @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + + return "oprtn/adultVisitEdu/eduRsltMngReg"; + + } + + + /** + * 교육결과관리 상세 화면 + */ + @RequestMapping("eduRsltMngDetail.do") + public String eduRsltMngDetail( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + //로그인 처리==================================== + String chasiOrd = vEEduAplctVO.getEduChasiOrd(); + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + vEEduAplctVO.setEduChasiOrd(chasiOrd); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + model.addAttribute("list", vEPrcsDetailVOList); + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + + vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_20);// 청소년교육 코드 + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + vEEduChasiVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + VEEduChasiVO vo = new VEEduChasiVO(); + for(int i=0; i < vEEduChasiVOList.size(); i++) { + vo = egovCryptoUtil.decryptVEEduChasiVO(vEEduChasiVOList.get(i)); + vEEduChasiVOList.get(i).setInstrNm(vo.getInstrNm()); + } + + model.addAttribute("chasiList", vEEduChasiVOList); + + // 설문조사 정보 + QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); + qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20); + QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO); + + // 설문조사 문항리스트 조회 + Map commandMap =new HashMap(); + commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001"); + commandMap.put("qestnrId",info.getQestnrId()); //문제 ID + model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap)); + + // 설문조사 결과 조회 + qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); + List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyList(qustnrRespondInfoVO); + if(chasiSrvyList.size() > 0) { + model.addAttribute("qestnrRespondent", chasiSrvyList.get(0).getQestnrRespondent()); + model.addAttribute("qestnrParticipant", chasiSrvyList.get(0).getQestnrParticipant()); + model.addAttribute("chasiSrvyList",chasiSrvyList); + } + + + + /* + System.out.println("------------------------"); + //전체 차시 배정 강사 정보 + vEInstrAsgnmVO.setEduChasiOrd(""); + List selectAsgnmInstrList = vEAsgnmMIXService.selectAsgnmInstrList(vEInstrAsgnmVO); + model.addAttribute("listChasi", selectAsgnmInstrList); + System.out.println("------------------------======================="); + */ + + //20220223 우영두 추가 + //강의내역 NOTI 입력 + VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); + String tblUnitOrd = ""; + if(StringUtil.isNotEmpty(vEEduAplctVO.getEduChasiOrd())) { + tblUnitOrd = vEEduAplctVO.getEduChasiOrd(); + }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); + + + return "oprtn/adultVisitEdu/eduRsltMngDetail"; + } + + /** + * 교육결과반려 처리 팝업 + */ + @RequestMapping("popup/eduRsltMngDetailRfslSecurityPopup.do") + public String eduRsltMngDetailRfslSecurityPopup( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + + model.addAttribute("list", vEPrcsDetailVOList); + + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + + model.addAttribute("chasiList", vEEduChasiVOList); + + + return "oprtn/adultVisitEdu/popup/eduRsltMngDetailRfslSecurityPopup"; + } + + + @SuppressWarnings("rawtypes") + @RequestMapping(value = "eduRsltSrvyExcelDownLoad.do") + public ModelAndView eduRsltSrvyExcelDownLoad(@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO, ModelMap model) throws Exception { + + try { + // 설문조사 정보 + QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); + qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); + List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyExcelList(qustnrRespondInfoVO); + + + + System.out.println("out-list-1"); + + List excelData = new ArrayList<>(); + excelData.addAll(chasiSrvyList); + + // 세팅값 + String title = "성인 찾아가는 저작권 교육"; + int[] width = { + 18000, 4000, 4000, 4000, 4000, 4000 + }; // 너비 + + //33개 항목 + String[] header = { + "평가문항", "매우만족", "만족", "보통", "불만족", "매우불만족" + }; + + String[] order = { + "RespondAnswerCn","VerySatisfied","Satisfied","Neither","Dissatisfied","VeryDissatisfied" + }; + + // 호출 + SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + + }catch(Exception ep) { + ep.getStackTrace(); + } + + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + modelAndView.addObject(model); + return modelAndView; + } + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // + // private function + // + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEEduAplctVO p_vEEduAplctVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); + paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEEduAplctVO setPagingStep2( + VEEduAplctVO p_vEEduAplctVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); + p_vEEduAplctVO.setSearchSortOrd("desc"); + } + + return p_vEEduAplctVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEEduAplctVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } +} diff --git a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java index eff33704..0e9f6826 100644 --- a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java +++ b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java @@ -1,355 +1,355 @@ -package kcc.ve.oprtn.adultVisitEdu.eduSchdlMng.web; - -import java.util.List; -import java.util.Properties; - -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 egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.com.cmm.service.EgovCmmUseService; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.EgovFileMngUtil; -import kcc.com.utl.user.service.CheckAdrProcessUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.adjreqmgr.service.AdjReqMgrService; -import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; -import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.ve.cmm.VeConstants; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; - -/** - * 교육일정관리(관리자-성인찾아가는저작권교육) - * 교육일정관리에 관한 controller 클래스를 정의한다. - * @author 조용준 - * @since 2021.12.16 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2021.12.16  조용준          최초 생성
- *
- * 
- */ - -@Controller -@RequestMapping("/kccadr/oprtn/adultVisitEdu") -public class EduSchdlMngAdultController { - - private static final Logger LOGGER = LoggerFactory.getLogger(EduSchdlMngAdultController.class); - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //과정 관리 - @Resource(name = "vEPrcsService") - private VEPrcsService vEPrcsService; - - //신청과정 관리 - @Resource(name = "vEEduMIXService") - private VEEduMIXService vEEduMIXService; - - //교육신청 - @Resource(name = "vEEduAplctService") - private VEEduAplctService vEEduAplctService; - - //교육과정신청 - @Resource(name = "vEPrcsMIXService") - private VEPrcsMIXService vEPrcsMIXService; - - //차시 - @Resource(name = "vEEduChasiService") - private VEEduChasiService vVEEduChasiService; - - - // 교육신청 서비스단 - @Resource(name = "AdjReqMgrService") - private AdjReqMgrService adjReqMgrService; - - // eGov 공통코드 - @Resource(name = "EgovCmmUseService") - private EgovCmmUseService cmmUseService; - - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - // global 프로퍼티 - @Resource(name="globalSettings") - protected Properties propertiesService; - - //첨부파일 경로, realPath 설정 - @Resource(name="EgovFileMngUtil") - private EgovFileMngUtil fileUtil; - - // 첨부파일 정보 - @Resource(name="EgovFileMngService") - private EgovFileMngService fileMngService; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - - @Resource(name="KccadrMgrUdtService") - private KccadrMgrUdtService kccadrMgrUdtService; - - // 교육신청 서비스단 - @Resource(name = "checkAdrProcessUtil") - private CheckAdrProcessUtil checkAdrProcessUtil; - - /** - * 교육일정관리 목록 화면 - */ - @RequestMapping("eduSchdlMngList.do") - public String eduSchdlMngList( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); //청소년 - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); - //2. pageing step2 - vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); - //vEEduAplctVO.setLctrDivCd("30"); - List vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO); - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); - - - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("list", vEEduAplctVOList); - - /* - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); - - //2. pageing step2 - vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); - - List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO); - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); - - - model.addAttribute("paginationInfo", paginationInfo); - */ - - - //대상 리스트, 페이징 정보 전달 - //model.addAttribute("resultList", vEEduAplctVOList); - - - return "oprtn/adultVisitEdu/eduSchdlMngList"; - } - - - - /** - * 교육일정관리 등록 화면 - */ - @RequestMapping("eduSchdlMngReg.do") - public String eduSchdlMngReg( - @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - - return "oprtn/adultVisitEdu/eduSchdlMngReg"; - - } - - - /** - * 교육신청관리 상세 화면 - */ - @RequestMapping("eduSchdlMngDetail.do") - public String eduSchdlMngDetail( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - - model.addAttribute("list", vEPrcsDetailVOList); - - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - - model.addAttribute("chasiList", vEEduChasiVOList); - - - return "oprtn/adultVisitEdu/eduSchdlMngDetail"; - } - - /** - * 교육일정반려 처리 팝업 - */ - @RequestMapping("popup/eduSchdlMngDetailRfslSecurityPopup.do") - public String eduSchdlMngDetailRfslSecurityPopup( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - - model.addAttribute("list", vEPrcsDetailVOList); - - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - - model.addAttribute("chasiList", vEEduChasiVOList); - - - return "oprtn/adultVisitEdu/popup/eduSchdlMngDetailRfslSecurityPopup"; - } - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - // - // private function - // - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEEduAplctVO p_vEEduAplctVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); - paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEEduAplctVO setPagingStep2( - VEEduAplctVO p_vEEduAplctVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); - p_vEEduAplctVO.setSearchSortOrd("desc"); - } - - return p_vEEduAplctVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEEduAplctVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } -} +package kcc.ve.oprtn.adultVisitEdu.eduSchdlMng.web; + +import java.util.List; +import java.util.Properties; + +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 egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.EgovFileMngUtil; +import kcc.com.utl.user.service.CheckAdrProcessUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.adjreqmgr.service.AdjReqMgrService; +import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; +import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; + +/** + * 교육일정관리(관리자-성인찾아가는저작권교육) + * 교육일정관리에 관한 controller 클래스를 정의한다. + * @author 조용준 + * @since 2021.12.16 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.12.16  조용준          최초 생성
+ *
+ * 
+ */ + +@Controller +@RequestMapping("/kccadr/oprtn/adultVisitEdu") +public class EduSchdlMngAdultController { + + private static final Logger LOGGER = LoggerFactory.getLogger(EduSchdlMngAdultController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //과정 관리 + @Resource(name = "vEPrcsService") + private VEPrcsService vEPrcsService; + + //신청과정 관리 + @Resource(name = "vEEduMIXService") + private VEEduMIXService vEEduMIXService; + + //교육신청 + @Resource(name = "vEEduAplctService") + private VEEduAplctService vEEduAplctService; + + //교육과정신청 + @Resource(name = "vEPrcsMIXService") + private VEPrcsMIXService vEPrcsMIXService; + + //차시 + @Resource(name = "vEEduChasiService") + private VEEduChasiService vVEEduChasiService; + + + // 교육신청 서비스단 + @Resource(name = "AdjReqMgrService") + private AdjReqMgrService adjReqMgrService; + + // eGov 공통코드 + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + // global 프로퍼티 + @Resource(name="globalSettings") + protected Properties propertiesService; + + //첨부파일 경로, realPath 설정 + @Resource(name="EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + // 첨부파일 정보 + @Resource(name="EgovFileMngService") + private EgovFileMngService fileMngService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + + @Resource(name="KccadrMgrUdtService") + private KccadrMgrUdtService kccadrMgrUdtService; + + // 교육신청 서비스단 + @Resource(name = "checkAdrProcessUtil") + private CheckAdrProcessUtil checkAdrProcessUtil; + + /** + * 교육일정관리 목록 화면 + */ + @RequestMapping("eduSchdlMngList.do") + public String eduSchdlMngList( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); //청소년 + + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); + //2. pageing step2 + vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); + //vEEduAplctVO.setLctrDivCd("30"); + List vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); + + + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEEduAplctVOList); + + /* + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); + + //2. pageing step2 + vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); + + List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + + model.addAttribute("paginationInfo", paginationInfo); + */ + + + //대상 리스트, 페이징 정보 전달 + //model.addAttribute("resultList", vEEduAplctVOList); + + + return "oprtn/adultVisitEdu/eduSchdlMngList"; + } + + + + /** + * 교육일정관리 등록 화면 + */ + @RequestMapping("eduSchdlMngReg.do") + public String eduSchdlMngReg( + @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + + return "oprtn/adultVisitEdu/eduSchdlMngReg"; + + } + + + /** + * 교육신청관리 상세 화면 + */ + @RequestMapping("eduSchdlMngDetail.do") + public String eduSchdlMngDetail( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + + model.addAttribute("list", vEPrcsDetailVOList); + + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + + model.addAttribute("chasiList", vEEduChasiVOList); + + + return "oprtn/adultVisitEdu/eduSchdlMngDetail"; + } + + /** + * 교육일정반려 처리 팝업 + */ + @RequestMapping("popup/eduSchdlMngDetailRfslSecurityPopup.do") + public String eduSchdlMngDetailRfslSecurityPopup( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + + model.addAttribute("list", vEPrcsDetailVOList); + + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + + model.addAttribute("chasiList", vEEduChasiVOList); + + + return "oprtn/adultVisitEdu/popup/eduSchdlMngDetailRfslSecurityPopup"; + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // + // private function + // + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEEduAplctVO p_vEEduAplctVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); + paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEEduAplctVO setPagingStep2( + VEEduAplctVO p_vEEduAplctVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); + p_vEEduAplctVO.setSearchSortOrd("desc"); + } + + return p_vEEduAplctVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEEduAplctVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } +} diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java index 734a158a..65da48fd 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java @@ -38,6 +38,7 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable { private String prsctrNm; // 검사성명 private String reqStateCd; // 의뢰상태코드 private String prcsAplctPrdOrdCmplt;// 중복확인을 위한 신청강의 PK + private String atchFileId;// 첨부파일 ID @@ -183,6 +184,12 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable { public void setPrcsAplctPrdOrdCmplt(String prcsAplctPrdOrdCmplt) { this.prcsAplctPrdOrdCmplt = prcsAplctPrdOrdCmplt; } + public String getAtchFileId() { + return atchFileId; + } + public void setAtchFileId(String atchFileId) { + this.atchFileId = atchFileId; + } diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java index 09075b59..11b2d14d 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java @@ -13,12 +13,16 @@ 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.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.FileVO; import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckFileUtil; import kcc.com.utl.user.service.CheckLoginUtil; import kcc.let.uat.uia.service.SsoLoginVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; @@ -85,6 +89,18 @@ public class CndtnTrgtMngController { //과정차시 관리 @Resource(name = "vEPrcsAplctPrdService") private VEPrcsAplctPrdService vEPrcsAplctPrdService; + + + //파일 체크 util + @Resource(name = "checkFileUtil") + private CheckFileUtil checkFileUtil; + + + //파일정보의 관리 + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + /* // 교육신청 서비스단 @@ -283,8 +299,8 @@ public class CndtnTrgtMngController { public ModelAndView cndtnEduPrcsMngRegAjax( @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO , ModelMap model - //, RedirectAttributes redirectAttributes , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest ) throws Exception { ModelAndView modelAndView = new ModelAndView(); @@ -304,8 +320,29 @@ public class CndtnTrgtMngController { LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + System.out.println("s_scholSealAtchFileId :: "+ s_scholSealAtchFileId); + cndtnTrgtInfoMngVO.setSspnIdtmtTrgtOrd(trgtOrdService.getNextStringId()); + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일 cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id // vEPrcsDetailVO.setPrcsOrd(prcsOrd); // vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 @@ -331,6 +368,7 @@ public class CndtnTrgtMngController { , ModelMap model //, RedirectAttributes redirectAttributes , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest ) throws Exception { ModelAndView modelAndView = new ModelAndView(); @@ -351,6 +389,56 @@ public class CndtnTrgtMngController { SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + //step2.첨부파일 체크 후 저장 하기 + String s_scholSealAtchFileId = ""; + s_scholSealAtchFileId = cndtnTrgtInfoMngVO.getAtchFileId(); + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_scholSealAtchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_scholSealAtchFileId = ""; + } + + + //step3.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //기존 파일 존재 여부에 따라서 insert or update 처리 + if ("".equals(s_scholSealAtchFileId)) { + //atchFileId = this.fileValCheckNdbInsert(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); + }else { + //atchFileId = this.fileValCheckNdbUpdate(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit, atchFileId); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + , s_scholSealAtchFileId + ); //EXT, MB size and ea + } + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + + + + cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id cndtnTrgtInfoMngService.update(cndtnTrgtInfoMngVO); @@ -383,7 +471,14 @@ public class CndtnTrgtMngController { //과정 조회 CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); model.addAttribute("info", cndtnTrgtInfoVO); - //세부과정 목록 조회 + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); return "oprtn/cndtnSspnIdtmt/trgtDetail"; } @@ -449,6 +544,14 @@ public class CndtnTrgtMngController { CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); model.addAttribute("info", cndtnTrgtInfoVO); + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + return "oprtn/cndtnSspnIdtmt/trgtMdfy"; } diff --git a/src/main/resources/egovframework/spring/com/context-crypto.xml b/src/main/resources/egovframework/spring/com/context-crypto.xml index b64790eb..aef09c6b 100644 --- a/src/main/resources/egovframework/spring/com/context-crypto.xml +++ b/src/main/resources/egovframework/spring/com/context-crypto.xml @@ -1,32 +1,32 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-properties.xml b/src/main/resources/egovframework/spring/com/context-properties.xml index c232d98f..41094778 100644 --- a/src/main/resources/egovframework/spring/com/context-properties.xml +++ b/src/main/resources/egovframework/spring/com/context-properties.xml @@ -1,27 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml index 6803769f..3fd5d575 100644 --- a/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml @@ -1,236 +1,236 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UPDATE - LETTNFILEDETAIL - SET - ORIGNL_FILE_NM = #orignlFileNm# - WHERE 1=1 - AND ATCH_FILE_ID = #atchFileId# - AND FILE_SN = #fileSn# - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE + LETTNFILEDETAIL + SET + ORIGNL_FILE_NM = #orignlFileNm# + WHERE 1=1 + AND ATCH_FILE_ID = #atchFileId# + AND FILE_SN = #fileSn# + + diff --git a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml index 297fb6bf..782b07ec 100644 --- a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml @@ -35,6 +35,7 @@ , req_nmbr , prsctr_nm , req_state_cd + , atch_file_id @@ -62,6 +63,7 @@ , a.req_nmbr AS reqNmbr , a.prsctr_nm AS prsctrNm , a.req_state_cd AS reqStateCd + , a.atch_file_id AS atchFileId @@ -93,6 +95,7 @@ , #reqNmbr# , #prsctrNm# , #reqStateCd# + , #atchFileId# ) @@ -131,7 +134,8 @@ , sex = #sex# , req_nmbr = #reqNmbr# , prsctr_nm = #prsctrNm# - , req_state_cd = #reqStateCd# + , req_state_cd = #reqStateCd# + , atch_file_id = #atchFileId# WHERE sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd# diff --git a/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml b/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml index c6d6d457..2b55ef23 100644 --- a/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml +++ b/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml @@ -1,352 +1,352 @@ - - - - - - - - - - - ve_lctr_stng - - - - - instr_div, - user_id, - lctr_stng_ord, - - sun_lctr_yn, - mon_lctr_yn, - tue_lctr_yn, - wed_lctr_yn, - thu_lctr_yn, - fri_lctr_yn, - sat_lctr_yn, - zoom_yn, - yr_mxmm_asgnm_tm, - mnt_mnmm_tm, - prfrn_fld_cd, - onln_psbl_yn, - - sbmt_yn, - sbmt_pnttm, - aprvl_cd, - aprvl_pnttm, - aprvl_id, - aprvl_cn, - - frst_regist_pnttm, - frst_register_id, - last_updt_pnttm, - last_updusr_id, - - use_yn, - - isltn_psbl_yn, - cntns_lctr_psbl_yn, - - lctr_stng_yr, - asgnm_tm_1, - asgnm_tm_2, - asgnm_tm_3, - asgnm_tm_4, - asgnm_tm_5, - asgnm_tm_6, - asgnm_tm_7, - asgnm_tm_8, - asgnm_tm_9, - asgnm_tm_10, - asgnm_tm_11, - asgnm_tm_12 - - - - - - a.instr_div AS instrDiv, - a.user_id AS userId, - a.lctr_stng_ord AS lctrStngOrd, - - a.sun_lctr_yn AS sunLctrYn, - a.mon_lctr_yn AS monLctrYn, - a.tue_lctr_yn AS tueLctrYn, - a.wed_lctr_yn AS wedLctrYn, - a.thu_lctr_yn AS thuLctrYn, - a.fri_lctr_yn AS friLctrYn, - a.sat_lctr_yn AS satLctrYn, - a.zoom_yn AS zoomYn, - a.yr_mxmm_asgnm_tm AS yrMxmmAsgnmTm, - a.mnt_mnmm_tm AS mntMnmmTm, - a.prfrn_fld_cd AS prfrnFldCd, - a.onln_psbl_yn AS onlnPsblYn, - - a.sbmt_yn AS sbmtYn, - a.sbmt_pnttm AS sbmtPnttm, - a.aprvl_cd AS aprvlCd, - a.aprvl_pnttm AS aprvlPnttm, - - a.aprvl_id AS aprvlId, - a.aprvl_cn AS aprvlCn, - - DATE_FORMAT(a.frst_regist_pnttm,'%Y-%m-%d') AS frstRegistPnttm, - a.frst_register_id AS frstRegisterId, - DATE_FORMAT(a.last_updt_pnttm,'%Y-%m-%d') AS lastUpdtPnttm, - a.last_updusr_id AS lastUpdusrId, - - a.use_yn AS useYn, - - a.isltn_psbl_yn AS isltnPsblYn, - a.cntns_lctr_psbl_yn AS cntnsLctrPsblYn, - - a.lctr_stng_yr AS lctrStngYr, - a.asgnm_tm_1 AS asgnmTm1, - a.asgnm_tm_2 AS asgnmTm2, - a.asgnm_tm_3 AS asgnmTm3, - a.asgnm_tm_4 AS asgnmTm4, - a.asgnm_tm_5 AS asgnmTm5, - a.asgnm_tm_6 AS asgnmTm6, - a.asgnm_tm_7 AS asgnmTm7, - a.asgnm_tm_8 AS asgnmTm8, - a.asgnm_tm_9 AS asgnmTm9, - a.asgnm_tm_10 AS asgnmTm10, - a.asgnm_tm_11 AS asgnmTm11, - a.asgnm_tm_12 AS asgnmTm12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + ve_lctr_stng + + + + + instr_div, + user_id, + lctr_stng_ord, + + sun_lctr_yn, + mon_lctr_yn, + tue_lctr_yn, + wed_lctr_yn, + thu_lctr_yn, + fri_lctr_yn, + sat_lctr_yn, + zoom_yn, + yr_mxmm_asgnm_tm, + mnt_mnmm_tm, + prfrn_fld_cd, + onln_psbl_yn, + + sbmt_yn, + sbmt_pnttm, + aprvl_cd, + aprvl_pnttm, + aprvl_id, + aprvl_cn, + + frst_regist_pnttm, + frst_register_id, + last_updt_pnttm, + last_updusr_id, + + use_yn, + + isltn_psbl_yn, + cntns_lctr_psbl_yn, + + lctr_stng_yr, + asgnm_tm_1, + asgnm_tm_2, + asgnm_tm_3, + asgnm_tm_4, + asgnm_tm_5, + asgnm_tm_6, + asgnm_tm_7, + asgnm_tm_8, + asgnm_tm_9, + asgnm_tm_10, + asgnm_tm_11, + asgnm_tm_12 + + + + + + a.instr_div AS instrDiv, + a.user_id AS userId, + a.lctr_stng_ord AS lctrStngOrd, + + a.sun_lctr_yn AS sunLctrYn, + a.mon_lctr_yn AS monLctrYn, + a.tue_lctr_yn AS tueLctrYn, + a.wed_lctr_yn AS wedLctrYn, + a.thu_lctr_yn AS thuLctrYn, + a.fri_lctr_yn AS friLctrYn, + a.sat_lctr_yn AS satLctrYn, + a.zoom_yn AS zoomYn, + a.yr_mxmm_asgnm_tm AS yrMxmmAsgnmTm, + a.mnt_mnmm_tm AS mntMnmmTm, + a.prfrn_fld_cd AS prfrnFldCd, + a.onln_psbl_yn AS onlnPsblYn, + + a.sbmt_yn AS sbmtYn, + a.sbmt_pnttm AS sbmtPnttm, + a.aprvl_cd AS aprvlCd, + a.aprvl_pnttm AS aprvlPnttm, + + a.aprvl_id AS aprvlId, + a.aprvl_cn AS aprvlCn, + + DATE_FORMAT(a.frst_regist_pnttm,'%Y-%m-%d') AS frstRegistPnttm, + a.frst_register_id AS frstRegisterId, + DATE_FORMAT(a.last_updt_pnttm,'%Y-%m-%d') AS lastUpdtPnttm, + a.last_updusr_id AS lastUpdusrId, + + a.use_yn AS useYn, + + a.isltn_psbl_yn AS isltnPsblYn, + a.cntns_lctr_psbl_yn AS cntnsLctrPsblYn, + + a.lctr_stng_yr AS lctrStngYr, + a.asgnm_tm_1 AS asgnmTm1, + a.asgnm_tm_2 AS asgnmTm2, + a.asgnm_tm_3 AS asgnmTm3, + a.asgnm_tm_4 AS asgnmTm4, + a.asgnm_tm_5 AS asgnmTm5, + a.asgnm_tm_6 AS asgnmTm6, + a.asgnm_tm_7 AS asgnmTm7, + a.asgnm_tm_8 AS asgnmTm8, + a.asgnm_tm_9 AS asgnmTm9, + a.asgnm_tm_10 AS asgnmTm10, + a.asgnm_tm_11 AS asgnmTm11, + a.asgnm_tm_12 AS asgnmTm12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index f105363e..b19b0568 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -1,46 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp index 018a20ac..05e9b650 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp @@ -107,7 +107,7 @@ 관할청 - + @@ -170,6 +170,17 @@ + + +

첨부파일

+ + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp index dc6792bd..d912d3c9 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp @@ -303,7 +303,7 @@ 형제 - + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp index 43093b00..c9f9485e 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp @@ -29,7 +29,16 @@ 교육과정관리 @@ -227,6 +277,7 @@ +
@@ -281,7 +332,10 @@ 관할청 - " /> + @@ -358,6 +412,87 @@
+ + + + +

필수입력 항목*

+

첨부파일

+ + + + + +

첨부파일 가능 용량은 20MB입니다.

업로드 순서는 1.신청서 2.안내문 입니다.

+
+ + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + + "> + + "> + + +
+
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp index 6310e166..8e122c66 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp @@ -31,22 +31,9 @@ @@ -239,7 +271,10 @@ 관할청 - + @@ -316,6 +351,88 @@ + + + +

필수입력 항목*

+

첨부파일

+ + + + + +

첨부파일 가능 용량은 20MB입니다.

+
+ + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + + "> + + "> + + +
+
+ + + + diff --git a/src/main/webapp/js/ncms_common_sendmail.js b/src/main/webapp/js/ncms_common_sendmail.js index fff80920..9ead47f6 100644 --- a/src/main/webapp/js/ncms_common_sendmail.js +++ b/src/main/webapp/js/ncms_common_sendmail.js @@ -1,379 +1,379 @@ -$(document).ready(function(){ //공통 js - /* 목록 정렬 항목 아이콘 표시 */ - var searchSortCnd = $("[name='searchSortCnd']").val(); - var searchSortOrd = $("[name='searchSortOrd']").val(); - if (searchSortCnd != "" && searchSortOrd != "" && searchSortCnd != undefined && searchSortOrd != undefined) { - var $sort_div = $("#sort_"+ searchSortCnd); - var sortClass = 'sortBtnAsc' ; - if (searchSortOrd == "desc") sortClass = "sortBtnDesc"; - $sort_div.replaceClass('btn_sort' , sortClass) ; - $sort_div.attr("btn_sort", searchSortOrd); - } - - // 정렬 항목 이벤트 - $(".sort").click(function(e) { - listSortOrd(this); - }); - - //파일업로드 드래그앤 드롭 - var objDragAndDrop = $(".upload_area"); - $(document).on("dragenter",".upload_area",function(e){ - e.stopPropagation(); - e.preventDefault(); - //$(this).css('border', '2px solid #0B85A1'); - }); - $(document).on("dragover",".upload_area",function(e){ - e.stopPropagation(); - e.preventDefault(); - }); - $(document).on("drop",".upload_area",function(e){ - //$(this).css('border', '2px dotted #0B85A1'); - e.preventDefault(); - var files = e.originalEvent.dataTransfer.files; - handleFileUpload(files,objDragAndDrop); //파일업로드 - }); - - $(document).on('dragenter', function (e){ - e.stopPropagation(); - e.preventDefault(); - }); - $(document).on('dragover', function (e){ - e.stopPropagation(); - e.preventDefault(); - //objDragAndDrop.css('border', '2px dotted #0B85A1'); - }); - $(document).on('drop', function (e){ - e.stopPropagation(); - e.preventDefault(); - }); - - drawUploadArea() - $(function(){ //단일 파일업로드 - $('#file_temp').change(function(e){ - var objUpload = $(".upload_area"); - var files = $('#file_temp')[0].files; - handleFileUpload(files,objUpload); //파일업로드 - }); - }); - - //최대 업로드 파일갯수 화면 노출 세팅 - if($("[name='limitcount']").length>0){ - if($('.limitcount_li').length > 0){ - $('.limitcount_li').text($("[name='limitcount']").val()); - } - - } - - //프린트 워커 마크 - $('.printBtn').click(function(e){ - if(!confirm("프린트 하시겠습니까?")){ - return false; - } - var printPopup ; - printPopup= window.open("/tempPrint.html","print_open","width=760,height=750,top=0,left=0,noresizable,toolbar=no,status=no,scrollbars=yes,directory=n"); - }); -}); - -//목록 정렬 항목 클릭 -function listSortOrd(obj){ - var sortOrd = $(obj).attr("sortOrd"); - var sortCnd = $(obj).attr("id"); - - $("[name='searchSortCnd']").val(sortCnd.substring(5)); // 구분자 제거 - if (sortOrd == "desc") $("[name='searchSortOrd']").val("asc"); - else $("[name='searchSortOrd']").val("desc"); - linkPage('1'); //각 JSP마다 다를때 메소드 정의해 줘야됨 -} - -//인쇄 영역 공통 -function printDiv(divName) { - var printContents = $("."+divName).html(); - var originalContents = document.body.innerHTML; - document.body.innerHTML = printContents; - window.print(); - document.body.innerHTML = originalContents; - - //originalContents 다시 그려줘서 이전의 메소드 다시 재지정 - $(".sort").click(function(e) { - listSortOrd(this); - }); -} - -function printDiv2(divName) { - var printContents = document.getElementById(divName).innerHTML; - var originalContents = document.body.innerHTML; - document.body.innerHTML = printContents; - window.print(); - document.body.innerHTML = originalContents; -} - -/* 파일사이즈 가져오기 */ -function getStrFileSize(filesize){ - var sizeStr=""; - var sizeKB = filesize/1024; - if(parseInt(sizeKB) > 1024){ - var sizeMB = sizeKB/1024; - sizeStr = sizeMB.toFixed(2)+" MB"; - }else{ - sizeStr = sizeKB.toFixed(2)+" KB"; - } - return sizeStr; -} - -/* 파일 이미지 가져오기 */ -function getfile_img(file_name){ - var img_type = file_name.split('.')[file_name.split('.').length-1].toLowerCase(); - if(img_type == "xlsx"){ - img_type = "xls"; - }else if(img_type == "jpeg" || img_type == "png" || img_type == "bmp"){ - img_type = "jpg"; - }else if(img_type == "doc"){ - img_type = "hwp"; - } - - var img_url = ""; - switch (img_type) { - case "pdf" : - img_url = "/direct/img/enroll_pdf_file.png" ; - break; - case "xls" : - img_url = "/direct/img/enroll_exel_file.png" ; - break; - case "hwp" : - img_url = "/direct/img/enroll_hwp_file.png" ; - break; - case "jpg" : - img_url = "/direct/img/enroll_jpg_file.png" ; - break; - case "mp4" : - img_url = "/direct/img/enroll_mp4_file.png" ; - break; - case "ppt" : - img_url = "/direct/img/enroll_ppt_file.png" ; - break; - case "zip" : - img_url = "/direct/img/enroll_zip_file.png" ; - break; - default : - img_url = "/direct/img/enroll_jpg_file.png" ; - } - - return img_url ; -} - -/*등록 시간 가져오기 */ -function getDate(){ - var d = new Date(); - var year = d.getFullYear(); - var month = d.getMonth() + 1 ; month.toString().length < 2 ? month = "0"+month : month; - var date = d.getDate() ; date.toString().length < 2 ? date = "0"+date : date; - var currentDate = year+"-"+month+"-"+date+" "; - var hour = d.getHours(); hour.toString().length < 2 ? hour = "0"+hour : hour; - var minutes = d.getMinutes() ; minutes.toString().length < 2 ? minutes = "0"+minutes : minutes; - var seconds = d.getSeconds() ; seconds.toString().length < 2 ? seconds = "0"+seconds : hour; - currentTime = hour+"-"+minutes+"-"+seconds ; - return currentDate + currentTime ; -} - -/*파일 드래그앤 드롭*/ -/* 파일등록 */ -var _fileIdx = 0; -var _fileForm2 = new Array(); -function handleFileUpload(files,obj) //업로드 function -{ - var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB) - var limitcount = $("input[name=limitcount]").val()*1 ; - if($('#tbody_fiielist').find('tr').length + files.length > limitcount ){ - alert("업로드 파일은 최대 "+limitcount+"개 입니다."); - return ; - } - for (var i = 0; i < files.length; i++){ - if(files[i].size > limitsize){ - alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 50MB이하만 업로드 가능합니다."); - return ; - } - } - - for (var i = 0; i < files.length; i++) - { - var fd = new FormData(); - fd.append('file', files[i]); - var tmpObj = new Object(); - tmpObj.name = "file_" + _fileIdx; - tmpObj.fileObj = files[i]; - - _fileForm2.push(tmpObj); - sendFileToServer(fd, obj, files[i], _fileIdx); - _fileIdx++; - - var totalfileSize = 0; - $('.totalfileCount').text($('.item_file_size').length) ; - $('.item_file_size').each(function(){ - totalfileSize += $(this).val()*1 ; - }); - $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; - } -} - -function sendFileToServer(formData, obj , fileObj, _fileIdx) -{ - $('.no_img_box').hide(); //list 박스 형식 변경 - $('.file_list_div').show(); - var list_html = ""; - var tt = ""; - list_html += ''; - - list_html += ''+fileObj.name+''; - list_html += ''+getStrFileSize(fileObj.size)+''; - list_html += ''+getDate()+''; - list_html += ''; - list_html += ''; - list_html += ''; - list_html += ''; - $('#tbody_fiielist').append(list_html); -} - -function resetFileZone(){ - $('.file_size').each(function(index, element){ - $(this).text(getStrFileSize($(this).text())) ; - }); -} - -/* 등록되어 있는 파일 삭제버튼 클릭시 */ -function delAtchFile(itemId , fileSn){ - if(!confirm("삭제하시겠습니까?")){ - return false; - } - - $.ajax({ - type: "POST", - url: "/uss/ion/fms/fmsfileDeleteAjax.do", - data:{ "atchFileId" : itemId , "fileSn" : fileSn}, - dataType:'json', - cache: false, - async: false, - timeout: 600000, - success: function (returnData, status) { - if(status == 'success'){ - if(returnData.result == 'fail'){ - alert("삭제처리가 실패하였습니다."); - }else if(returnData.result == 'auth_fail'){ - alert("세션이 종료되었습니다."); - }else if(returnData.result =='success'){ - $('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn).remove(); - alert("삭제되었습니다."); - drawUploadArea(); - $('.td_txt_exist > img').attr('src', '/images/no_img.jpg') ; - } - }else{ - alert("삭제처리에 실패하였습니다."); - } - }, - error: function (e) { - console.log("ERROR : ", e); - alert("삭제처리에 실패하였습니다."); - } - }); -} - -/* 임시파일 삭제버튼 클릭시 */ -function delete_item(obj, fileIdx){ - $(obj).closest("tr").remove(); - _fileForm2.forEach(function(fobj, idx) { - if (fobj.name == ("file_" + fileIdx)) _fileForm2[idx] = ""; - }); - - if($('.item_file_size').length == 0){ - $('.file_upload_box ').show(); - $('.upload_box_text').show(); - $('.fileAfter').hide(); - }else{ - var totalfileSize = 0; - $('.totalfileCount').text($('.item_file_size').length) ; - $('.item_file_size').each(function(){ - totalfileSize += $(this).val()*1 ; - }); - $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; - } -} - -function drawUploadArea(){ - $('.no_img_box').hide(); //list 박스 형식 변경 - $('.file_list_div').show(); - - $('.file_name_text').each(function(index, item){ - $(this).parent().find('img').attr('src', getfile_img($(this).text())) ; //이미지 변경 - }); - $('.file_size_text').each(function(index, item){ - $(this).text(getStrFileSize($(this).attr('value'))) - }); - - var totalfileSize = 0; - $('.totalfileCount').text($('.item_file_size').length) ; - $('.item_file_size').each(function(){ - totalfileSize += $(this).val()*1 ; - }); - $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; - - - if( $("#tbody_fiielist > [class^=item]").length == 0 && $("#tbody_fiielist > [class^=item]").size() == 0 ){ - $('.no_img_box').show(); - $('.file_list_div ').hide(); - } -} - -/* 글 저장 function */ -function goSave(method_parm ){ //method_parm :관리자로그 메소드에서 사용.(파일업로드 부분 공통으로 사용하여, 페이지 구분을 위해) - if(undefined !=$("input[name=limitcount]").val() && ""!=$("input[name=limitcount]").val() ){ - if($('#tbody_fiielist').find('tr').length == 0){ - alert("첨부파일을 추가해 주십시오"); - return false; - } - } - - var msg; - msg = "해당 첨부파일을 수정하시겠습니까?"; - var data = new FormData(document.writeForm == undefined ? document.board : document.writeForm); - _fileForm2.forEach(function(obj, idx) { - if (obj) data.append("file"+idx, obj.fileObj); - }); - - var url = ""; - if($("#pageType").val() == "insert"){ - url = "/cop/bbs/insertBoardArticleAjax.do"; - }else{ - url = document.writeForm == undefined ? "/kcc/mail/itnSendMailPro.do" : "/kcc/mail/itnSendMailPro.do"; - } - - $.ajax({ - type: "POST", - enctype: 'multipart/form-data', - url: url, - data: data, - dataType:'json', - async: false, - processData: false, - contentType: false, - cache: false, - //timeout: 600000, - success: function (returnData, status) { - if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 - if("fail"==returnData.result){ - alert(returnData.message); - return; - } - alert("저장 되었습니다."); - goList(); - } else if(status== 'fail'){ - alert("저장에 실패하였습니다. !!"); - } - }, - error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); } - }); -} - -(function ($) { - $.fn.replaceClass = function (pFromClass, pToClass) { - return this.removeClass(pFromClass).addClass(pToClass); - }; -}(jQuery)); +$(document).ready(function(){ //공통 js + /* 목록 정렬 항목 아이콘 표시 */ + var searchSortCnd = $("[name='searchSortCnd']").val(); + var searchSortOrd = $("[name='searchSortOrd']").val(); + if (searchSortCnd != "" && searchSortOrd != "" && searchSortCnd != undefined && searchSortOrd != undefined) { + var $sort_div = $("#sort_"+ searchSortCnd); + var sortClass = 'sortBtnAsc' ; + if (searchSortOrd == "desc") sortClass = "sortBtnDesc"; + $sort_div.replaceClass('btn_sort' , sortClass) ; + $sort_div.attr("btn_sort", searchSortOrd); + } + + // 정렬 항목 이벤트 + $(".sort").click(function(e) { + listSortOrd(this); + }); + + //파일업로드 드래그앤 드롭 + var objDragAndDrop = $(".upload_area"); + $(document).on("dragenter",".upload_area",function(e){ + e.stopPropagation(); + e.preventDefault(); + //$(this).css('border', '2px solid #0B85A1'); + }); + $(document).on("dragover",".upload_area",function(e){ + e.stopPropagation(); + e.preventDefault(); + }); + $(document).on("drop",".upload_area",function(e){ + //$(this).css('border', '2px dotted #0B85A1'); + e.preventDefault(); + var files = e.originalEvent.dataTransfer.files; + handleFileUpload(files,objDragAndDrop); //파일업로드 + }); + + $(document).on('dragenter', function (e){ + e.stopPropagation(); + e.preventDefault(); + }); + $(document).on('dragover', function (e){ + e.stopPropagation(); + e.preventDefault(); + //objDragAndDrop.css('border', '2px dotted #0B85A1'); + }); + $(document).on('drop', function (e){ + e.stopPropagation(); + e.preventDefault(); + }); + + drawUploadArea() + $(function(){ //단일 파일업로드 + $('#file_temp').change(function(e){ + var objUpload = $(".upload_area"); + var files = $('#file_temp')[0].files; + handleFileUpload(files,objUpload); //파일업로드 + }); + }); + + //최대 업로드 파일갯수 화면 노출 세팅 + if($("[name='limitcount']").length>0){ + if($('.limitcount_li').length > 0){ + $('.limitcount_li').text($("[name='limitcount']").val()); + } + + } + + //프린트 워커 마크 + $('.printBtn').click(function(e){ + if(!confirm("프린트 하시겠습니까?")){ + return false; + } + var printPopup ; + printPopup= window.open("/tempPrint.html","print_open","width=760,height=750,top=0,left=0,noresizable,toolbar=no,status=no,scrollbars=yes,directory=n"); + }); +}); + +//목록 정렬 항목 클릭 +function listSortOrd(obj){ + var sortOrd = $(obj).attr("sortOrd"); + var sortCnd = $(obj).attr("id"); + + $("[name='searchSortCnd']").val(sortCnd.substring(5)); // 구분자 제거 + if (sortOrd == "desc") $("[name='searchSortOrd']").val("asc"); + else $("[name='searchSortOrd']").val("desc"); + linkPage('1'); //각 JSP마다 다를때 메소드 정의해 줘야됨 +} + +//인쇄 영역 공통 +function printDiv(divName) { + var printContents = $("."+divName).html(); + var originalContents = document.body.innerHTML; + document.body.innerHTML = printContents; + window.print(); + document.body.innerHTML = originalContents; + + //originalContents 다시 그려줘서 이전의 메소드 다시 재지정 + $(".sort").click(function(e) { + listSortOrd(this); + }); +} + +function printDiv2(divName) { + var printContents = document.getElementById(divName).innerHTML; + var originalContents = document.body.innerHTML; + document.body.innerHTML = printContents; + window.print(); + document.body.innerHTML = originalContents; +} + +/* 파일사이즈 가져오기 */ +function getStrFileSize(filesize){ + var sizeStr=""; + var sizeKB = filesize/1024; + if(parseInt(sizeKB) > 1024){ + var sizeMB = sizeKB/1024; + sizeStr = sizeMB.toFixed(2)+" MB"; + }else{ + sizeStr = sizeKB.toFixed(2)+" KB"; + } + return sizeStr; +} + +/* 파일 이미지 가져오기 */ +function getfile_img(file_name){ + var img_type = file_name.split('.')[file_name.split('.').length-1].toLowerCase(); + if(img_type == "xlsx"){ + img_type = "xls"; + }else if(img_type == "jpeg" || img_type == "png" || img_type == "bmp"){ + img_type = "jpg"; + }else if(img_type == "doc"){ + img_type = "hwp"; + } + + var img_url = ""; + switch (img_type) { + case "pdf" : + img_url = "/direct/img/enroll_pdf_file.png" ; + break; + case "xls" : + img_url = "/direct/img/enroll_exel_file.png" ; + break; + case "hwp" : + img_url = "/direct/img/enroll_hwp_file.png" ; + break; + case "jpg" : + img_url = "/direct/img/enroll_jpg_file.png" ; + break; + case "mp4" : + img_url = "/direct/img/enroll_mp4_file.png" ; + break; + case "ppt" : + img_url = "/direct/img/enroll_ppt_file.png" ; + break; + case "zip" : + img_url = "/direct/img/enroll_zip_file.png" ; + break; + default : + img_url = "/direct/img/enroll_jpg_file.png" ; + } + + return img_url ; +} + +/*등록 시간 가져오기 */ +function getDate(){ + var d = new Date(); + var year = d.getFullYear(); + var month = d.getMonth() + 1 ; month.toString().length < 2 ? month = "0"+month : month; + var date = d.getDate() ; date.toString().length < 2 ? date = "0"+date : date; + var currentDate = year+"-"+month+"-"+date+" "; + var hour = d.getHours(); hour.toString().length < 2 ? hour = "0"+hour : hour; + var minutes = d.getMinutes() ; minutes.toString().length < 2 ? minutes = "0"+minutes : minutes; + var seconds = d.getSeconds() ; seconds.toString().length < 2 ? seconds = "0"+seconds : hour; + currentTime = hour+"-"+minutes+"-"+seconds ; + return currentDate + currentTime ; +} + +/*파일 드래그앤 드롭*/ +/* 파일등록 */ +var _fileIdx = 0; +var _fileForm2 = new Array(); +function handleFileUpload(files,obj) //업로드 function +{ + var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB) + var limitcount = $("input[name=limitcount]").val()*1 ; + if($('#tbody_fiielist').find('tr').length + files.length > limitcount ){ + alert("업로드 파일은 최대 "+limitcount+"개 입니다."); + return ; + } + for (var i = 0; i < files.length; i++){ + if(files[i].size > limitsize){ + alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 50MB이하만 업로드 가능합니다."); + return ; + } + } + + for (var i = 0; i < files.length; i++) + { + var fd = new FormData(); + fd.append('file', files[i]); + var tmpObj = new Object(); + tmpObj.name = "file_" + _fileIdx; + tmpObj.fileObj = files[i]; + + _fileForm2.push(tmpObj); + sendFileToServer(fd, obj, files[i], _fileIdx); + _fileIdx++; + + var totalfileSize = 0; + $('.totalfileCount').text($('.item_file_size').length) ; + $('.item_file_size').each(function(){ + totalfileSize += $(this).val()*1 ; + }); + $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; + } +} + +function sendFileToServer(formData, obj , fileObj, _fileIdx) +{ + $('.no_img_box').hide(); //list 박스 형식 변경 + $('.file_list_div').show(); + var list_html = ""; + var tt = ""; + list_html += ''; + + list_html += ''+fileObj.name+''; + list_html += ''+getStrFileSize(fileObj.size)+''; + list_html += ''+getDate()+''; + list_html += ''; + list_html += ''; + list_html += ''; + list_html += ''; + $('#tbody_fiielist').append(list_html); +} + +function resetFileZone(){ + $('.file_size').each(function(index, element){ + $(this).text(getStrFileSize($(this).text())) ; + }); +} + +/* 등록되어 있는 파일 삭제버튼 클릭시 */ +function delAtchFile(itemId , fileSn){ + if(!confirm("삭제하시겠습니까?")){ + return false; + } + + $.ajax({ + type: "POST", + url: "/uss/ion/fms/fmsfileDeleteAjax.do", + data:{ "atchFileId" : itemId , "fileSn" : fileSn}, + dataType:'json', + cache: false, + async: false, + timeout: 600000, + success: function (returnData, status) { + if(status == 'success'){ + if(returnData.result == 'fail'){ + alert("삭제처리가 실패하였습니다."); + }else if(returnData.result == 'auth_fail'){ + alert("세션이 종료되었습니다."); + }else if(returnData.result =='success'){ + $('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn).remove(); + alert("삭제되었습니다."); + drawUploadArea(); + $('.td_txt_exist > img').attr('src', '/images/no_img.jpg') ; + } + }else{ + alert("삭제처리에 실패하였습니다."); + } + }, + error: function (e) { + console.log("ERROR : ", e); + alert("삭제처리에 실패하였습니다."); + } + }); +} + +/* 임시파일 삭제버튼 클릭시 */ +function delete_item(obj, fileIdx){ + $(obj).closest("tr").remove(); + _fileForm2.forEach(function(fobj, idx) { + if (fobj.name == ("file_" + fileIdx)) _fileForm2[idx] = ""; + }); + + if($('.item_file_size').length == 0){ + $('.file_upload_box ').show(); + $('.upload_box_text').show(); + $('.fileAfter').hide(); + }else{ + var totalfileSize = 0; + $('.totalfileCount').text($('.item_file_size').length) ; + $('.item_file_size').each(function(){ + totalfileSize += $(this).val()*1 ; + }); + $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; + } +} + +function drawUploadArea(){ + $('.no_img_box').hide(); //list 박스 형식 변경 + $('.file_list_div').show(); + + $('.file_name_text').each(function(index, item){ + $(this).parent().find('img').attr('src', getfile_img($(this).text())) ; //이미지 변경 + }); + $('.file_size_text').each(function(index, item){ + $(this).text(getStrFileSize($(this).attr('value'))) + }); + + var totalfileSize = 0; + $('.totalfileCount').text($('.item_file_size').length) ; + $('.item_file_size').each(function(){ + totalfileSize += $(this).val()*1 ; + }); + $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; + + + if( $("#tbody_fiielist > [class^=item]").length == 0 && $("#tbody_fiielist > [class^=item]").size() == 0 ){ + $('.no_img_box').show(); + $('.file_list_div ').hide(); + } +} + +/* 글 저장 function */ +function goSave(method_parm ){ //method_parm :관리자로그 메소드에서 사용.(파일업로드 부분 공통으로 사용하여, 페이지 구분을 위해) + if(undefined !=$("input[name=limitcount]").val() && ""!=$("input[name=limitcount]").val() ){ + if($('#tbody_fiielist').find('tr').length == 0){ + alert("첨부파일을 추가해 주십시오"); + return false; + } + } + + var msg; + msg = "해당 첨부파일을 수정하시겠습니까?"; + var data = new FormData(document.writeForm == undefined ? document.board : document.writeForm); + _fileForm2.forEach(function(obj, idx) { + if (obj) data.append("file"+idx, obj.fileObj); + }); + + var url = ""; + if($("#pageType").val() == "insert"){ + url = "/cop/bbs/insertBoardArticleAjax.do"; + }else{ + url = document.writeForm == undefined ? "/kcc/mail/itnSendMailPro.do" : "/kcc/mail/itnSendMailPro.do"; + } + + $.ajax({ + type: "POST", + enctype: 'multipart/form-data', + url: url, + data: data, + dataType:'json', + async: false, + processData: false, + contentType: false, + cache: false, + //timeout: 600000, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + if("fail"==returnData.result){ + alert(returnData.message); + return; + } + alert("저장 되었습니다."); + goList(); + } else if(status== 'fail'){ + alert("저장에 실패하였습니다. !!"); + } + }, + error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); } + }); +} + +(function ($) { + $.fn.replaceClass = function (pFromClass, pToClass) { + return this.removeClass(pFromClass).addClass(pToClass); + }; +}(jQuery)); diff --git a/src/main/webapp/js/util.js b/src/main/webapp/js/util.js index 10df2fd1..6f03330e 100644 --- a/src/main/webapp/js/util.js +++ b/src/main/webapp/js/util.js @@ -1,134 +1,134 @@ -String.prototype.bytes = function() { - var str = this; - var l = 0; - for (var i=0; i 128) ? 3 : 1; - return l; -}; - -String.prototype.cut = function(len) { - var str = this; - var l = 0; - for (var i=0; i 128) ? 3 : 1; - if (l > len) return str.substring(0,i); - } - return str; -}; - -/** - * object empty check - * */ - -function emptyObject(param){ - return Object.keys(param).length === 0; -} - - - -function isEmptyList(data){ - if(data == undefined || data == null || data.length == 0){ - return true; - } - return false; -} - - -function dateFormatStr (dateStr) { - var refinedDateStr; - var rv; - - if (dateStr == null) { - return null; - } - refinedDateStr = dateStr.match(/\d+/g); - if (refinedDateStr == null || refinedDateStr.length == 0) { - return null; - } - refinedDateStr = refinedDateStr + ""; - switch (refinedDateStr.length) { - case 4: - rv = moment(refinedDateStr, "HHmm"); - break; - case 6: - rv = moment(refinedDateStr, "HHmmss"); - break; - case 8: - rv = moment(refinedDateStr, "YYYYMMDD"); - break; - case 12: - rv = moment(refinedDateStr, "YYYYMMDDHHmm"); - break; - case 14: - rv = moment(refinedDateStr, "YYYYMMDDHHmmss"); - break; - default: - throw new Error("invalid date str " + dateStr); - } - return rv; -} - -function dateFormat(str, type) { - var date = dateFormatStr(str); - if (date == null) { - return ""; - } - - if (type == "slash") { - return date.format("YYYY/MM/DD"); - } else if (type == "date") { - return date.format("YYYY.MM.DD"); - } else if (type == "colon") { - return date.format("YYYY:MM:DD"); - } else if (type == "dash") { - return date.format("YYYY-MM-DD"); - }else if(type == "normal"){ - return date.format("YYYYMMDD"); - } else { - return date.format("YYYY-MM-DD"); - } -}; - -function timeFomat (value, type) { - var date = dateFormatStr(value); - if (date == null) { - return ""; - } - - if (type == "slash") { - return date.format("HH:mm:ss"); - } else if (type == "date") { - return date.format("HH:mm:ss"); - } else if (type == "colon") { - return date.format("HH:mm:ss"); - } else if (type == "dash") { - return date.format("HH:mm:ss"); - } else { - return date.format("HH:mm"); - } -}; - -function countBytes(obj, len, target){ - var cnt = obj.value.bytes(); - var txtSplit; - var ieVersion; - if(cnt > 0){ - txtSplit = (obj.value).split("\n"); - if(navigator.appName == "Microsoft Internet Explorer"){ - ieVersion = navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5,navigator.appVersion.indexOf("MSIE")+8); - if(ieVersion >= "9.0"){ - cnt += txtSplit.length - 1 - } - }else{ - cnt += txtSplit.length - 1 - } - } - - if(cnt <= len){ - target.textContent = cnt; - }else{ - alert("허용 글자수를 초과하였습니다."); - obj.value = obj.value.cut(len - txtSplit.length + 1); - target.textContent = obj.value.bytes(); - } -} - +String.prototype.bytes = function() { + var str = this; + var l = 0; + for (var i=0; i 128) ? 3 : 1; + return l; +}; + +String.prototype.cut = function(len) { + var str = this; + var l = 0; + for (var i=0; i 128) ? 3 : 1; + if (l > len) return str.substring(0,i); + } + return str; +}; + +/** + * object empty check + * */ + +function emptyObject(param){ + return Object.keys(param).length === 0; +} + + + +function isEmptyList(data){ + if(data == undefined || data == null || data.length == 0){ + return true; + } + return false; +} + + +function dateFormatStr (dateStr) { + var refinedDateStr; + var rv; + + if (dateStr == null) { + return null; + } + refinedDateStr = dateStr.match(/\d+/g); + if (refinedDateStr == null || refinedDateStr.length == 0) { + return null; + } + refinedDateStr = refinedDateStr + ""; + switch (refinedDateStr.length) { + case 4: + rv = moment(refinedDateStr, "HHmm"); + break; + case 6: + rv = moment(refinedDateStr, "HHmmss"); + break; + case 8: + rv = moment(refinedDateStr, "YYYYMMDD"); + break; + case 12: + rv = moment(refinedDateStr, "YYYYMMDDHHmm"); + break; + case 14: + rv = moment(refinedDateStr, "YYYYMMDDHHmmss"); + break; + default: + throw new Error("invalid date str " + dateStr); + } + return rv; +} + +function dateFormat(str, type) { + var date = dateFormatStr(str); + if (date == null) { + return ""; + } + + if (type == "slash") { + return date.format("YYYY/MM/DD"); + } else if (type == "date") { + return date.format("YYYY.MM.DD"); + } else if (type == "colon") { + return date.format("YYYY:MM:DD"); + } else if (type == "dash") { + return date.format("YYYY-MM-DD"); + }else if(type == "normal"){ + return date.format("YYYYMMDD"); + } else { + return date.format("YYYY-MM-DD"); + } +}; + +function timeFomat (value, type) { + var date = dateFormatStr(value); + if (date == null) { + return ""; + } + + if (type == "slash") { + return date.format("HH:mm:ss"); + } else if (type == "date") { + return date.format("HH:mm:ss"); + } else if (type == "colon") { + return date.format("HH:mm:ss"); + } else if (type == "dash") { + return date.format("HH:mm:ss"); + } else { + return date.format("HH:mm"); + } +}; + +function countBytes(obj, len, target){ + var cnt = obj.value.bytes(); + var txtSplit; + var ieVersion; + if(cnt > 0){ + txtSplit = (obj.value).split("\n"); + if(navigator.appName == "Microsoft Internet Explorer"){ + ieVersion = navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5,navigator.appVersion.indexOf("MSIE")+8); + if(ieVersion >= "9.0"){ + cnt += txtSplit.length - 1 + } + }else{ + cnt += txtSplit.length - 1 + } + } + + if(cnt <= len){ + target.textContent = cnt; + }else{ + alert("허용 글자수를 초과하였습니다."); + obj.value = obj.value.cut(len - txtSplit.length + 1); + target.textContent = obj.value.bytes(); + } +} +