diff --git a/src/main/java/nlib/user/web/LoginController.java b/src/main/java/nlib/user/web/LoginController.java index ee989eb0..498ec0ee 100644 --- a/src/main/java/nlib/user/web/LoginController.java +++ b/src/main/java/nlib/user/web/LoginController.java @@ -296,15 +296,33 @@ public class LoginController { @PathVariable String callType, @PathVariable String oauthServiceName, @RequestParam(required = false) String code, + @RequestParam(required = false) String error, 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"); + String councilHomeUrl = (String)session.getAttribute("councilHomeUrl"); + String redirectUrl = NlibProperty.getString("home.uri"); // "/index.do"; + + if(StringUtil.isNotEmpty(error)) { + + // 구글 정보 제공 동의 거절한 경우 + // https://nlib-dev.nculture.org/member/google/callback.do?error=access_denied + if(StringUtil.equalsIgnoreCase("access_denied", error)) { + if(OAuthLogin.CALL_TYPE_LOGIN.equalsIgnoreCase(callType)) { + // 로그인인 경우 + redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.login.redirect.uri"); + } else { + // 회원가입인 경우 + redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.member.redirect.uri"); + } + redirectUrl = StringUtil.addWebParamOfUrl(redirectUrl, "message", "서비스를 이용하시려면 정보제공 동의가 필요합니다."); + return "redirect:" + redirectUrl; + } + } + + log.debug("loginOauthCallback > sessionid=" + session.getId()); log.debug("oauthLoginCallback: code = ", code); @@ -337,7 +355,6 @@ public class LoginController { //----------------------------------------------- // 해당 처리기로 전환 //----------------------------------------------- - String councilHomeUrl = (String)session.getAttribute("councilHomeUrl"); if(OAuthLogin.CALL_TYPE_LOGIN.equalsIgnoreCase(callType)) { // 로그인인 경우 SessionConfig.setLoginInfo(councilJsessionId, oauthUser);