회원가입용 사용자 Profile 공유 기능 추가
This commit is contained in:
parent
ee7bd19bb8
commit
e28f925d34
@ -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,12 +56,27 @@ 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user