LifeCenterInterCeptor.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. package com.lemon.lifecenter.common;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Component;
  10. import org.springframework.web.servlet.ModelAndView;
  11. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
  12. import com.lemon.lifecenter.dto.RoleDTO;
  13. import com.lemon.lifecenter.service.RoleService;
  14. @Component
  15. public class LifeCenterInterCeptor extends HandlerInterceptorAdapter {
  16. @Autowired
  17. private LifeCenterConfigVO config;
  18. @Autowired
  19. private RoleService roleService;
  20. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  21. @Override
  22. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
  23. logger.info( "--------------------- InterCeptor Start --------------------- " );
  24. String url = request.getRequestURI().toString();
  25. String port = String.valueOf(request.getServerPort());
  26. Object session = request.getSession().getAttribute( "sesId" );
  27. Object groupIdx = request.getSession().getAttribute( "sesGroupIdx" );
  28. Object sesMId = request.getSession().getAttribute( "sesMId" );
  29. Object sesPasswordChange = request.getSession().getAttribute( "sesPasswordChange" );
  30. Object sesAcceptCheck = request.getSession().getAttribute( "sesAcceptCheck" );
  31. logger.info( "|------------------------------------------------------------------|" );
  32. logger.info( "| URL : " + url + " | IP : " + LifeCenterFunction.getRemoteAddr(request) + " | Port : " + port );
  33. logger.info( "|------------------------------------------------------------------|" );
  34. logger.info( "redirectUrl -- > " + request.getParameter("redirectUrl") );
  35. logger.info( " sesMobileId : " + sesMId + " sesWebId : " + session + " groupIdx : " + groupIdx );
  36. if ( url.contains( "/error" ) || url.contains( "/nonface/wait" ) || url.contains( "/mobile/call" ) ||
  37. url.contains( "/store" ) || url.contains( "/favicon.ico" ) || url.contains( "/mobile/getAppVersion" ) ||
  38. url.contains("/lifeCenter/api") ) {
  39. return true;
  40. }
  41. if( url.contains( "/mobile" ) ) {
  42. if( !url.equals( "/mobile/login" ) && !url.equals( "/mobile/check" ) ) {
  43. if( sesMId == null ) {
  44. if (request.getParameter("redirectUrl") == null) {
  45. response.sendRedirect( "/mobile/login" );
  46. } else {
  47. response.sendRedirect( "/mobile/login?redirectUrl=" + request.getParameter("redirectUrl") );
  48. }
  49. return false;
  50. } else {
  51. logger.info( "IP : " + LifeCenterFunction.getRemoteAddr( request ) + " ID : " + sesMId.toString() + " URL : " + url + " Port : " + port );
  52. Object sesMAcceptCheck = request.getSession().getAttribute( "sesMAcceptCheck" );
  53. // System.err.println( "sesMAcceptCheck : " + sesMAcceptCheck );
  54. if( sesMAcceptCheck != null && sesMAcceptCheck.equals( "Y" ) ) {
  55. if( !url.equals( "/mobile/accept/list" ) ) {
  56. logger.info( "약관 동의 페이지로 이동" );
  57. if( !url.equals( "/mobile/accept/insert" ) && !url.equals( "/mobile/login/logout" ) ) {
  58. LifeCenterFunction.scriptMessage( response, "location.href='/mobile/accept/list';" );
  59. return false;
  60. }
  61. } else {
  62. // LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '약관 동의 후 서비스 이용이 가능합니다.', callBack : function(){ } });" );
  63. }
  64. } else {
  65. if( url.equals( "/mobile/accept/list" ) ) {
  66. response.sendRedirect( "/mobile/menu" );
  67. }
  68. }
  69. }
  70. } else if( url.equals( "/mobile/login" ) ) {
  71. if( sesMId != null ) {
  72. response.sendRedirect( "/mobile/menu" );
  73. return false;
  74. }
  75. }
  76. } else {
  77. if( !url.equals( "/login/staff" ) && !url.equals( "/login/admin" ) && !url.equals( "/login/check" ) ) {
  78. if( session == null ) {
  79. response.sendRedirect( "/login/staff" );
  80. return false;
  81. } else {
  82. logger.info( "IP : " + LifeCenterFunction.getRemoteAddr( request ) + " ID : " + session.toString() + " URL : " + url + " Port : " + port );
  83. /*
  84. * 현재경로에대해 권한 체크
  85. */
  86. RoleDTO roleDTO = new RoleDTO();
  87. roleDTO.setMenuPath( url );
  88. int roleCount = roleService.selectNowPathRoleCheckTotal( roleDTO );
  89. if( roleCount > 0 ) {
  90. Object sesGroupIdx = request.getSession().getAttribute( "sesGroupIdx" );
  91. roleDTO.setGroupIdx( Integer.valueOf( sesGroupIdx.toString() ) );
  92. roleDTO = roleService.selectNowPathRoleCheckData( roleDTO );
  93. String menuType = roleDTO.getMenuType();
  94. boolean roleFlag = true;
  95. if( menuType.equals( "C" ) ) {
  96. if( roleDTO.getCreateYn().equals( "N" ) ) {
  97. roleFlag = false;
  98. }
  99. } else if( menuType.equals( "R" ) ) {
  100. if( roleDTO.getReadYn().equals( "N" ) ) {
  101. roleFlag = false;
  102. }
  103. } else if( menuType.equals( "U" ) ) {
  104. if( roleDTO.getUpdateYn().equals( "N" ) ) {
  105. roleFlag = false;
  106. }
  107. } else if( menuType.equals( "" ) ) {
  108. if( roleDTO.getDeleteYn().equals( "N" ) ) {
  109. roleFlag = false;
  110. }
  111. }
  112. if( roleFlag == false ) {
  113. logger.error( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
  114. logger.error( "현재 경로에 대한 권한이 없습니다 . IP : " + LifeCenterFunction.getRemoteAddr( request ) + " ID : " + session.toString() + " URL : " + url + " Port : " + port );
  115. logger.error( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
  116. // System.err.println( "XMLHttpRequest".equals( request.getHeader( "x-requested-with" ) ) );
  117. // Ajax 요청인지 확인
  118. if( "XMLHttpRequest".equals( request.getHeader( "x-requested-with" ) ) == true ) {
  119. response.sendError( 999 );
  120. } else {
  121. response.sendError( 403 );
  122. }
  123. return false;
  124. }
  125. }
  126. /*
  127. * 약관 동의 체크, 비밀번호 초기화 체크
  128. */
  129. if( sesAcceptCheck != null && sesAcceptCheck.equals( "Y" ) ) {
  130. if( !url.equals( "/accept/list" ) ) {
  131. logger.info( "약관 동의 페이지로 이동" );
  132. if( !url.equals( "/accept/insert" ) && !url.equals( "/login/logout" ) ) {
  133. LifeCenterFunction.scriptMessage( response, "location.href='/accept/list';" );
  134. return false;
  135. }
  136. } else {
  137. // LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '약관 동의 후 서비스 이용이 가능합니다.', callBack : function(){ } });" );
  138. }
  139. } else {
  140. if( url.equals( "/accept/list" ) ) {
  141. response.sendRedirect( "/" );
  142. }
  143. if( sesPasswordChange != null ) {
  144. if( sesPasswordChange.equals( "REQUIRED" ) ) {
  145. if( !url.equals( "/staff/myinfo" ) ) {
  146. logger.info( "비밀번호 변경 필요 -> 비밀번호 변경 페이지로 이동" );
  147. if( !url.equals( "/common/passwordCheck" ) && !url.equals( "/staff/myinfo/update" ) && !url.equals( "/login/logout" ) ) {
  148. LifeCenterFunction.scriptMessage( response, "location.href='/staff/myinfo';" );
  149. return false;
  150. }
  151. } else {
  152. LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '비밀번호 보안 규정 변경으로 인하여 의무적으로 비밀번호 1회 변경 진행 후 서비스 이용이 가능합니다.', callBack : function(){ } });" );
  153. }
  154. } else if( sesPasswordChange.equals( "RESET" ) ) {
  155. if( !url.equals( "/staff/myinfo" ) ) {
  156. logger.info( "초기화 비밀번호로 로그인 -> 비밀번호 변경 페이지로 이동" );
  157. if( !url.equals( "/common/passwordCheck" ) && !url.equals( "/staff/myinfo/update" ) && !url.equals( "/login/logout" ) ) {
  158. LifeCenterFunction.scriptMessage( response, "location.href='/staff/myinfo';" );
  159. return false;
  160. }
  161. } else {
  162. LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '초기화 비밀번호로 로그인시 비밀번호 변경 후 서비스 이용이 가능합니다.', callBack : function(){ } });" );
  163. }
  164. }
  165. }
  166. }
  167. }
  168. } else if( url.equals( "/login/staff" ) || url.equals( "/login/admin" ) ) {
  169. if( session != null ) {
  170. if( groupIdx.equals( "1" ) ) {
  171. response.sendRedirect( "/center/list" );
  172. } else {
  173. response.sendRedirect( "/patient/list" );
  174. }
  175. return false;
  176. }
  177. }
  178. }
  179. return true;
  180. }
  181. @Override
  182. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
  183. ModelAndView modelAndView) {
  184. //logger.info("Method Executed Time : postHandle");
  185. }
  186. @Override
  187. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
  188. Exception ex) {
  189. //logger.info("Method Completed Time : afterCompletion");
  190. logger.info( "--------------------- InterCeptor afterCompletion ---------------------" );
  191. }
  192. }