diff --git a/src/main/java/nlib/cmm/session/SessionConfig.java b/src/main/java/nlib/cmm/session/SessionConfig.java index 1918c8b5..45e665f5 100644 --- a/src/main/java/nlib/cmm/session/SessionConfig.java +++ b/src/main/java/nlib/cmm/session/SessionConfig.java @@ -44,10 +44,10 @@ public class SessionConfig implements HttpSessionListener { private static final String DELIMITER = "\t"; /* 세션별 로그인 처리 가능한 정보 목록 */ - private static final Map loginSessions = new ConcurrentHashMap<>(); + private static final Map loginSessions = new ConcurrentHashMap<>(); /* 세션별 회원가입 처리 가능한 정보 목록 */ - private static final Map memberSessions = new ConcurrentHashMap<>(); + private static final Map memberSessions = new ConcurrentHashMap<>(); @Override public void sessionCreated(HttpSessionEvent se) { @@ -77,7 +77,7 @@ public class SessionConfig implements HttpSessionListener { log.debug("setLoginInfo : " + sessionId + ", " + oUser.getSnsType() + ", " + oUser.getSnsId()); loginSessions.put(sessionId, oUser); } - + /** * 지방문화원 해당 세션에 로그인 처리 가능한 SNS 유형 및 SNS ID 정보를 리턴한다. * 리턴유형 문자열 배열 @@ -91,7 +91,7 @@ public class SessionConfig implements HttpSessionListener { if(StringUtil.isEmpty(sessionId)) return null; - return loginSessions.get(sessionId); + return (OAuthUniversalUser)loginSessions.get(sessionId); } /** @@ -147,7 +147,7 @@ public class SessionConfig implements HttpSessionListener { public static OAuthUniversalUser getNewMemberInfo(String sessionId) { if(StringUtil.isEmpty(sessionId)) return null; - return memberSessions.get(sessionId); + return (OAuthUniversalUser)memberSessions.get(sessionId); } /** diff --git a/src/main/java/nlib/security/SpringSecurityConfig.java b/src/main/java/nlib/security/SpringSecurityConfig.java index e012b7dc..f45166a6 100644 --- a/src/main/java/nlib/security/SpringSecurityConfig.java +++ b/src/main/java/nlib/security/SpringSecurityConfig.java @@ -61,11 +61,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() - .antMatchers("/login/login*.do").permitAll() - .antMatchers("/login/logout*.do").permitAll() - .antMatchers("/login/naver/*.do").permitAll() - .antMatchers("/login/google/*.do").permitAll() - .antMatchers("/login/kakao/*.do").permitAll() + .antMatchers("/login/**").permitAll() .antMatchers("/member/*.do").permitAll() .antMatchers("/member/*.ajax").permitAll() .antMatchers("/member/naver/*.do").permitAll() diff --git a/src/main/java/nlib/user/service/LoginService.java b/src/main/java/nlib/user/service/LoginService.java index 9e87c6e3..208669c9 100644 --- a/src/main/java/nlib/user/service/LoginService.java +++ b/src/main/java/nlib/user/service/LoginService.java @@ -20,7 +20,10 @@ public interface LoginService public final String ERR_CODE_DISABLE = "ERR_CODE_LOGIN_DISABLE"; /* 오류코드 : 계정유효하지 않음 */ public final String ERR_CODE_MISMATCH = "ERR_CODE_LOGIN_MISMATCH"; /* 오류코드 : ID,PW일치하지 않음 */ public final String ERR_CODE_EXC = "ERR_CODE_LOGIN_EXC"; /* 오류코드 : 기타오류 */ + public final String ERR_CODE_REQ_AGREE = "ERR_CODE_REQ_AGREE"; /* 오류코드 : 해당지방문화원 정보제공 동의 필요 */ + public final String WRN_CODE_DORMANT = "WRN_CODE_DOMANT"; /* 경고코드 : 휴면계정 */ + public String login(HttpServletRequest req, String username, String password); public String loginOauth(HttpServletRequest req, String oauthServiceName, String snsId, String joinCouncilCd, String councilJsessionId); @@ -30,4 +33,6 @@ public interface LoginService public DataApiResVO logout(DataApiReqVO reqVO); public HashMap selectCouncilInfoByDnsHost(String councilDnsHost); + + public int activateDormantAcc(NlibLoginVO loginVO); } \ No newline at end of file diff --git a/src/main/java/nlib/user/service/impl/LoginDAO.java b/src/main/java/nlib/user/service/impl/LoginDAO.java index 2f55bd3d..72167348 100644 --- a/src/main/java/nlib/user/service/impl/LoginDAO.java +++ b/src/main/java/nlib/user/service/impl/LoginDAO.java @@ -32,4 +32,8 @@ public class LoginDAO extends EgovComAbstractDAO { public HashMap selectCouncilInfoByDnsHost(String councilDnsHost) { return (HashMap) selectOne("LoginDAO.selectCouncilInfoByDnsHost", councilDnsHost); } + + public int activateDormantAcc(NlibLoginVO loginVO) { + return update("LoginDAO.activateDormantAcc", loginVO); + } } \ No newline at end of file diff --git a/src/main/java/nlib/user/service/impl/LoginServiceImpl.java b/src/main/java/nlib/user/service/impl/LoginServiceImpl.java index b5a1a625..52230c3d 100644 --- a/src/main/java/nlib/user/service/impl/LoginServiceImpl.java +++ b/src/main/java/nlib/user/service/impl/LoginServiceImpl.java @@ -121,6 +121,17 @@ public class LoginServiceImpl implements LoginService return ERR_CODE_REQ_MEMBERSHIP; } + // 해당 지방문화원에 미등록된 경우, 정보제공 동의로 이동 처리 필요 + if(StringUtil.isEmpty(nLoginVO.getJoinCouncilCd())) { + return ERR_CODE_REQ_AGREE; + } + + // 휴면계좌 확인 + if("P".equals(nLoginVO.getStatus())) { + oUser.setNlibVO(nLoginVO); + return WRN_CODE_DORMANT; + } + // Spring Security 로그인처리위한 token 생성하여 로그인 처리 UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(nLoginVO.getUsername(), nLoginVO.getPassword()); NlibLoginVO nlibLoginedVO = loginProcSecurity(req, token); @@ -195,7 +206,9 @@ public class LoginServiceImpl implements LoginService return loginDAO.selectCouncilInfoByDnsHost(councilDnsHost); } - + public int activateDormantAcc(NlibLoginVO loginVO) { + return loginDAO.activateDormantAcc(loginVO); + } diff --git a/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml index 7fbc87ef..d74b6ddd 100644 --- a/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml @@ -18,14 +18,15 @@ , A.ADDRESS_DETAIL , A.BIRTHDAY , A.STATUS + , DATE_FORMAT(A.DMT_PROC_DD, '%Y%m%d%H%i%s') AS DMT_PROC_DD , A.JOIN_DATE - , A.VERIFICATION_DD - , A.LAST_ACCESS_DD + , DATE_FORMAT(A.VERIFICATION_DD, '%Y%m%d%H%i%s') AS VERIFICATION_DD + , DATE_FORMAT(A.LAST_ACCESS_DD, '%Y%m%d%H%i%s') AS LAST_ACCESS_DD , A.LEAVE_SITE_DATE , A.REG_ID - , A.REG_DD + , DATE_FORMAT(A.REG_DD, '%Y%m%d%H%i%s') AS REG_DD , A.MOD_ID - , A.MOD_DD + , DATE_FORMAT(A.MOD_DD, '%Y%m%d%H%i%s') AS MOD_DD , B.SNS_TYPE , B.SNS_ID , 'ROLE_USER' AS AUTHORITY_LIST @@ -50,6 +51,16 @@ LIMIT 1 + + UPDATE UAC_CLTR_DB.MB_INFO A /* 사용자정보 */ + SET A.STATUS = 'S' /* 정상 */ + , A.DMT_PROC_DD = NULL + , A.MOD_ID = #{mbInfoId} + , A.MOD_DD = NOW() + WHERE MB_INFO_ID = #{mbInfoId} + AND A.STATUS = 'P' /* 휴면 */ + + INSERT INTO SM_ACC_LOG /* 접속로그 */ ( USER_ID diff --git a/src/main/resources/nlib/nlib.properties b/src/main/resources/nlib/nlib.properties index cd61a3c7..fd365f3f 100644 --- a/src/main/resources/nlib/nlib.properties +++ b/src/main/resources/nlib/nlib.properties @@ -25,6 +25,11 @@ member.new.url = /member/snsCertForm.do 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 +# \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 +login.newcouncil.url = /login/agreeProvInfoForm.do + # \uc9c0\ubc29\ubb38\ud654\uc6d0\uc5d0\uc11c \uc811\uc18d\uc2dc \ub9ac\ub2e4\uc774\ub809\ud2b8\ub420 URL \uc815\ubcf4 nculture.login.redirect.uri = /login/loginForm.do nculture.login.post.login.redirect.uri = /login/loginCouncilSSO.do @@ -58,7 +63,7 @@ dataapi.server.protocol = http dataapi.temp.xml.path = C:/iams/workspace/nlib/data/dataxml # Aria \uc54c\uace0\ub9ac\uc998 -crypto.aria.defaultKey = TheFederationOfKoreaCultureCenter027042322 +crypto.aria.defaultKey = gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ= #---------------------------------------- diff --git a/src/main/webapp/WEB-INF/jsp/nlib/login/activateDormantAccForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/login/activateDormantAccForm.jsp new file mode 100644 index 00000000..2dc92971 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/login/activateDormantAccForm.jsp @@ -0,0 +1,83 @@ +<% +/** + *
+ * @Class Name : activateDormantAccForm.jsp
+ * 
+ * @Description : 휴면계좌 해지안내 및 확인 화면 
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 1. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 9. 1. + * @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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ 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 + + + + + + + +
+ +

