diff --git a/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java b/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java
index fe311808..a3eeeb99 100644
--- a/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java
+++ b/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java
@@ -43,8 +43,11 @@ public class OAuthLogin {
private OAuth20Service oauthService;
private OAuthVO oauthVO;
-
public OAuthLogin(OAuthVO oauthVO, String callType) {
+ this(oauthVO, callType, null);
+ }
+
+ public OAuthLogin(OAuthVO oauthVO, String callType, String councilJsessionId) {
if(oauthVO.getService().equals("google"))
{
@@ -57,7 +60,7 @@ public class OAuthLogin {
this.oauthService = new ServiceBuilder(oauthVO.getClientId())
.apiSecret(oauthVO.getClientSecret())
- .callback(oauthVO.getRedirectUrl(callType))
+ .callback(oauthVO.getRedirectUrl(callType, councilJsessionId))
.defaultScope(scope)
//.scope("profile")
.build(oauthVO.getApi20Instance());
@@ -66,7 +69,7 @@ public class OAuthLogin {
this.oauthService = new ServiceBuilder(oauthVO.getClientId())
.apiSecret(oauthVO.getClientSecret())
- .callback(oauthVO.getRedirectUrl(callType))
+ .callback(oauthVO.getRedirectUrl(callType, councilJsessionId))
//.scope("profile")
.build(oauthVO.getApi20Instance());
}
diff --git a/src/main/java/egovframework/com/ext/oauth/service/OAuthUniversalUser.java b/src/main/java/egovframework/com/ext/oauth/service/OAuthUniversalUser.java
index 4ea52aab..a0119a47 100644
--- a/src/main/java/egovframework/com/ext/oauth/service/OAuthUniversalUser.java
+++ b/src/main/java/egovframework/com/ext/oauth/service/OAuthUniversalUser.java
@@ -28,6 +28,11 @@ public class OAuthUniversalUser {
private String regDd;
private NlibLoginVO nlibVO;
+
+ private String councilJsessionId; /* 로그인 접속 문화원 코드 */
+ private String councilHomeUrl; /* 로그인 접속 문화원 홈 URL */
+
+
private boolean isValidLogin = false;
public boolean isValid() {
@@ -178,4 +183,20 @@ public class OAuthUniversalUser {
this.regDd = regDd;
}
+ public String getCouncilJsessionId() {
+ return councilJsessionId;
+ }
+
+ public void setCouncilJsessionId(String councilJsessionId) {
+ this.councilJsessionId = councilJsessionId;
+ }
+
+ public String getCouncilHomeUrl() {
+ return councilHomeUrl;
+ }
+
+ public void setCouncilHomeUrl(String councilHomeUrl) {
+ this.councilHomeUrl = councilHomeUrl;
+ }
+
}
diff --git a/src/main/java/egovframework/com/ext/oauth/service/OAuthVO.java b/src/main/java/egovframework/com/ext/oauth/service/OAuthVO.java
index 70fcb82f..42b697cd 100644
--- a/src/main/java/egovframework/com/ext/oauth/service/OAuthVO.java
+++ b/src/main/java/egovframework/com/ext/oauth/service/OAuthVO.java
@@ -3,9 +3,45 @@ package egovframework.com.ext.oauth.service;
import com.github.scribejava.apis.GoogleApi20;
import com.github.scribejava.core.builder.api.DefaultApi20;
+import nlib.cmm.crypto.AriaCrypto;
import nlib.util.StringUtil;
public class OAuthVO implements OAuthConfig {
+
+ private String serviceName;
+ private String clientId;
+ private String clientSecret;
+ private String redirectUrl;
+ private DefaultApi20 api20Instance;
+ private String profileUrl;
+
+ private boolean isNaver;
+ private boolean isGoogle;
+ private boolean isKakao;
+
+ public OAuthVO(String serviceName, String clientId, String clientSecret, String redirectUrl) {
+ this.serviceName = serviceName;
+ this.clientId = clientId;
+ this.clientSecret = clientSecret;
+ this.redirectUrl = redirectUrl;
+
+ this.isGoogle = StringUtil.equalsIgnoreCase(GOOGLE_SERVICE_NAME, serviceName);
+ this.isNaver = StringUtil.equalsIgnoreCase(NAVER_SERVICE_NAME, serviceName);
+ this.isKakao = StringUtil.equalsIgnoreCase(KAKAO_SERVICE_NAME, serviceName);
+
+ if (isGoogle) {
+ this.api20Instance = GoogleApi20.instance();
+ this.profileUrl = GOOGLE_PROFILE_URL;
+ } else if (isNaver) {
+ this.api20Instance = NaverAPI20.instance();
+ this.profileUrl = NAVER_PROFILE_URL;
+ } else if (isKakao) {
+ this.api20Instance = KakaoAPI20.instance();
+ this.profileUrl = KAKAO_PROFILE_URL;
+ }
+ }
+
+ // GET / SET
public String getService() {
return serviceName;
}
@@ -30,9 +66,11 @@ public class OAuthVO implements OAuthConfig {
this.clientSecret = clientSecret;
}
- public String getRedirectUrl(String callType) {
+ public String getRedirectUrl(String callType, String councilJsessionId) {
String retUrl = redirectUrl.replaceAll("\\{callType\\}", callType);
retUrl = retUrl.replaceAll("\\{oauthServiceName\\}", getService());
+ String encCouncilJsessionId = AriaCrypto.encode(councilJsessionId);
+ retUrl = retUrl.replaceAll("\\{councilJsessionId\\}", (councilJsessionId == null ? "" : encCouncilJsessionId));
return retUrl;
}
@@ -79,38 +117,5 @@ public class OAuthVO implements OAuthConfig {
public void setKakao(boolean isKakao) {
this.isKakao = isKakao;
}
-
- private String serviceName;
- private String clientId;
- private String clientSecret;
- private String redirectUrl;
- private DefaultApi20 api20Instance;
- private String profileUrl;
- private boolean isNaver;
- private boolean isGoogle;
- private boolean isKakao;
-
- public OAuthVO(String serviceName, String clientId, String clientSecret, String redirectUrl) {
- this.serviceName = serviceName;
- this.clientId = clientId;
- this.clientSecret = clientSecret;
- this.redirectUrl = redirectUrl;
-
- this.isGoogle = StringUtil.equalsIgnoreCase(GOOGLE_SERVICE_NAME, serviceName);
- this.isNaver = StringUtil.equalsIgnoreCase(NAVER_SERVICE_NAME, serviceName);
- this.isKakao = StringUtil.equalsIgnoreCase(KAKAO_SERVICE_NAME, serviceName);
-
- if (isGoogle) {
- this.api20Instance = GoogleApi20.instance();
- this.profileUrl = GOOGLE_PROFILE_URL;
- } else if (isNaver) {
- this.api20Instance = NaverAPI20.instance();
- this.profileUrl = NAVER_PROFILE_URL;
- } else if (isKakao) {
- this.api20Instance = KakaoAPI20.instance();
- this.profileUrl = KAKAO_PROFILE_URL;
- }
- }
-
}
diff --git a/src/main/java/nlib/cmm/fileupload/FileUploadController_BK20210924.java b/src/main/java/nlib/cmm/fileupload/FileUploadController_BK20210924.java
deleted file mode 100644
index 3599ff7a..00000000
--- a/src/main/java/nlib/cmm/fileupload/FileUploadController_BK20210924.java
+++ /dev/null
@@ -1,246 +0,0 @@
-package nlib.cmm.fileupload;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-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.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import egovframework.com.cmm.service.FileVO;
-import nlib.bbs.service.AttachFileVO;
-import nlib.cmm.exception.ErrorMessage;
-import nlib.cmm.service.NlibProperty;
-import nlib.util.FileUtil;
-import nlib.util.StringUtil;
-import nlib.util.UUID;
-
-/**
- *
- * @Class Name : FileUploadController.java
- *
- * @Description : 파일 업로드를 처리하는 컨트롤러
- *
- *
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- *
- *
- * @ ------------ -------- ---------------------------
- * @ 수정일 수정자 수정내용
- * @ ------------ -------- ---------------------------
- * @ 2021. 7. 15. KNKIM 최초 생성
- *
- *
- * @author 이씨플라자 * DIGITALSHIP KNKIM
- * @since 2021. 7. 15.
- * @version 1.0
- *
- */
-@Controller
-public class FileUploadController_BK20210924 {
-
- private static final Logger log = LoggerFactory.getLogger(FileUploadController_BK20210924.class);
-
-
- /**
- * 첨부파일이 저장되는 최상위 위치
- */
- private String FILEUPLOAD_BASE_PATH = NlibProperty.getProperty("fileupload.base.path");
-
- /**
- * 첨부파일 임시 저장 위치
- */
- private String FILEUPLOAD_TEMP_SUBPATH = NlibProperty.getProperty("fileupload.temp.subpath");
-
- /**
- * 경로 부적합 오류 메시지
- */
- private static final String MSG_NOT_VALID_FILE_PATH = "파일 경로가 부적합합니다. 관리자에게 문의하여 주시기 바랍니다.";
-
-
- /**
- * 파일업로드(Ajax) 처리
- * - 화면 : Javascript Free Open Framework DropZone 사용
- *
- * @param multiRequest
- * @param subPathKey
- * @param response : 파일정보를 담은 JSON String
- * @return
- */
- @ResponseBody
- @RequestMapping(value="/fileupload/uploadFilesAjax_BK20210924.do", produces="application/json")
- public ResponseEntity uploadFilesAjax(
- final MultipartHttpServletRequest multiRequest
- , @RequestParam("subPathKey") String subPathKey
- , HttpServletResponse response) {
-
- String message = null;
-
- // TODO : 권한 체크 추가할 것
- List result = new ArrayList();
-
- try {
-
- // 최상위 위치
- if(FileUtil.isEmpty(FILEUPLOAD_BASE_PATH)) {
- message = "첨부파일이 저장되는 최상위 위치정보값이 정확하지 않습니다.";
- log.error(message + " : FILEUPLOAD_BASE_PATH 값 부재");
- ErrorMessage errorMessage = new ErrorMessage("ERROR", message);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
- }
-
- // 서브 위치
- if(StringUtil.isEmpty(subPathKey)) {
- message = "첨부파일이 저장되는 하위 위치정보값이 정확하지 않습니다.";
- log.error(message + " : 매개변수 subPathKey 값 부재");
- ErrorMessage errorMessage = new ErrorMessage("ERROR", message);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
- }
- String subPath = NlibProperty.getProperty(subPathKey);
- if(StringUtil.isEmpty(subPath)) {
- message = "첨부파일이 저장되는 하위 위치정보값을 찾을 수 없습니다.";
- log.error(message + " : 매개변수 subPathKey의 속성값 부재");
- ErrorMessage errorMessage = new ErrorMessage("ERROR", message);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
- }
-
- // 위치정보 적합 확인
- if(FileUtil.isNotValid(FILEUPLOAD_BASE_PATH + subPath)) {
- message = MSG_NOT_VALID_FILE_PATH;
- log.error(message + " : " + (FILEUPLOAD_BASE_PATH + subPath));
- ErrorMessage errorMessage = new ErrorMessage("ERROR", message);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
- }
-
- // 파일 업로드 처리
- final Map files = multiRequest.getFileMap();
- log.debug("uploadFilesAjax : 진입 > 파일수 = " + (files == null ? " files null " : files.size()));
-
- File dir = new File(FILEUPLOAD_BASE_PATH + subPath);
- if(!dir.exists() || !dir.isDirectory()) dir.mkdirs();
-
- if(!files.isEmpty()) {
-
- Iterator> itr = files.entrySet().iterator();
- MultipartFile file;
- String filePath = "";
- FileVO fvo;
-
- int fileKey = 1;
- while (itr.hasNext()) {
- Entry entry = itr.next();
-
- file = entry.getValue();
- String orginFileName = file.getOriginalFilename();
-
- //--------------------------------------
- // 원 파일명이 없는 경우 처리 SKIP
- // (첨부가 되지 않은 input file type)
- //--------------------------------------
- if (orginFileName == null || "".equals(orginFileName)) {
- continue;
- }
-
- int index = orginFileName.lastIndexOf(".");
- String fileExt = (index < 1 ? "" : orginFileName.substring(index + 1));
- String newName = UUID.getPhysicalFileName();
- long size = file.getSize();
-
- if (!"".equals(orginFileName)) {
- filePath = FILEUPLOAD_BASE_PATH + subPath + "/" + newName;
- log.debug("FILE UPLOAD : filePath=" + filePath);
-
- file.transferTo(new File(FileUtil.filePathBlackList(filePath)));
- }
-
- fvo = new FileVO();
- fvo.setFileExtsn(fileExt);
- fvo.setFileMg(Long.toString(size));
- fvo.setOrignlFileNm(orginFileName);
- fvo.setStreFileNm(newName);
- fvo.setFileSn(String.valueOf(fileKey));
-
- result.add(fvo);
-
- fileKey++;
- }
- }
- } catch(Exception e) {
- ErrorMessage errorMessage = new ErrorMessage("ERROR", "처리에 실패하였습니다 : " + e.toString());
- e.printStackTrace();
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
- }
-
- // Convert Json
- ObjectMapper mapper = new ObjectMapper();
- String json;
- try {
- json = mapper.writeValueAsString(result);
- log.debug("RETURN DATA > json:" + json);
- } catch (JsonProcessingException e) {
- json = null;
- e.printStackTrace();
- ErrorMessage errorMessage = new ErrorMessage("ERROR", "JSON 변환 처리에 실패하였습니다 : " + e.toString());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
- }
-
- HttpHeaders responseHeaders = new HttpHeaders();
- ResponseEntity ret = ResponseEntity.ok().headers(responseHeaders).body(json);
- return ret;
- }
-
- /**
- * 파일 다운로드를 처리한다.
- *
- * @param params
- * @param mv
- * @return
- * @throws Exception
- */
- @RequestMapping(value="/fileupload/downloadAttachFile_BK20210924.do")
- public ModelAndView downloadAttachFile(AttachFileVO attachFileVO, ModelAndView mv) throws Exception {
-
- // TODO 권한 설정 기능 추가 필요
-
- String subPath = NlibProperty.getProperty(attachFileVO.getSubPathKey());
- String fullPath = FILEUPLOAD_BASE_PATH + "/" + subPath + "/" + attachFileVO.getFileId() + "-" + attachFileVO.getFileSeq();
-
- log.debug("downloadAttachFile > fullPath = " + fullPath);
-
- if(FileUtil.isNotValid(fullPath)) {
- throw new Exception(MSG_NOT_VALID_FILE_PATH);
- }
-
- File file = new File(FileUtil.filePathBlackList(fullPath));
- if(!file.isFile()) {
- throw new Exception("파일 정보가 부적합합니다. 관리자에게 문의하여 주시기 바랍니다.");
- }
-
- mv.setViewName("downloadView"); // dispatcher-servlet.xml내 BeanNameViewResolver 정의
- mv.addObject("downloadFile", file);
- mv.addObject("fname", attachFileVO.getFileName());
-
- return mv;
- }
-}
-
diff --git a/src/main/java/nlib/col/service/impl/RentDAO_BK.java b/src/main/java/nlib/col/service/impl/RentDAO_BK.java
index c333a69e..852bc689 100644
--- a/src/main/java/nlib/col/service/impl/RentDAO_BK.java
+++ b/src/main/java/nlib/col/service/impl/RentDAO_BK.java
@@ -9,8 +9,8 @@ import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
-@Repository("rentDAO")
-public class RentDAO extends DataApi
+@Repository("rentDAO_BK")
+public class RentDAO_BK extends DataApi
{
private static final Logger log = LoggerFactory.getLogger(RentDAO.class);
diff --git a/src/main/java/nlib/security/SpringSecurityConfig.java b/src/main/java/nlib/security/SpringSecurityConfig.java
index 201c580e..cdce67d2 100644
--- a/src/main/java/nlib/security/SpringSecurityConfig.java
+++ b/src/main/java/nlib/security/SpringSecurityConfig.java
@@ -61,7 +61,9 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
- .antMatchers("/**").permitAll();
+ .antMatchers("/**").permitAll()
+ .and().csrf()
+ .disable();
/*
.antMatchers("/login/**").permitAll()
.antMatchers("/member/*.do").permitAll()
@@ -101,7 +103,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.disable();
*/
http.logout()
- .logoutSuccessUrl("/login/loginCouncil.do?logout=logout")
+ .logoutSuccessUrl("/login/logout.do")
.invalidateHttpSession(true).deleteCookies("JSESSIONID")
;
}
diff --git a/src/main/java/nlib/user/service/impl/LoginServiceImpl.java b/src/main/java/nlib/user/service/impl/LoginServiceImpl.java
index a00383c4..70616f52 100644
--- a/src/main/java/nlib/user/service/impl/LoginServiceImpl.java
+++ b/src/main/java/nlib/user/service/impl/LoginServiceImpl.java
@@ -100,8 +100,6 @@ public class LoginServiceImpl implements LoginService
* 지방문화원 해당 세션에 대한 최종 로그인 세션을 처리한다.
* 정상인 경우 null을 리턴하고, 오류발생시 오류코드를 리턴한다.
*
- * (non-Javadoc)
- * @see nlib.user.service.LoginService#loginCouncilSSO(javax.servlet.http.HttpServletRequest, java.lang.String)
*/
public String loginCouncilSSO(HttpServletRequest req, String councilCd, OAuthUniversalUser oUser) {
@@ -203,9 +201,6 @@ public class LoginServiceImpl implements LoginService
/*
* DNS 호스트명으로 지방문화원 정보를 조회한다. (지방문화원코드, 명칭)
- *
- * (non-Javadoc)
- * @see nlib.user.service.LoginService#selectCouncilInfoByDnsHost(java.lang.String)
*/
public HashMap selectCouncilInfoByDnsHost(String councilDnsHost) {
return loginDAO.selectCouncilInfoByDnsHost(councilDnsHost);
@@ -219,98 +214,8 @@ public class LoginServiceImpl implements LoginService
return loginDAO.agreeProvInfo(loginVO);
}
-
-
public NlibLoginVO selectLoginUserInfo(NlibLoginVO loginVO) {
return loginDAO.selectLoginUserInfo(loginVO);
}
- /* SNS 연동 SSO를 통한 로그인 처리한다.
- *
- * return값이 null인 경우, 정상적인 로그인 처리 완료
- * null이 아닌 경우, REDIRECT되어야 하는 URL(오류 코드 포함)
- *
- */
-// public String loginOauth(HttpServletRequest req, String snsUserId) {
-//
-// // SNS 연동 사용자UID로 사용자정보 조회
-// if(StringUtil.isEmpty(snsUserId)) return "/login/loginForm.do?error=req-sns-sso";
-//
-// NlibLoginVO nLoginVO = loginDAO.selectLoginUserInfo(snsUserId);
-//
-// if(nLoginVO == null) {
-// return "/login/loginForm.do?error=new-membership";
-// }
-//
-// // 아이디와 패스워드로, Security 가 알아 볼 수 있는 token 객체로 변경한다.
-// UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(nLoginVO.getLoginUserId(), nLoginVO.getUserPwd());
-//
-// try {
-// // AuthenticationManager 에 token 을 넘기면 UserDetailsService 가 받아 처리하도록 한다.
-// Authentication authentication = authenticationManager.authenticate(token);
-//
-// SecUserVO userVO = (SecUserVO)authentication.getPrincipal();
-//
-// // 실제 SecurityContext 에 authentication 정보를 등록한다.
-// SecurityContextHolder.getContext().setAuthentication(authentication);
-//
-// // TODO : 로그인 로그 정보를 통합자료시스템에 전송한다.
-// userVO.setAccIp(req.getRemoteAddr());
-// userVO.setLoginSucsYn("Y");
-// loginDAO.insertLoginLog(userVO);
-//
-// } catch (DisabledException e) {
-// e.printStackTrace();
-// return "/login/loginForm.do?error=locked";
-// } catch (LockedException e) {
-// e.printStackTrace();
-// return "/login/loginForm.do?error=disable";
-// } catch (BadCredentialsException e) {
-// e.printStackTrace();
-// return "/login/loginForm.do?error=invalid-password";
-// } catch (Exception e) {
-// e.printStackTrace();
-// return "/login/loginForm.do?error=other&message=" + e.toString();
-// }
-//
-// return null;
-// }
-//
-
-
-
- /*
- * SNS 연동 SSO를 통한 로그인 처리한다.
- *
- * return값이 null인 경우, 정상적인 로그인 처리 완료
- * null이 아닌 경우, REDIRECT되어야 하는 URL(오류 코드 포함)
- *
- */
-// public String loginCouncil(HttpServletRequest req, String snsUserId) {
-//
-// // SNS 연동 사용자UID로 사용자정보 조회
-// if(StringUtil.isEmpty(snsUserId)) return "/login/loginForm.do?error=req-sns-sso";
-//
-//
-// NlibLoginVO nLoginParamVO = new NlibLoginVO();
-//
-// nLoginParamVO.setSnsId(snsId);
-// nLoginParamVO.setSnsType(oauthServiceName);
-//
-// NlibLoginVO nLoginVO = loginDAO.selectLoginUserInfo(nLoginParamVO);
-//
-// if(nLoginVO == null) {
-// return "/login/loginForm.do?error=new-membership";
-// }
-//
-// // 아이디와 패스워드로, Security 가 알아 볼 수 있는 token 객체로 변경한다.
-// UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(nLoginVO.getLoginUserId(), nLoginVO.getPassword());
-// NlibLoginVO nlibLoginedVO = loginProcSecurity(req, token);
-//
-// // 로그인 로그 저장
-// loginDAO.insertLoginLog(NlibLoginedVO);
-//
-// return null;
-// }
-
}
\ No newline at end of file
diff --git a/src/main/java/nlib/user/web/LoginController.java b/src/main/java/nlib/user/web/LoginController.java
index 4d92504b..1b2db72c 100644
--- a/src/main/java/nlib/user/web/LoginController.java
+++ b/src/main/java/nlib/user/web/LoginController.java
@@ -2,7 +2,6 @@
package nlib.user.web;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@@ -29,10 +28,10 @@ import egovframework.com.ext.oauth.service.OAuthLogin;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.com.ext.oauth.service.OAuthVO;
import nlib.cmm.NlibCommonController;
+import nlib.cmm.crypto.AriaCrypto;
import nlib.cmm.service.NlibProperty;
import nlib.cmm.session.SessionConfig;
import nlib.col.service.CartService;
-import nlib.col.service.CollectionVO;
import nlib.user.service.LoginService;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@@ -65,11 +64,6 @@ import nlib.util.StringUtil;
@Controller
public class LoginController extends NlibCommonController {
- public LoginController() {
- super();
- log.debug("==========================> LoginController Create : !!!! " + (new java.util.Date()));
- }
-
private static final Logger log = LoggerFactory.getLogger(LoginController.class);
//-------------------------------------------
@@ -94,38 +88,33 @@ public class LoginController extends NlibCommonController {
/**
- * 각 지방문화원 사이트에서 로그인을 위해서 최초 접속한다.
- * 지방문화원 정보를 확인하여 로그인처리가 진행될 수 있도록 한다.
- *
+ * 접속한 지방문화원정보를 세션에 설정한다.
+ *
* @param req
* @param res
- * @param session
* @param returnUrl
- * @param model
- * @return
+ * @param callType
* @throws Exception
*/
- @RequestMapping("/login/loginCouncil.do")
- public String loginCouncil(
+ public void setCouncilInfo(
HttpServletRequest req,
HttpServletResponse res,
- HttpSession session,
- @RequestParam(required = false) String logout,
- @RequestParam(required = false) String returnUrl,
- @RequestParam(required = false) String callType,
- ModelMap model) throws Exception {
+ String returnUrl,
+ String callType) throws Exception {
+ HttpSession session = req.getSession();
String url = req.getRequestURL().toString();
String councilHomeUrl = url.replaceAll(req.getRequestURI(), "") + req.getContextPath();
String councilReturnUrl = councilHomeUrl + (StringUtil.isEmpty(returnUrl) ? "/" : returnUrl);
String councilDnsHost = StringUtil.getHostName(url);
+ String councilJsessionId = session.getId();
// 캐쉬된 요청URL인 존재하는 경우, 리턴URL로 설정
RequestCache cache = new HttpSessionRequestCache();
SavedRequest savedRequest = cache.getRequest(req, res);
if (savedRequest != null) {
councilReturnUrl = savedRequest.getRedirectUrl();
- log.debug("loginCouncil > HttpSessionRequestCache에서 획득 councilReturnUrl = " + councilReturnUrl);
+ log.debug("setCouncilInfo > HttpSessionRequestCache에서 획득 councilReturnUrl = " + councilReturnUrl);
}
// 지방문화원 코드 확인
@@ -135,35 +124,29 @@ public class LoginController extends NlibCommonController {
session.setAttribute("councilReturnUrl", councilReturnUrl);
session.setAttribute("councilHomeUrl", councilHomeUrl);
-
session.setAttribute("councilDnsHost", councilDnsHost);
session.setAttribute("councilCd", councilCd);
session.setAttribute("councilNm", councilNm);
session.setAttribute("callType", callType);
- log.debug("loginCouncil > sessionid=" + session.getId());
- log.debug("loginCouncil > REQ URL = " + url);
- log.debug("loginCouncil > councilJsessionId = " + session.getId());
- log.debug("loginCouncil > councilDnsHost = " + councilDnsHost);
- log.debug("loginCouncil > councilReturnUrl = " + councilReturnUrl);
- log.debug("loginCouncil > councilHomeUrl = " + councilHomeUrl);
- log.debug("loginCouncil > councilCd = " + councilCd);
- log.debug("loginCouncil > councilNm = " + councilNm);
- log.debug("loginCouncil > callType = " + callType);
+ log.debug("setCouncilInfo > REQ URL = " + url);
+ log.debug("setCouncilInfo > councilJsessionId = " + councilJsessionId);
+ log.debug("setCouncilInfo > councilDnsHost = " + councilDnsHost);
+ log.debug("setCouncilInfo > councilReturnUrl = " + councilReturnUrl);
+ log.debug("setCouncilInfo > councilHomeUrl = " + councilHomeUrl);
+ log.debug("setCouncilInfo > councilCd = " + councilCd);
+ log.debug("setCouncilInfo > councilNm = " + councilNm);
+ log.debug("setCouncilInfo > callType = " + callType);
- model.addAttribute("url" , NlibProperty.getString("nculture.login.preset.redirect.url"));
- model.addAttribute("councilJsessionId", session.getId());
- model.addAttribute("councilDnsHost" , councilDnsHost);
- model.addAttribute("councilCd" , councilCd);
- model.addAttribute("councilNm" , StringUtil.encodeBase64(councilNm));
- model.addAttribute("councilHomeUrl" , StringUtil.encodeBase64(councilHomeUrl));
- model.addAttribute("councilReturnUrl" , StringUtil.encodeBase64(councilReturnUrl));
- model.addAttribute("logout" , StringUtil.getString(logout, ""));
- model.addAttribute("callType" , StringUtil.getString(callType, ""));
+ // 세션 추가정보 저장소에 회귀 문화원 정보 담기
+ OAuthUniversalUser oauthUser = new OAuthUniversalUser();
+ oauthUser.setCouncilJsessionId(councilJsessionId);
+ oauthUser.setCouncilHomeUrl(councilHomeUrl);
+ SessionConfig.setLoginInfo(councilJsessionId, oauthUser);
- return "nlib/login/loginPreSet";
+ return;
}
-
+
/**
* 로그인 콜백을 위한 설정을 처리한 후, 로그인 페이지로 전환한다.
*
@@ -175,6 +158,7 @@ public class LoginController extends NlibCommonController {
*/
@RequestMapping("/login/loginPreSet.do")
public String loginPreSet(HttpServletRequest req,
+ HttpServletResponse response,
@RequestParam(required = false) String error,
@RequestParam(required = false) String message,
@RequestParam(required = false) String logout,
@@ -183,6 +167,9 @@ public class LoginController extends NlibCommonController {
Model model,
HttpSession session) {
+ //response.setHeader("X-Frame-Options", "ALLOW-FROM https://nlib-dev.nculture.org");
+ //response.setHeader("X-Frame-Options", "ALLOW-FROM https://seoul.nculture.org/");
+
//----------------------------------------------
// 지방문화원 사이트에서 접속한 경우, 지방문화원 정보 확인
//----------------------------------------------
@@ -232,20 +219,34 @@ public class LoginController extends NlibCommonController {
* @param model
* @return
*/
- @RequestMapping("/login/loginForm.do")
- public String loginForm(HttpServletRequest req,
+ @RequestMapping(value= {"/login/loginForm.do", "/login/loginFormPopup.do", "/login/memberSnsForm.do"})
+ public String loginForm(
+ HttpServletRequest req,
+ HttpServletResponse res,
+ @RequestParam(required = false) String callType,
+ @RequestParam(required = false) String returnUrl,
+ @RequestParam(required = false) String logout,
@RequestParam(required = false) String error,
@RequestParam(required = false) String message,
- @RequestParam(required = false) String logout,
RedirectAttributes redirectAttrs,
- @RequestParam Map paramMap,
- Model model,
- HttpSession session) {
+ Model model) throws Exception {
+ String reqPath = req.getServletPath();
+
+ // callType
+ if(StringUtil.isEmpty(callType)) {
+ if(reqPath.startsWith("/login/member")) callType = OAuthLogin.CALL_TYPE_MEMBER;
+ else callType = OAuthLogin.CALL_TYPE_LOGIN;
+ }
+
+ // 지방문화원 사이트 정보를 세션 및 추가정보에 담는다.
+ setCouncilInfo(req, res, returnUrl, callType);
+ HttpSession session = req.getSession();
+
//----------------------------------------------
// 지방문화원 사이트에서 접속한 경우, 지방문화원 정보 확인
//----------------------------------------------
- String councilJsessionId = (String)session.getAttribute("councilJsessionId");
+ String councilJsessionId = session.getId();
String councilDnsHost = (String)session.getAttribute("councilDnsHost");
String councilReturnUrl = (String)session.getAttribute("councilReturnUrl");
String councilHomeUrl = (String)session.getAttribute("councilHomeUrl");
@@ -263,15 +264,15 @@ public class LoginController extends NlibCommonController {
//----------------------------------------------
// SNS 연동 URL 생성
//----------------------------------------------
- OAuthLogin naverLogin = new OAuthLogin(naverAuthVO, OAuthLogin.CALL_TYPE_LOGIN);
+ OAuthLogin naverLogin = new OAuthLogin(naverAuthVO, callType, councilJsessionId);
log.debug("naverLogin.getOAuthURL() = "+naverLogin.getOAuthURL());
model.addAttribute("naverUrl", naverLogin.getOAuthURL());
- OAuthLogin googleLogin = new OAuthLogin(googleAuthVO, OAuthLogin.CALL_TYPE_LOGIN);
+ OAuthLogin googleLogin = new OAuthLogin(googleAuthVO, callType, councilJsessionId);
log.debug("googleLogin.getOAuthURL() = "+googleLogin.getOAuthURL());
model.addAttribute("googleUrl", googleLogin.getOAuthURL());
- OAuthLogin kakaoLogin = new OAuthLogin(kakaoAuthVO, OAuthLogin.CALL_TYPE_LOGIN);
+ OAuthLogin kakaoLogin = new OAuthLogin(kakaoAuthVO, OAuthLogin.CALL_TYPE_LOGIN, councilJsessionId);
log.debug("kakaoLogin.getOAuthURL() = "+kakaoLogin.getOAuthURL());
model.addAttribute("kakaoUrl", kakaoLogin.getOAuthURL());
@@ -281,7 +282,21 @@ public class LoginController extends NlibCommonController {
model.addAttribute("message", "로그아웃되었습니다. 감사합니다.");
}
- return "nlib/login/loginForm";
+ String retScreen = "nlib/login/loginFormPopup";
+ if(OAuthLogin.CALL_TYPE_MEMBER.equalsIgnoreCase(callType)) retScreen = "nlib/login/memberSnsForm";
+ else if(reqPath.equalsIgnoreCase("/login/loginForm.do")) retScreen = "nlib/login/loginForm";
+
+ return retScreen;
+ }
+
+ @RequestMapping(value = {"/login/loginMessage.do"})
+ public String loginMessage(
+ HttpServletRequest req,
+ String message,
+ Model model) {
+
+ model.addAttribute("message", message);
+ return "nlib/login/loginMessage";
}
/**
@@ -301,16 +316,37 @@ public class LoginController extends NlibCommonController {
HttpServletRequest req,
@PathVariable String callType,
@PathVariable String oauthServiceName,
+ @RequestParam(required = false) String councilJsessionId,
@RequestParam(required = false) String code,
@RequestParam(required = false) String error,
Model model,
HttpSession session) throws Exception {
- String councilJsessionId = (String)session.getAttribute("councilJsessionId");
- String councilCd = (String)session.getAttribute("councilCd");
- String councilHomeUrl = (String)session.getAttribute("councilHomeUrl");
String redirectUrl = NlibProperty.getString("home.uri"); // "/index.do";
+
+ if(StringUtil.isEmpty(councilJsessionId)) {
+ model.addAttribute("message", "잘못된 접근입니다. (접속문화원 세션정보 오류)");
+ model.addAttribute("loginBtnYn", "Y");
+ model.addAttribute("memberBtnYn", "Y");
+ return "nlib/login/loginMessage";
+ }
+ councilJsessionId = AriaCrypto.decode(councilJsessionId);
+ OAuthUniversalUser tmpUser = SessionConfig.getLoginInfo(councilJsessionId);
+ if(tmpUser == null || StringUtil.isEmpty(tmpUser.getCouncilHomeUrl())) {
+ model.addAttribute("message", "잘못된 접근입니다. (접속문화원 정보 오류)");
+ model.addAttribute("loginBtnYn", "Y");
+ model.addAttribute("memberBtnYn", "Y");
+ return "nlib/login/loginMessage";
+ }
+ String councilHomeUrl = tmpUser.getCouncilHomeUrl();
+ if(StringUtil.isEmpty(councilHomeUrl)) {
+ model.addAttribute("message", "잘못된 접근입니다. (접속문화원 URL 정보 오류)");
+ model.addAttribute("loginBtnYn", "Y");
+ model.addAttribute("memberBtnYn", "Y");
+ return "nlib/login/loginMessage";
+ }
+
if(StringUtil.isNotEmpty(error)) {
// 구글 정보 제공 동의 거절한 경우
@@ -318,13 +354,14 @@ public class LoginController extends NlibCommonController {
if(StringUtil.equalsIgnoreCase("access_denied", error)) {
if(OAuthLogin.CALL_TYPE_LOGIN.equalsIgnoreCase(callType)) {
// 로그인인 경우
- redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.login.redirect.uri");
+ model.addAttribute("loginBtnYn", "Y");
} else {
// 회원가입인 경우
- redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.member.redirect.uri");
+ model.addAttribute("memberBtnYn", "Y");
}
+ redirectUrl = councilHomeUrl + "/login/loginMessage.do";
model.addAttribute("url", redirectUrl);
- model.addAttribute("message", StringUtil.encodeUrl("서비스를 이용하시려면 정보제공 동의가 필요합니다."));
+ model.addAttribute("message", StringUtil.encodeUrl("서비스를 이용하시려면 SNS의 정보제공 동의가 필요합니다."));
return "nlib/login/loginPreSet";
}
}
@@ -443,7 +480,11 @@ public class LoginController extends NlibCommonController {
OAuthUniversalUser oauthUser = SessionConfig.getLoginInfo(jsessionId);
if(oauthUser == null || !oauthUser.isValid()) {
- throw new Exception("잘못된 접근입니다.");
+ SessionConfig.removeLoginInfo(jsessionId);
+ model.addAttribute("message", "잘못된 접근입니다. 정상적인 방법으로 이용바랍니다.");
+ model.addAttribute("loginBtnYn", "Y");
+ model.addAttribute("memberBtnYn", "Y");
+ return "nlib/login/loginMessage";
}
//-----------------------------------------------
@@ -470,18 +511,22 @@ public class LoginController extends NlibCommonController {
if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_MEMBERSHIP)) {
SessionConfig.setNewMemberInfo(jsessionId, oauthUser);
SessionConfig.removeLoginInfo(jsessionId);
- model.addAttribute("message", "회원가입하신 후, 이용 가능합니다.");
- return "redirect:" + NlibProperty.getString("member.new.url");
+ model.addAttribute("message", "먼저 회원가입하신 후, 이용하여 주시기 바랍니다.");
+ model.addAttribute("memberBtnYn", "Y");
+ return "nlib/login/loginMessage";
} else if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_SNSLOGIN)) {
+ SessionConfig.setNewMemberInfo(jsessionId, oauthUser);
SessionConfig.removeLoginInfo(jsessionId);
model.addAttribute("message", "먼저 로그인할 SNS를 선택하여 로그인 바랍니다.");
- return "redirect:" + NlibProperty.getString("login.back.url");
+ model.addAttribute("loginBtnYn", "Y");
+ return "nlib/login/loginMessage";
}
// 잘못된 접근 또는 기타 오류
SessionConfig.removeLoginInfo(jsessionId);
- model.addAttribute("message", "기타 문제로 인하여 로그인에 실패하였습니다. : " + loginResult);
- return "redirect:" + NlibProperty.getString("login.back.url");
+ model.addAttribute("message", "로그인에 실패하였습니다. 관리자에게 문의바랍니다 : " + loginResult);
+ return "nlib/login/loginMessage";
+
}
/**
@@ -491,8 +536,11 @@ public class LoginController extends NlibCommonController {
* @return
*/
@RequestMapping("/login/logout.do")
- public String logout(HttpServletRequest req) {
- return null;
+ public String logout(HttpServletRequest req, ModelMap model) {
+ model.addAttribute("message", "이용해 주셔서 감사드립니다.");
+ model.addAttribute("loginBtnYn", "Y");
+ model.addAttribute("logout", "logout");
+ return "nlib/login/loginMessage";
}
/**
diff --git a/src/main/java/nlib/user/web/MemberController.java b/src/main/java/nlib/user/web/MemberController.java
index 2f680227..11c742b0 100644
--- a/src/main/java/nlib/user/web/MemberController.java
+++ b/src/main/java/nlib/user/web/MemberController.java
@@ -188,12 +188,10 @@ public class MemberController extends NlibCommonController{
count=memberService.selectSnsIdCount(oauthUser);
if(count>0)
{
- model.addAttribute("msg","이미 가입된 계정입니다. 로그인해주세요.");
- model.addAttribute("url","/nlib"+NlibProperty.getString("login.url"));
- return "nlib/cmm/alert";
+ model.addAttribute("message", "이미 가입된 계정입니다. 로그인 후, 이용해 주시기 바랍니다.");
+ model.addAttribute("loginBtnYn", "Y");
+ return "nlib/login/loginMessage";
}
-
-
model.addAttribute("termTitle", termRet.get("TITLE"));
model.addAttribute("termContent", termRet.get("CONTENT"));
diff --git a/src/main/resources/egovframework/spring/context-oauth.xml b/src/main/resources/egovframework/spring/context-oauth.xml
index 3dc598f8..fe564a68 100644
--- a/src/main/resources/egovframework/spring/context-oauth.xml
+++ b/src/main/resources/egovframework/spring/context-oauth.xml
@@ -8,7 +8,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
@@ -24,7 +24,7 @@
-
+
diff --git a/src/main/resources/nlib/nlib.properties b/src/main/resources/nlib/nlib.properties
index 1dfe42b6..9d633b07 100644
--- a/src/main/resources/nlib/nlib.properties
+++ b/src/main/resources/nlib/nlib.properties
@@ -20,11 +20,11 @@ home.uri = /index.do
#----------------------------------------
# \ub85c\uadf8\uc778/\ud68c\uc6d0\uac00\uc785\uad00\ub828 URL \uc815\ubcf4
#----------------------------------------
-member.new.url = /member/snsCertForm.do
+member.new.url = /login/memberSnsForm.do
# \ub85c\uadf8\uc778 \ub610\ub294 \uad8c\ud55c\uc5c6\ub294 \uacbd\uc6b0, \ub85c\uadf8\uc778\uc73c\ub85c \uc804\ud658\ucc98\ub9ac\ub418\uc5b4 \uc811\uc18d\ub418\ub294 \ucd5c\ucd08 \uc8fc\uc18c
-login.url = /login/loginCouncil.do
-# \ub85c\uadf8\uc778 \ubb38\uc81c \ubc1c\uc0dd \uc2dc, \ub2e4\uc2dc \ub9ac\ub2e4\uc774\ub809\ud2b8\ub420 \ub85c\uadf8\uc778\ud654\uba74 \uc8fc\uc18c
-login.back.url = /login/loginForm.do
+login.url = /login/loginForm.do
+# \ub85c\uadf8\uc778 \ubb38\uc81c \ubc1c\uc0dd \uc2dc, \ub2e4\uc2dc \ub9ac\ub2e4\uc774\ub809\ud2b8\ub420 \uc8fc\uc18c
+login.back.url = /login/loginGuide.do
# \ud734\uba74\uacc4\uc88c \ud574\uc9c0\uc548\ub0b4 \uc8fc\uc18c
login.dormant.url = /login/activateDormantAccForm.do
# \uc2e0\uaddc \uc9c0\ubc29\ubb38\ud654\uc6d0 \uc815\ubcf4\uc81c\uacf5 \ub3d9\uc758 \uc8fc\uc18c
@@ -35,7 +35,7 @@ nculture.login.redirect.uri = /login/loginForm.do
nculture.login.post.login.redirect.uri = /login/loginCouncilSSO.do
nculture.login.post.member.redirect.uri = /member/selectMemberJoiningInfo.do
nculture.login.preset.redirect.url = https://nlib-dev.nculture.org/login/loginPreSet.do
-nculture.member.redirect.uri = /member/snsCertForm.do
+nculture.member.redirect.uri = /login/memberSnsForm.do
#----------------------------------------
# NLIB \uc9c0\ubc29\ubb38\ud654\uc6d0\uc815\ubcf4
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/login/loginForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/login/loginForm.jsp
index 35fef86e..33719e7c 100644
--- a/src/main/webapp/WEB-INF/jsp/nlib/login/loginForm.jsp
+++ b/src/main/webapp/WEB-INF/jsp/nlib/login/loginForm.jsp
@@ -14,10 +14,11 @@
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
- *
+ * @ 2021.10. 20. KNKIM 퍼블리쉬 템플릿 적용
*
+ *
* @author 이씨플라자 * DIGITALSHIP JSYOO
- * @since 2021. 7. 12.
+ * @since 2021. 10. 20.
* @version 1.0
*
*/
@@ -28,49 +29,47 @@
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
- - 결과
-
-
-
-LoginTest
-
-
-
-
+
-
-
-
-
-error : ${error }
-
-message : ${message }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--------------------
-" />
-_______________
-
-
-
-
\ No newline at end of file
+
+
+
+ 로그인 섹션영역
+
+
+
+
+
+
+
+
+
+
+
로그인할 때 이용할 SNS를 선택하세요!
+
+
회원가입하고 대출/열람 서비스를 이용해보세요!
+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/login/loginMessage.jsp b/src/main/webapp/WEB-INF/jsp/nlib/login/loginMessage.jsp
new file mode 100644
index 00000000..3df4725b
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/nlib/login/loginMessage.jsp
@@ -0,0 +1,71 @@
+<%
+/**
+ *
+ * @Class Name : loginMessage.jsp
+ *
+ * @Description : 로그인/회원가입 처리 과정 중 문제 발생에 따른 안내 화면
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 10. 21. KNKIM 최초생성
+
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 10. 21.
+ * @version 1.0
+ *
+ */
+ %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+
+
+
+
+
+ 안내 섹션영역
+
+
+
+
+
+
+
+
+
위의 안내 메시지를 확인하신 후, 다시 로그인하시거나 회원가입을 진행해 주시기 바랍니다.
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/login/loginPreSet.jsp b/src/main/webapp/WEB-INF/jsp/nlib/login/loginPreSet.jsp
index 9240d7ea..869d46c0 100644
--- a/src/main/webapp/WEB-INF/jsp/nlib/login/loginPreSet.jsp
+++ b/src/main/webapp/WEB-INF/jsp/nlib/login/loginPreSet.jsp
@@ -28,45 +28,42 @@
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
-서비스 이동중입니다.
-
-
-
-서비스 이동중
+처리중입니다
+
-
-
-
-
--------------------
-
-
-
-
-
-
-COOKIES :
-
-
-
\ No newline at end of file
+
+
+
+
+
+ 로그인 섹션영역
+
+
+
+
+
+
처리중입니다. 잠시만 기다려 주시기 바랍니다.
${message }
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/login/loginPreSetPopup.jsp b/src/main/webapp/WEB-INF/jsp/nlib/login/loginPreSetPopup.jsp
new file mode 100644
index 00000000..e9bcaab9
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/nlib/login/loginPreSetPopup.jsp
@@ -0,0 +1,86 @@
+<%
+/**
+ *
+ * @Class Name : loginPreSet.jsp
+ *
+ * @Description : 로그인폼 사전 처리 페이지 이동
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 10.13. KNKIM 최초 생성
+ *
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 10.13.
+ * @version 1.0
+ *
+ */
+ %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
+
+
+
+처리중입니다
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/login/memberSnsForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/login/memberSnsForm.jsp
new file mode 100644
index 00000000..d07e094d
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/nlib/login/memberSnsForm.jsp
@@ -0,0 +1,72 @@
+<%
+/**
+ *
+ * @Class Name : snsForm.jsp
+ *
+ * @Description : 회원가입 SNS 인증 선택화면 출력
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 10. 21. KNKIM 최초생성
+
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 10. 21.
+ * @version 1.0
+ *
+ */
+ %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+
+
+
+
+ 회원가입 섹션영역
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/userInfo/getMemberQrcodeFormPopup.jsp b/src/main/webapp/WEB-INF/jsp/nlib/userInfo/getMemberQrcodeFormPopup.jsp
index e68063ae..ecc6f64e 100644
--- a/src/main/webapp/WEB-INF/jsp/nlib/userInfo/getMemberQrcodeFormPopup.jsp
+++ b/src/main/webapp/WEB-INF/jsp/nlib/userInfo/getMemberQrcodeFormPopup.jsp
@@ -30,40 +30,38 @@
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
-지방문화원 소장자료관 회원증
-
-
-
-${pageTitle}
-
-
-
-
-
-
-
${pageTitle}
-
${loginVO.name} |
-
-
-
- ${dateStr}
-
-
-
-
-
- 회원코드 : ${loginVO.mbInfoId}
-
-
-
-
- ※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다.
-
-
-
-
-
+
+
+
내 회원증 확인
+
QR코드를 리더기에 스캔하세요.
+
+
+
+
${loginVO.name}
+
${dateStr}
+
+
+
+
회원코드
+
${loginVO.mbInfoId}
+
+
남은시간23초
+
+
+

+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/tiles/inc/header.jsp b/src/main/webapp/WEB-INF/tiles/inc/header.jsp
index f60cef9e..66b0b6d5 100644
--- a/src/main/webapp/WEB-INF/tiles/inc/header.jsp
+++ b/src/main/webapp/WEB-INF/tiles/inc/header.jsp
@@ -26,7 +26,7 @@ $(document).ready(function() {
헤더영역
-
+
검색
@@ -53,8 +53,7 @@ $(document).ready(function() {
-
- 로그인
+ 로그인
@@ -67,8 +66,8 @@ $(document).ready(function() {
+ - 회원증
- - 회원증
- 알림(10)
- 카트(10)
diff --git a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp
index aa332ac9..1de845e2 100644
--- a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp
+++ b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp
@@ -31,7 +31,7 @@
- --- 이하 임시 추가 메뉴 ---
- ID/PW찾기
- - 회원가입
+ - 회원가입
- 암호화
- 환경설정갱신
diff --git a/src/main/webapp/WEB-INF/tiles/tiles-layout-popup.jsp b/src/main/webapp/WEB-INF/tiles/tiles-layout-popup.jsp
index 01dba6d6..3f698d75 100644
--- a/src/main/webapp/WEB-INF/tiles/tiles-layout-popup.jsp
+++ b/src/main/webapp/WEB-INF/tiles/tiles-layout-popup.jsp
@@ -4,48 +4,10 @@
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-소장자료관
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp b/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp
index c447080b..481f9558 100644
--- a/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp
+++ b/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp
@@ -13,20 +13,19 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
-
-
+
+
소장자료관
@@ -35,12 +34,14 @@
function fn_setPageTitle(title) {
document.title = "소장자료관 - " + title;
}
+
+
-
-