소스 충돌
This commit is contained in:
parent
a7858f5d93
commit
b891c1df23
@ -112,6 +112,7 @@ public class LoginController {
|
|||||||
String councilReturnUrl = councilHomeUrl + (StringUtil.isEmpty(returnUrl) ? "/" : returnUrl);
|
String councilReturnUrl = councilHomeUrl + (StringUtil.isEmpty(returnUrl) ? "/" : returnUrl);
|
||||||
String councilDnsHost = StringUtil.getHostName(url);
|
String councilDnsHost = StringUtil.getHostName(url);
|
||||||
|
|
||||||
|
// 캐쉬된 요청URL인 존재하는 경우, 리턴URL로 설정
|
||||||
RequestCache cache = new HttpSessionRequestCache();
|
RequestCache cache = new HttpSessionRequestCache();
|
||||||
SavedRequest savedRequest = cache.getRequest(req, res);
|
SavedRequest savedRequest = cache.getRequest(req, res);
|
||||||
if (savedRequest != null) {
|
if (savedRequest != null) {
|
||||||
@ -119,27 +120,19 @@ public class LoginController {
|
|||||||
log.debug("loginCouncil > HttpSessionRequestCache에서 획득 councilReturnUrl = " + councilReturnUrl);
|
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);
|
HashMap<String, String> councilInfo = loginService.selectCouncilInfoByDnsHost(councilDnsHost);
|
||||||
String councilCd = (councilInfo == null ? null : councilInfo.get("councilCd"));
|
String councilCd = (councilInfo == null ? null : councilInfo.get("councilCd"));
|
||||||
String councilNm = (councilInfo == null ? null : councilInfo.get("councilNm"));
|
String councilNm = (councilInfo == null ? null : councilInfo.get("councilNm"));
|
||||||
|
|
||||||
session.setAttribute("councilDnsHost", councilDnsHost);
|
|
||||||
session.setAttribute("councilReturnUrl", councilReturnUrl);
|
session.setAttribute("councilReturnUrl", councilReturnUrl);
|
||||||
session.setAttribute("councilHomeUrl", councilHomeUrl);
|
session.setAttribute("councilHomeUrl", councilHomeUrl);
|
||||||
|
|
||||||
|
session.setAttribute("councilDnsHost", councilDnsHost);
|
||||||
session.setAttribute("councilCd", councilCd);
|
session.setAttribute("councilCd", councilCd);
|
||||||
session.setAttribute("councilNm", councilNm);
|
session.setAttribute("councilNm", councilNm);
|
||||||
|
|
||||||
|
log.debug("loginCouncil > sessionid=" + session.getId());
|
||||||
log.debug("loginCouncil > REQ URL = " + url);
|
log.debug("loginCouncil > REQ URL = " + url);
|
||||||
log.debug("loginCouncil > councilJsessionId = " + session.getId());
|
log.debug("loginCouncil > councilJsessionId = " + session.getId());
|
||||||
log.debug("loginCouncil > councilDnsHost = " + councilDnsHost);
|
log.debug("loginCouncil > councilDnsHost = " + councilDnsHost);
|
||||||
@ -155,9 +148,59 @@ public class LoginController {
|
|||||||
"&councilHomeUrl=" + StringUtil.encodeBase64(councilHomeUrl) +
|
"&councilHomeUrl=" + StringUtil.encodeBase64(councilHomeUrl) +
|
||||||
"&councilReturnUrl=" + StringUtil.encodeBase64(councilReturnUrl);
|
"&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 councilJsessionId = (String)session.getAttribute("councilJsessionId");
|
||||||
String councilDnsHost = paramMap.get("councilDnsHost");
|
String councilDnsHost = (String)session.getAttribute("councilDnsHost");
|
||||||
String councilReturnUrl = StringUtil.decodeBase64(paramMap.get("councilReturnUrl"));
|
String councilReturnUrl = (String)session.getAttribute("councilReturnUrl");
|
||||||
String councilHomeUrl = StringUtil.decodeBase64(paramMap.get("councilHomeUrl"));
|
String councilHomeUrl = (String)session.getAttribute("councilHomeUrl");
|
||||||
String councilCd = paramMap.get("councilCd");
|
String councilCd = (String)session.getAttribute("councilCd");
|
||||||
String councilNm = StringUtil.decodeBase64(paramMap.get("councilNm"));
|
String councilNm = (String)session.getAttribute("councilNm");
|
||||||
|
|
||||||
|
log.debug("loginForm > sessionid=" + session.getId());
|
||||||
log.debug("loginForm > councilJsessionId = " + councilJsessionId);
|
log.debug("loginForm > councilJsessionId = " + councilJsessionId);
|
||||||
log.debug("loginForm > councilDnsHost = " + councilDnsHost);
|
log.debug("loginForm > councilDnsHost = " + councilDnsHost);
|
||||||
log.debug("loginForm > councilReturnUrl = " + councilReturnUrl);
|
log.debug("loginForm > councilReturnUrl = " + councilReturnUrl);
|
||||||
@ -194,25 +238,18 @@ public class LoginController {
|
|||||||
log.debug("loginForm > councilCd = " + councilCd);
|
log.debug("loginForm > councilCd = " + councilCd);
|
||||||
log.debug("loginForm > councilNm = " + councilNm);
|
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 생성
|
// SNS 연동 URL 생성
|
||||||
//----------------------------------------------
|
//----------------------------------------------
|
||||||
OAuthLogin naverLogin = new OAuthLogin(naverAuthVO);
|
OAuthLogin naverLogin = new OAuthLogin(naverAuthVO, OAuthLogin.CALL_TYPE_LOGIN);
|
||||||
log.debug("naverLogin.getOAuthURL() = "+naverLogin.getOAuthURL());
|
log.debug("naverLogin.getOAuthURL() = "+naverLogin.getOAuthURL());
|
||||||
model.addAttribute("naverUrl", 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());
|
log.debug("googleLogin.getOAuthURL() = "+googleLogin.getOAuthURL());
|
||||||
model.addAttribute("googleUrl", 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());
|
log.debug("kakaoLogin.getOAuthURL() = "+kakaoLogin.getOAuthURL());
|
||||||
model.addAttribute("kakaoUrl", kakaoLogin.getOAuthURL());
|
model.addAttribute("kakaoUrl", kakaoLogin.getOAuthURL());
|
||||||
|
|
||||||
@ -235,14 +272,18 @@ public class LoginController {
|
|||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @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(
|
public String loginOauthCallback(
|
||||||
HttpServletRequest req,
|
HttpServletRequest req,
|
||||||
|
@PathVariable String callType,
|
||||||
@PathVariable String oauthServiceName,
|
@PathVariable String oauthServiceName,
|
||||||
@RequestParam(required = false) String code,
|
@RequestParam(required = false) String code,
|
||||||
Model model,
|
Model model,
|
||||||
HttpSession session) throws Exception {
|
HttpSession session) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
|
log.debug("loginOauthCallback > sessionid=" + session.getId());
|
||||||
|
|
||||||
String redirectUrl = NlibProperty.getString("home.uri"); // "/index.do";
|
String redirectUrl = NlibProperty.getString("home.uri"); // "/index.do";
|
||||||
String councilJsessionId = (String)session.getAttribute("councilJsessionId");
|
String councilJsessionId = (String)session.getAttribute("councilJsessionId");
|
||||||
String councilCd = (String)session.getAttribute("councilCd");
|
String councilCd = (String)session.getAttribute("councilCd");
|
||||||
@ -263,11 +304,11 @@ public class LoginController {
|
|||||||
|
|
||||||
//-----------------------------------------------
|
//-----------------------------------------------
|
||||||
// 1. code를 이용해서 Access Token 받기
|
// 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번 동시
|
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연동이 실패한 경우
|
// oAuth를 통한 SNS연동이 실패한 경우
|
||||||
if(oauthUser == null || !oauthUser.isValid()) {
|
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");
|
String councilHomeUrl = (String)session.getAttribute("councilHomeUrl");
|
||||||
redirectUrl = councilHomeUrl + "/login/loginCouncilSSO.do";
|
if(OAuthLogin.CALL_TYPE_LOGIN.equalsIgnoreCase(callType)) {
|
||||||
return "redirect:" + redirectUrl;
|
// 로그인인 경우
|
||||||
}
|
SessionConfig.setLoginInfo(councilJsessionId, oauthUser);
|
||||||
|
redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.login.redirect.uri");
|
||||||
// SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않은 사용자 : 회원가입으로 전환
|
} else {
|
||||||
model.addAttribute("error", loginResult);
|
// 회원가입인 경우
|
||||||
if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_MEMBERSHIP)) {
|
SessionConfig.setNewMemberInfo(councilJsessionId, oauthUser);
|
||||||
model.addAttribute("message", "회원가입하신 후, 이용 가능합니다.");
|
redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.member.redirect.uri");
|
||||||
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");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return "redirect:" + redirectUrl;
|
return "redirect:" + redirectUrl;
|
||||||
@ -361,22 +393,34 @@ public class LoginController {
|
|||||||
|
|
||||||
String jsessionId = session.getId();
|
String jsessionId = session.getId();
|
||||||
String councilCd = (String)session.getAttribute("councilCd");
|
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) {
|
if(loginResult == null) {
|
||||||
// 세션에 설정된 redirect 주소 확인
|
// 세션에 설정된 redirect 주소 확인
|
||||||
String councilReturnUrl = (String)session.getAttribute("councilReturnUrl");
|
return "redirect:" + councilReturnUrl;
|
||||||
|
}
|
||||||
|
|
||||||
log.debug("loginCouncilSSO > councilReturnUrl = " + councilReturnUrl);
|
// SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않은 사용자 : 회원가입으로 전환
|
||||||
if(StringUtil.isNotEmpty(councilReturnUrl)) {
|
|
||||||
redirectUrl = councilReturnUrl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않았거나 정보가 서로 맞지 않는 경우
|
|
||||||
else {
|
|
||||||
model.addAttribute("error", loginResult);
|
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");
|
redirectUrl = NlibProperty.getString("login.back.url");
|
||||||
|
return "redirect:" + redirectUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
return "redirect:" + redirectUrl;
|
return "redirect:" + redirectUrl;
|
||||||
|
|||||||
@ -8,7 +8,9 @@
|
|||||||
<constructor-arg value="naver" /><!-- Service Name -->
|
<constructor-arg value="naver" /><!-- Service Name -->
|
||||||
<constructor-arg value="jefkoYhSfrQ3TtZz5mTp" /><!-- naverClientID -->
|
<constructor-arg value="jefkoYhSfrQ3TtZz5mTp" /><!-- naverClientID -->
|
||||||
<constructor-arg value="E2qAGaLEaG" /><!-- naverClientSecret -->
|
<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>
|
</bean>
|
||||||
|
|
||||||
<!-- GOOGLE OAuth Configuration -->
|
<!-- GOOGLE OAuth Configuration -->
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user