휴면계좌안내

+ + +
+
+ +
+ +사용자 계정이 아래와 같이 휴면된 상태입니다.
+
+- 이름 : ${oauthUser.nlibVO.name}
+- 로그인ID : ${oauthUser.nlibVO.loginUserId}
+- 이메일 : ${oauthUser.nlibVO.email}
+- 휴면전환일자 : + +
+ + +
+ 정상적인 서비스를 이용하시려면 휴면상태를 해제하여야 합니다.
+ 휴면상태를 해제하시겠습니까? +
+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/login/agreeProvInfoForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/login/agreeProvInfoForm.jsp new file mode 100644 index 00000000..f163962c --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/login/agreeProvInfoForm.jsp @@ -0,0 +1,80 @@ +<% +/** + *
+ * @Class Name : agreeProvInfoForm.jsp
+ * 
+ * @Description : 신규 지방문화원 정보제공 동의 화면 
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 1. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 9. 1. + * @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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ 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 + + + + + + + +
+ +

${pageTitle }

+ + +
+
+ +
+ +사용자 계정이 아래와 같이 휴면된 상태입니다.
+
+- 이름 : ${oauthUser.nlibVO.name}
+- 로그인ID : ${oauthUser.nlibVO.loginUserId}
+- 이메일 : ${oauthUser.nlibVO.email}
+- 동의대상 지방문화원 : ${councilCd } ${councilNm } + +
+ "${councilNm }" 서비스를 이용하시려면 해당 문화원에 사용자 정보제공에 동의가 필요합니다.
+ 동의하시겠습니까? +
+ + +
+ + + \ No newline at end of file