소스 검색

비밀번호 규칙변경으로 최초 1회 비밀번호 변경 필수

huiwon.seo 4 년 전
부모
커밋
4a1bba3d47

+ 26 - 9
src/main/java/com/lemon/lifecenter/common/LifeCenterInterCeptor.java

@@ -68,19 +68,36 @@ public class LifeCenterInterCeptor extends HandlerInterceptorAdapter {
                 } else {
                     logger.info( "IP : " + LifeCenterFunction.getRemoteAddr( request ) + " ID : " + session.toString() + "  URL : " + url + " Port : " + port );
                     
-                    if( sesPasswordChange != null && sesPasswordChange.equals( "true" ) ) {
-                        
-                        if( !url.equals( "/staff/myinfo" ) ) {
-                            logger.info( "초기화 비밀번호로 로그인 -> 비밀번호 변경 페이지로 이동" );
+                    
+                    
+                    if( sesPasswordChange != null ) {
+                        if( sesPasswordChange.equals( "REQUIRED" ) ) {
                             
-                            if( !url.equals( "/common/passwordCheck" ) && !url.equals( "/staff/myinfo/update" ) ) {
-                                LifeCenterFunction.scriptMessage( response, "location.href='/staff/myinfo';" );
+                            if( !url.equals( "/staff/myinfo" ) ) {
+                                logger.info( "비밀번호 변경 필요 -> 비밀번호 변경 페이지로 이동" );
+                                
+                                if( !url.equals( "/common/passwordCheck" ) && !url.equals( "/staff/myinfo/update" ) && !url.equals( "/login/logout" ) ) {
+                                    LifeCenterFunction.scriptMessage( response, "location.href='/staff/myinfo';" );
+                                }
+                            } else {
+                                LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '비밀번호 보안 규정 변경으로 인하여 의무적으로 비밀번호 1회 변경 진행 후 서비스 이용이 가능합니다.', callBack : function(){  } });" );
                             }
-                        } else {
-                            LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '초기화 비밀번호로 로그인시 비밀번호 변경 후 서비스 이용이 가능합니다.', callBack : function(){  } });" );
+                            
+                        } else if( sesPasswordChange.equals( "RESET" ) ) {
+                            
+                            if( !url.equals( "/staff/myinfo" ) ) {
+                                logger.info( "초기화 비밀번호로 로그인 -> 비밀번호 변경 페이지로 이동" );
+                                
+                                if( !url.equals( "/common/passwordCheck" ) && !url.equals( "/staff/myinfo/update" ) && !url.equals( "/login/logout" ) ) {
+                                    LifeCenterFunction.scriptMessage( response, "location.href='/staff/myinfo';" );
+                                }
+                            } else {
+                                LifeCenterFunction.scriptMessage( response, "alertBox({ txt: '초기화 비밀번호로 로그인시 비밀번호 변경 후 서비스 이용이 가능합니다.', callBack : function(){  } });" );
+                            }
+                            
                         }
-                        
                     }
+                    
                 }
                 
             } else if( url.equals( "/login/staff" ) || url.equals( "/login/admin" ) ) {

+ 11 - 3
src/main/java/com/lemon/lifecenter/controller/LoginController.java

@@ -139,10 +139,18 @@ public class LoginController extends LifeCenterController {
                     url = "/center/list";
                 }
                 
-                // 로그인시 초기화 비밀번호일 경우 비밀번호 변경 페이지로 이동
-                if( passwordVal.equals( config.staffResetPw ) || passwordVal.equals( config.centerResetPw ) ) {
-                    LifeCenterSessionController.setSession( request, "sesPasswordChange", "true" );
+                // member 테이블 pw_change_req 컬럼 값이 Y 인경우 비밀번호 변경 필요
+                if( memberData.getPwChangeReq().equals( "Y" ) ) {
+                    LifeCenterSessionController.setSession( request, "sesPasswordChange", "REQUIRED" );
                     url = "/staff/myinfo";
+                    
+                } else {
+                    // 로그인시 초기화 비밀번호일 경우 비밀번호 변경 페이지로 이동
+                    if( passwordVal.equals( config.staffResetPw ) || passwordVal.equals( config.centerResetPw ) ) {
+                        LifeCenterSessionController.setSession( request, "sesPasswordChange", "RESET" );
+                        url = "/staff/myinfo";
+                        
+                    }
                 }
             }
         }

+ 4 - 4
src/main/java/com/lemon/lifecenter/controller/StaffController.java

@@ -228,15 +228,15 @@ public class StaffController extends LifeCenterController {
             if (!passwordNew.equals("")) {
                 if (passwordNew.equals(passwordConfirm)) {
                     dto.setPassword(LifeCenterFunction.sha256Encrypt(passwordNew));
+                    
+                    if( sesPasswordChange != null && ( sesPasswordChange.equals( "REQUIRED" ) || sesPasswordChange.equals( "RESET" ) ) ) {
+                        LifeCenterSessionController.setSession( request, "sesPasswordChange", "" );
+                    }
                 }
             }
             memberService.updateMember(dto);
             LifeCenterSessionController.setSession( request, "sesName", dto.getName() );
             
-            if( sesPasswordChange != null && sesPasswordChange.equals( "true" ) ) {
-                LifeCenterSessionController.setSession( request, "sesPasswordChange", "false" );
-            }
-            
             LifeCenterFunction.scriptMessage( response, "alertBox({ txt : '변경되었습니다', callBack : function(){ location.href='/staff/myinfo'; } });" );
             return "/common/blank";
         } else {

+ 10 - 0
src/main/java/com/lemon/lifecenter/dto/LoginDTO.java

@@ -16,6 +16,16 @@ public class LoginDTO {
     public int groupIdx;
     public String centerCode;
     public String centerName;
+    public String pwChangeReq = "";
+    
+    public String getPwChangeReq() {
+        return pwChangeReq;
+    }
+
+    public void setPwChangeReq(String pwChangeReq) {
+        this.pwChangeReq = pwChangeReq;
+    }
+
     public String getCenterName() {
         return centerName;
     }

+ 2 - 1
src/main/resources/mybatis/mapper/login/login.xml

@@ -34,7 +34,8 @@
                    m.center_code AS centerCode,
                    (select center_name
                       from center_info ci
-                     where ci.center_code = m.center_code) AS centerName
+                     where ci.center_code = m.center_code) AS centerName,
+                   m.pw_change_req AS pwChangeReq
               FROM member m
              WHERE id = #{id}
                AND password = #{password}

+ 1 - 0
src/main/resources/mybatis/mapper/staff/staff.xml

@@ -155,6 +155,7 @@
         <if test='password != null and password != ""'>
         <![CDATA[
                    PASSWORD = #{password},
+                   PW_CHANGE_REQ = '',
         ]]>
         </if>
         <![CDATA[