From e28f925d34bc119af040d417107ead1f979ecd38 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Tue, 31 Aug 2021 14:07:34 +0900 Subject: [PATCH] =?UTF-8?q?=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=EC=9A=A9?= =?UTF-8?q?=20=EC=82=AC=EC=9A=A9=EC=9E=90=20Profile=20=EA=B3=B5=EC=9C=A0?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/cmm/session/SessionConfig.java | 89 +++++++++++++------ 1 file changed, 62 insertions(+), 27 deletions(-) diff --git a/src/main/java/nlib/cmm/session/SessionConfig.java b/src/main/java/nlib/cmm/session/SessionConfig.java index 562a2ae2..5a5b7760 100644 --- a/src/main/java/nlib/cmm/session/SessionConfig.java +++ b/src/main/java/nlib/cmm/session/SessionConfig.java @@ -1,23 +1,16 @@ package nlib.cmm.session; -import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import javax.annotation.Resource; import javax.servlet.annotation.WebListener; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import nlib.user.service.LoginService; -import nlib.user.service.impl.LoginServiceImpl; +import egovframework.com.ext.oauth.service.OAuthUniversalUser; import nlib.util.StringUtil; /** @@ -51,8 +44,10 @@ public class SessionConfig implements HttpSessionListener { private static final String DELIMITER = "\t"; /* 세션별 로그인 처리 가능한 정보 목록 */ - private static final Map sessions = new ConcurrentHashMap<>(); + private static final Map loginSessions = new ConcurrentHashMap<>(); + /* 세션별 회원가입 처리 가능한 정보 목록 */ + private static final Map memberSessions = new ConcurrentHashMap<>(); @Override public void sessionCreated(HttpSessionEvent se) { @@ -61,13 +56,28 @@ public class SessionConfig implements HttpSessionListener { @Override public void sessionDestroyed(HttpSessionEvent se) { - log.debug("Session sessionDestroyed (X) : " + se.getSession().getId()); - if(sessions.get(se.getSession().getId()) != null){ - removeLoginInfo(se.getSession().getId()); + String sessionId = se.getSession().getId(); + log.debug("Session sessionDestroyed (X) : " + sessionId); + if(loginSessions.get(sessionId) != null){ + removeLoginInfo(sessionId); + } + if(memberSessions.get(sessionId) != null){ + removeNewMemberInfo(sessionId); } } - + /** + * 지방문화원 해당 세션에 로그인 처리 가능한 SNS유형 및 SNSID 정보를 저장한다. + * + * @param sessionId + * @param snsType + * @param snsId + */ + public static void setLoginInfo(String sessionId, String snsType, String snsId) { + log.debug("setLoginInfo : " + sessionId + ", " + snsType + ", " + snsId); + loginSessions.put(sessionId, StringUtil.getString(snsType, "NONE") + DELIMITER + StringUtil.getString(snsId, "NONE")); + } + /** * 지방문화원 해당 세션에 로그인 처리 가능한 SNS 유형 및 SNS ID 정보를 리턴한다. * 리턴유형 문자열 배열 @@ -81,7 +91,7 @@ public class SessionConfig implements HttpSessionListener { if(StringUtil.isEmpty(sessionId)) return null; - String loginInfo = sessions.get(sessionId); + String loginInfo = loginSessions.get(sessionId); if(StringUtil.isEmpty(loginInfo)) return null; String ret[] = loginInfo.split(DELIMITER); @@ -91,18 +101,6 @@ public class SessionConfig implements HttpSessionListener { return ret; } - /** - * 지방문화원 해당 세션에 로그인 처리 가능한 SNS유형 및 SNSID 정보를 저장한다. - * - * @param sessionId - * @param snsType - * @param snsId - */ - public static void setLoginInfo(String sessionId, String snsType, String snsId) { - log.debug("setLoginInfo : " + sessionId + ", " + snsType + ", " + snsId); - sessions.put(sessionId, StringUtil.getString(snsType, "NONE") + DELIMITER + StringUtil.getString(snsId, "NONE")); - } - /** * 지방문화원 해당 세션에 로그인 처리 가능한 정보를 삭제한다. * (로그인 처리 완료 후 또는 세션 종료 시, 삭제) @@ -113,9 +111,46 @@ public class SessionConfig implements HttpSessionListener { */ public static void removeLoginInfo(String sessionId) { if(StringUtil.isNotEmpty(sessionId)){ - sessions.remove(sessionId); + loginSessions.remove(sessionId); log.debug("removeLoginInfo > sessionId = " + sessionId); } } + /** + * 지방문화원 해당 세션에 회원가입 처리 가능한 SNS유형 및 SNS 프로파일 정보를 저장한다. + * + * @param sessionId + * @param snsType + * @param snsId + */ + public static void setNewMemberInfo(String sessionId, OAuthUniversalUser oUser) { + log.debug("setLoginInfo : " + sessionId + ", " + oUser.getSnsId()); + memberSessions.put(sessionId, oUser); + } + + /** + * 지방문화원 해당 세션에 회원가입 처리 가능한 SNS 유형 및 SNS 프로파일 정보를 리턴한다. + * + * @param sessionId + * @return + */ + public static OAuthUniversalUser getNewMemberInfo(String sessionId) { + if(StringUtil.isEmpty(sessionId)) return null; + return memberSessions.get(sessionId); + } + + /** + * 지방문화원 해당 세션에 회원가입 처리 가능한 정보를 삭제한다. + * (회원가입 처리 완료 후 또는 세션 종료 시, 삭제) + * + * @param sessionId + * @param snsType + * @param snsId + */ + public static void removeNewMemberInfo(String sessionId) { + if(StringUtil.isNotEmpty(sessionId)){ + memberSessions.remove(sessionId); + log.debug("removeNewMemberInfo > sessionId = " + sessionId); + } + } } \ No newline at end of file