회원가입용 사용자 Profile 공유 기능 추가

This commit is contained in:
KNKIM 2021-08-31 14:07:34 +09:00
parent ee7bd19bb8
commit e28f925d34

View File

@ -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<String, String> sessions = new ConcurrentHashMap<>();
private static final Map<String, String> loginSessions = new ConcurrentHashMap<>();
/* 세션별 회원가입 처리 가능한 정보 목록 */
private static final Map<String, OAuthUniversalUser> 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);
}
}
}