소스 충돌
This commit is contained in:
parent
a7858f5d93
commit
b891c1df23
@ -112,6 +112,7 @@ public class LoginController {
|
||||
String councilReturnUrl = councilHomeUrl + (StringUtil.isEmpty(returnUrl) ? "/" : returnUrl);
|
||||
String councilDnsHost = StringUtil.getHostName(url);
|
||||
|
||||
// 캐쉬된 요청URL인 존재하는 경우, 리턴URL로 설정
|
||||
RequestCache cache = new HttpSessionRequestCache();
|
||||
SavedRequest savedRequest = cache.getRequest(req, res);
|
||||
if (savedRequest != null) {
|
||||
@ -119,27 +120,19 @@ public class LoginController {
|
||||
log.debug("loginCouncil > HttpSessionRequestCache에서 획득 councilReturnUrl = " + councilReturnUrl);
|
||||
}
|
||||
|
||||
// returnUrl 정보 설정
|
||||
// if(StringUtil.isEmpty(returnUrl)) {
|
||||
// RequestCache cache = new HttpSessionRequestCache();
|
||||
// SavedRequest savedRequest = cache.getRequest(req, res);
|
||||
// if (savedRequest != null) {
|
||||
// councilReturnUrl = savedRequest.getRedirectUrl();
|
||||
// log.debug("loginCouncil > HttpSessionRequestCache에서 획득 councilReturnUrl = " + councilReturnUrl);
|
||||
// }
|
||||
// }
|
||||
|
||||
// 지방문화원 코드 확인
|
||||
HashMap<String, String> councilInfo = loginService.selectCouncilInfoByDnsHost(councilDnsHost);
|
||||
String councilCd = (councilInfo == null ? null : councilInfo.get("councilCd"));
|
||||
String councilNm = (councilInfo == null ? null : councilInfo.get("councilNm"));
|
||||
|
||||
session.setAttribute("councilDnsHost", councilDnsHost);
|
||||
session.setAttribute("councilReturnUrl", councilReturnUrl);
|
||||
session.setAttribute("councilHomeUrl", councilHomeUrl);
|
||||
|
||||
session.setAttribute("councilDnsHost", councilDnsHost);
|
||||
session.setAttribute("councilCd", councilCd);
|
||||
session.setAttribute("councilNm", councilNm);
|
||||
|
||||
log.debug("loginCouncil > sessionid=" + session.getId());
|
||||
log.debug("loginCouncil > REQ URL = " + url);
|
||||
log.debug("loginCouncil > councilJsessionId = " + session.getId());
|
||||
log.debug("loginCouncil > councilDnsHost = " + councilDnsHost);
|
||||
@ -155,9 +148,59 @@ public class LoginController {
|
||||
"&councilHomeUrl=" + StringUtil.encodeBase64(councilHomeUrl) +
|
||||
"&councilReturnUrl=" + StringUtil.encodeBase64(councilReturnUrl);
|
||||
|
||||
return "redirect:" + NlibProperty.getString("nculture.login.redirect.url") + "?" + params;
|
||||
return "redirect:" + NlibProperty.getString("nculture.login.preset.redirect.url") + "?" + params;
|
||||
}
|
||||
|
||||
/**
|
||||
* 로그인 콜백을 위한 설정을 처리한 후, 로그인 페이지로 전환한다.
|
||||
*
|
||||
* @param req
|
||||
* @param error
|
||||
* @param logout
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/login/loginPreSet.do")
|
||||
public String loginPreSet(HttpServletRequest req,
|
||||
@RequestParam(required = false) String error,
|
||||
@RequestParam(required = false) String message,
|
||||
@RequestParam(required = false) String logout,
|
||||
RedirectAttributes redirectAttrs,
|
||||
@RequestParam Map<String, String> paramMap,
|
||||
Model model,
|
||||
HttpSession session) {
|
||||
|
||||
//----------------------------------------------
|
||||
// 지방문화원 사이트에서 접속한 경우, 지방문화원 정보 확인
|
||||
//----------------------------------------------
|
||||
String councilJsessionId = paramMap.get("councilJsessionId");
|
||||
String councilDnsHost = paramMap.get("councilDnsHost");
|
||||
String councilReturnUrl = StringUtil.decodeBase64(paramMap.get("councilReturnUrl"));
|
||||
String councilHomeUrl = StringUtil.decodeBase64(paramMap.get("councilHomeUrl"));
|
||||
String councilCd = paramMap.get("councilCd");
|
||||
String councilNm = StringUtil.decodeBase64(paramMap.get("councilNm"));
|
||||
|
||||
log.debug("loginPreSet > sessionid=" + session.getId());
|
||||
log.debug("loginPreSet > councilJsessionId = " + councilJsessionId);
|
||||
log.debug("loginPreSet > councilDnsHost = " + councilDnsHost);
|
||||
log.debug("loginPreSet > councilReturnUrl = " + councilReturnUrl);
|
||||
log.debug("loginPreSet > councilHomeUrl = " + councilHomeUrl);
|
||||
log.debug("loginPreSet > councilCd = " + councilCd);
|
||||
log.debug("loginPreSet > councilNm = " + councilNm);
|
||||
|
||||
session.setAttribute("councilJsessionId", councilJsessionId);
|
||||
session.setAttribute("councilReturnUrl", councilReturnUrl);
|
||||
session.setAttribute("councilHomeUrl" , councilHomeUrl);
|
||||
|
||||
session.setAttribute("councilDnsHost", councilDnsHost);
|
||||
session.setAttribute("councilCd" , councilCd);
|
||||
session.setAttribute("councilNm" , councilNm);
|
||||
|
||||
String redirect = councilHomeUrl + NlibProperty.getString("nculture.login.redirect.uri");
|
||||
return "redirect:" + redirect;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 로그인 정보 입력 화면을 출력한다.
|
||||
*
|
||||
@ -180,13 +223,14 @@ public class LoginController {
|
||||
//----------------------------------------------
|
||||
// 지방문화원 사이트에서 접속한 경우, 지방문화원 정보 확인
|
||||
//----------------------------------------------
|
||||
String councilJsessionId = paramMap.get("councilJsessionId");
|
||||
String councilDnsHost = paramMap.get("councilDnsHost");
|
||||
String councilReturnUrl = StringUtil.decodeBase64(paramMap.get("councilReturnUrl"));
|
||||
String councilHomeUrl = StringUtil.decodeBase64(paramMap.get("councilHomeUrl"));
|
||||
String councilCd = paramMap.get("councilCd");
|
||||
String councilNm = StringUtil.decodeBase64(paramMap.get("councilNm"));
|
||||
String councilJsessionId = (String)session.getAttribute("councilJsessionId");
|
||||
String councilDnsHost = (String)session.getAttribute("councilDnsHost");
|
||||
String councilReturnUrl = (String)session.getAttribute("councilReturnUrl");
|
||||
String councilHomeUrl = (String)session.getAttribute("councilHomeUrl");
|
||||
String councilCd = (String)session.getAttribute("councilCd");
|
||||
String councilNm = (String)session.getAttribute("councilNm");
|
||||
|
||||
log.debug("loginForm > sessionid=" + session.getId());
|
||||
log.debug("loginForm > councilJsessionId = " + councilJsessionId);
|
||||
log.debug("loginForm > councilDnsHost = " + councilDnsHost);
|
||||
log.debug("loginForm > councilReturnUrl = " + councilReturnUrl);
|
||||
@ -194,25 +238,18 @@ public class LoginController {
|
||||
log.debug("loginForm > councilCd = " + councilCd);
|
||||
log.debug("loginForm > councilNm = " + councilNm);
|
||||
|
||||
session.setAttribute("councilJsessionId", councilJsessionId);
|
||||
session.setAttribute("councilDnsHost", councilDnsHost);
|
||||
session.setAttribute("councilReturnUrl", councilReturnUrl);
|
||||
session.setAttribute("councilHomeUrl" , councilHomeUrl);
|
||||
session.setAttribute("councilCd" , councilCd);
|
||||
session.setAttribute("councilNm" , councilNm);
|
||||
|
||||
//----------------------------------------------
|
||||
// SNS 연동 URL 생성
|
||||
//----------------------------------------------
|
||||
OAuthLogin naverLogin = new OAuthLogin(naverAuthVO);
|
||||
OAuthLogin naverLogin = new OAuthLogin(naverAuthVO, OAuthLogin.CALL_TYPE_LOGIN);
|
||||
log.debug("naverLogin.getOAuthURL() = "+naverLogin.getOAuthURL());
|
||||
model.addAttribute("naverUrl", naverLogin.getOAuthURL());
|
||||
|
||||
OAuthLogin googleLogin = new OAuthLogin(googleAuthVO);
|
||||
OAuthLogin googleLogin = new OAuthLogin(googleAuthVO, OAuthLogin.CALL_TYPE_LOGIN);
|
||||
log.debug("googleLogin.getOAuthURL() = "+googleLogin.getOAuthURL());
|
||||
model.addAttribute("googleUrl", googleLogin.getOAuthURL());
|
||||
|
||||
OAuthLogin kakaoLogin = new OAuthLogin(kakaoAuthVO);
|
||||
OAuthLogin kakaoLogin = new OAuthLogin(kakaoAuthVO, OAuthLogin.CALL_TYPE_LOGIN);
|
||||
log.debug("kakaoLogin.getOAuthURL() = "+kakaoLogin.getOAuthURL());
|
||||
model.addAttribute("kakaoUrl", kakaoLogin.getOAuthURL());
|
||||
|
||||
@ -235,14 +272,18 @@ public class LoginController {
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = {"/login/{oauthServiceName}Callback.do", "/login/{oauthServiceName}/callback.do"})
|
||||
@RequestMapping(value = {"/{callType}/{oauthServiceName}/callback.do"}) // /login/{oauthServiceName}/callback.do, /member/{oauthServiceName}/callback.do
|
||||
public String loginOauthCallback(
|
||||
HttpServletRequest req,
|
||||
@PathVariable String callType,
|
||||
@PathVariable String oauthServiceName,
|
||||
@RequestParam(required = false) String code,
|
||||
Model model,
|
||||
HttpSession session) throws Exception {
|
||||
|
||||
|
||||
log.debug("loginOauthCallback > sessionid=" + session.getId());
|
||||
|
||||
String redirectUrl = NlibProperty.getString("home.uri"); // "/index.do";
|
||||
String councilJsessionId = (String)session.getAttribute("councilJsessionId");
|
||||
String councilCd = (String)session.getAttribute("councilCd");
|
||||
@ -263,11 +304,11 @@ public class LoginController {
|
||||
|
||||
//-----------------------------------------------
|
||||
// 1. code를 이용해서 Access Token 받기
|
||||
// 2. Access Token을 이용해서 사용자 제공정보 가져오기
|
||||
// 2. Access Token을 이용해서 사용자 제공 정보 가져오기
|
||||
//-----------------------------------------------
|
||||
OAuthLogin oauthLogin = new OAuthLogin(oauthVO);
|
||||
OAuthLogin oauthLogin = new OAuthLogin(oauthVO, callType);
|
||||
OAuthUniversalUser oauthUser = oauthLogin.getUserProfile(code); // 1,2번 동시
|
||||
log.debug("oauthLoginCallback > Profile ===>>" + oauthUser.getSnsId() + ", " + oauthUser.getName());
|
||||
log.debug("oauthLoginCallback > Profile ===>>" + oauthUser.getSnsId() + ", " + oauthUser.getSnsName());
|
||||
|
||||
// oAuth를 통한 SNS연동이 실패한 경우
|
||||
if(oauthUser == null || !oauthUser.isValid()) {
|
||||
@ -277,26 +318,17 @@ public class LoginController {
|
||||
}
|
||||
|
||||
//-----------------------------------------------
|
||||
// 등록된 사용자 여부 확인
|
||||
// 해당 처리기로 전환
|
||||
//-----------------------------------------------
|
||||
String loginResult = loginService.loginOauth(req, oauthServiceName, oauthUser.getSnsId(), councilCd, councilJsessionId);
|
||||
|
||||
// 정상 SNS 연동 로그인
|
||||
if(loginResult == null) {
|
||||
// 세션에 설정된 redirect 주소 확인
|
||||
String councilHomeUrl = (String)session.getAttribute("councilHomeUrl");
|
||||
redirectUrl = councilHomeUrl + "/login/loginCouncilSSO.do";
|
||||
return "redirect:" + redirectUrl;
|
||||
}
|
||||
|
||||
// SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않은 사용자 : 회원가입으로 전환
|
||||
model.addAttribute("error", loginResult);
|
||||
if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_MEMBERSHIP)) {
|
||||
model.addAttribute("message", "회원가입하신 후, 이용 가능합니다.");
|
||||
redirectUrl = NlibProperty.getString("member.new.url");
|
||||
} else if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_SNSLOGIN)) {
|
||||
model.addAttribute("message", "먼저 로그인할 SNS를 선택하여 로그인 바랍니다.");
|
||||
redirectUrl = NlibProperty.getString("login.back.url");
|
||||
String councilHomeUrl = (String)session.getAttribute("councilHomeUrl");
|
||||
if(OAuthLogin.CALL_TYPE_LOGIN.equalsIgnoreCase(callType)) {
|
||||
// 로그인인 경우
|
||||
SessionConfig.setLoginInfo(councilJsessionId, oauthUser);
|
||||
redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.login.redirect.uri");
|
||||
} else {
|
||||
// 회원가입인 경우
|
||||
SessionConfig.setNewMemberInfo(councilJsessionId, oauthUser);
|
||||
redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.member.redirect.uri");
|
||||
}
|
||||
|
||||
return "redirect:" + redirectUrl;
|
||||
@ -361,22 +393,34 @@ public class LoginController {
|
||||
|
||||
String jsessionId = session.getId();
|
||||
String councilCd = (String)session.getAttribute("councilCd");
|
||||
String loginResult = loginService.loginCouncilSSO(req, councilCd, jsessionId);
|
||||
String councilReturnUrl = (String)session.getAttribute("councilReturnUrl");
|
||||
OAuthUniversalUser oauthUser = SessionConfig.popLoginInfo(jsessionId);
|
||||
|
||||
// oAuth를 통한 SNS연동 성공인 경우
|
||||
if(oauthUser == null || !oauthUser.isValid()) {
|
||||
throw new Exception("잘못된 접근입니다.");
|
||||
}
|
||||
|
||||
//-----------------------------------------------
|
||||
// 등록된 사용자 여부 확인
|
||||
//-----------------------------------------------
|
||||
String loginResult = loginService.loginCouncilSSO(req, councilCd, oauthUser);
|
||||
|
||||
// 정상 SNS 연동 로그인
|
||||
if(loginResult == null) {
|
||||
// 세션에 설정된 redirect 주소 확인
|
||||
String councilReturnUrl = (String)session.getAttribute("councilReturnUrl");
|
||||
|
||||
log.debug("loginCouncilSSO > councilReturnUrl = " + councilReturnUrl);
|
||||
if(StringUtil.isNotEmpty(councilReturnUrl)) {
|
||||
redirectUrl = councilReturnUrl;
|
||||
}
|
||||
return "redirect:" + councilReturnUrl;
|
||||
}
|
||||
// SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않았거나 정보가 서로 맞지 않는 경우
|
||||
else {
|
||||
model.addAttribute("error", loginResult);
|
||||
|
||||
// SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않은 사용자 : 회원가입으로 전환
|
||||
model.addAttribute("error", loginResult);
|
||||
if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_MEMBERSHIP)) {
|
||||
model.addAttribute("message", "회원가입하신 후, 이용 가능합니다.");
|
||||
redirectUrl = NlibProperty.getString("member.new.url");
|
||||
return "redirect:" + redirectUrl;
|
||||
} else if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_SNSLOGIN)) {
|
||||
model.addAttribute("message", "먼저 로그인할 SNS를 선택하여 로그인 바랍니다.");
|
||||
redirectUrl = NlibProperty.getString("login.back.url");
|
||||
return "redirect:" + redirectUrl;
|
||||
}
|
||||
|
||||
return "redirect:" + redirectUrl;
|
||||
|
||||
@ -8,7 +8,9 @@
|
||||
<constructor-arg value="naver" /><!-- Service Name -->
|
||||
<constructor-arg value="jefkoYhSfrQ3TtZz5mTp" /><!-- naverClientID -->
|
||||
<constructor-arg value="E2qAGaLEaG" /><!-- naverClientSecret -->
|
||||
<constructor-arg value="https://nlib.nculture.org/nlib/login/naver/callback.do" /><!-- naverRedirectUrl -->
|
||||
<!-- <constructor-arg value="https://nlib.nculture.org/nlib/login/naver/callback.do" /> --><!-- naverRedirectUrl -->
|
||||
<!-- callType : login, member / oauthServiceName : naver, google, kakao -->
|
||||
<constructor-arg value="https://nlib.nculture.org/nlib/{callType}/{oauthServiceName}/callback.do" /><!-- naverRedirectUrl -->
|
||||
</bean>
|
||||
|
||||
<!-- GOOGLE OAuth Configuration -->
|
||||
|
||||
Loading…
Reference in New Issue
Block a user