Bladeren bron

1. 의료진 계정 비밀번호 초기화 추가
2. 내 정보수정 추가

junekeunsong 4 jaren geleden
bovenliggende
commit
b8bcf54239

+ 6 - 0
src/main/java/com/lemon/lifecenter/common/LifeCenterConfigVO.java

@@ -26,4 +26,10 @@ public class LifeCenterConfigVO {
     // 페이지 prefix   ex) ?page
     @Value( "${config.pagePrefix}" )
     public String pagePrefix;
+    
+    @Value( "${config.staff.resetPw}" )
+    public String staffResetPw;
+    
+    @Value( "config.center.resetPw" )
+    public String centerResetPw;
 }

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

@@ -3,6 +3,9 @@ package com.lemon.lifecenter.controller;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -19,6 +22,7 @@ import com.lemon.lifecenter.common.LifeCenterConfigVO;
 import com.lemon.lifecenter.common.LifeCenterController;
 import com.lemon.lifecenter.common.LifeCenterFunction;
 import com.lemon.lifecenter.common.LifeCenterPaging;
+import com.lemon.lifecenter.common.LifeCenterSessionController;
 import com.lemon.lifecenter.dto.CenterInfoDTO;
 import com.lemon.lifecenter.dto.GroupListDTO;
 import com.lemon.lifecenter.dto.LoginDTO;
@@ -114,30 +118,82 @@ public class StaffController extends LifeCenterController {
 
     @RequestMapping("/edit")
     public ModelAndView staffEdit(
-            @RequestParam(value="staffId", required=false, defaultValue="") String staffId,
-            @RequestParam(value="centerCode", required=false, defaultValue="") String centerCode,
-            @RequestParam(value="groupIdx", required=false, defaultValue="") String groupIdx) {
+            @RequestParam(value="staffId", required=false, defaultValue="") String staffId) throws Exception {
         
         List<CenterInfoDTO> centerList = memberService.selectCenterList();
         StaffDTO dto = new StaffDTO();
         dto.setId(staffId);
         dto = memberService.selectMemberInfo(dto);
+        String groupIdx = LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, String.valueOf(dto.getGroupIdx()));
+        int centerCode = dto.getCenterCode();
+        
+        GroupListDTO gDto = new GroupListDTO();
+        List<GroupListDTO> groupList = groupListService.selectGroupList(gDto);
+        
+        for( GroupListDTO data : groupList ) {
+//            data.setPermissions( LifeCenterFunction.aesEncrypt( config.aesKey, config.IV, data.getPermissions() ) );
+            data.setEncryptIdx( LifeCenterFunction.aesEncrypt( config.aesKey, config.IV, String.valueOf( data.getIdx() ) ) );
+        }
         
         ModelAndView mv = setMV("staff/edit");
         mv.addObject("info", dto);
         mv.addObject("centerCode", centerCode);
         mv.addObject("groupIdx", groupIdx);
         mv.addObject("centerList", centerList);
+        mv.addObject( "groupList", groupList );
 
         return mv;
     }
     
     @RequestMapping("/myinfo")
-    public ModelAndView staffMyinfo() {
+    public ModelAndView staffMyinfo(HttpServletRequest request,HttpServletResponse response) {
+        String sesId  = LifeCenterSessionController.getSession( request, "sesId" );
+        
+        StaffDTO dto = new StaffDTO();
+        dto.setId(sesId);
+        dto = memberService.selectMemberInfo(dto);
+        
+        String referer  = request.getHeader( "Referer" );
+        logger.error("myinfo refere -- > " + referer);
+        
         ModelAndView mv = setMV("staff/myinfo");
+        mv.addObject("info", dto);
+        mv.addObject("returnUrl", referer);
 
         return mv;
     }
+    
+    @RequestMapping("myinfo/update")
+    public String myInfoUpdate(
+            HttpServletRequest request, HttpServletResponse response,
+            @ModelAttribute("dto") final StaffDTO dto,
+            @RequestParam(value="passwordNew", required=false, defaultValue="") String passwordNew,
+            @RequestParam(value="passwordConfirm", required=false, defaultValue="") String passwordConfirm,
+            @RequestParam(value="returnUrl", required=false, defaultValue="") String returnUrl) throws Exception {
+        
+        logger.error("myinfo update returnUrl -- > " + returnUrl);
+        logger.error("dto.id -- > " + dto.getId());
+        logger.error("dto.getPassword -- > " + dto.getPassword());
+        
+        String encryptPw = LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, dto.getPassword());
+        dto.setPassword(encryptPw);
+        
+        int mCnt = memberService.selectMemberCount(dto);
+        if (mCnt == 1) {
+            if (!passwordNew.equals("")) {
+                if (passwordNew.equals(passwordConfirm)) {
+                    dto.setPassword(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, passwordNew));
+                }
+            }
+            memberService.updateMember(dto);
+        } else {
+            LifeCenterFunction.scriptMessage( response, "alert( '비밀번호가 일치하지않습니다.' ); history.back();" );
+            return "/common/blank";
+        }
+        
+        return "redirect:" + returnUrl;
+//        return "redi"returnUrl;
+    }
 
     @RequestMapping("/list")
     public ModelAndView staffList(
@@ -205,4 +261,30 @@ public class StaffController extends LifeCenterController {
         
         return result;
     }
+    
+    @RequestMapping( value="/passwordReset", method = RequestMethod.POST )
+    @ResponseBody
+    public boolean passwordReset(
+            @RequestParam( value="staffId", required = true ) String id,
+            @RequestParam( value="type", required = true ) String type) throws Exception {
+        logger.error("!!!!!!!!!!!!!!!!!! -- > " + id);
+        boolean result = false;
+        String pw = "";
+        StaffDTO dto = new StaffDTO();
+        dto.setId(id);
+        if (type.equals("staff")) {
+            pw = LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, config.staffResetPw);
+        } else {
+            pw = LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, config.centerResetPw);
+        }
+        dto.setPassword(pw);
+        
+        int rts = memberService.updateMemberPwReset(dto);
+        
+        if (rts == 1) {
+            result = true;
+        }
+        
+        return result;
+    }
 }

+ 1 - 0
src/main/java/com/lemon/lifecenter/mapper/StaffMapper.java

@@ -19,4 +19,5 @@ public interface StaffMapper {
     public StaffDTO selectMemberInfo(StaffDTO dto);
     public List<CenterInfoDTO> selectCenterList();
     public void insertStaff(StaffDTO dto);
+    public Integer updateMemberPwReset(StaffDTO dto);
 }

+ 4 - 0
src/main/java/com/lemon/lifecenter/service/StaffService.java

@@ -45,4 +45,8 @@ public class StaffService {
     public void insertStaff(StaffDTO dto) {
         mapper.insertStaff(dto);
     }
+    
+    public Integer updateMemberPwReset(StaffDTO dto) {
+        return mapper.updateMemberPwReset(dto);
+    }
 }

+ 6 - 4
src/main/resources/config.properties

@@ -1,7 +1,9 @@
 #################################
 ## LifeCenterConfigVO
 #################################
-config.aesKey        = 1q2w3e4r5t6y7u8i9o0p!@#$%^&*()hj
-config.pageGroupSize = 5
-config.pageDataSize  = 10
-config.pagePrefix    = page
+config.aesKey         = 1q2w3e4r5t6y7u8i9o0p!@#$%^&*()hj
+config.pageGroupSize  = 5
+config.pageDataSize   = 10
+config.pagePrefix     = page
+config.staff.resetPw  = qwer!#24%
+config.center.resetPw = !#24%qwer

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

@@ -127,7 +127,7 @@
         ]]>
         <if test='password != null and password != ""'>
         <![CDATA[
-                   PASSWORD = #{password}
+                   PASSWORD = #{password},
         ]]>
         </if>
         <![CDATA[
@@ -136,6 +136,14 @@
         ]]>
     </update>
     
+    <update id="updateMemberPwReset" parameterType="StaffDTO">
+        <![CDATA[
+            UPDATE MEMBER
+               SET PASSWORD = #{password}
+             WHERE ID = #{id}
+        ]]>
+    </update>
+    
     <select id="selectMemberInfo" parameterType="StaffDTO" resultType="StaffDTO">
         <![CDATA[
             SELECT M.ID                                             AS id,

+ 10 - 7
src/main/webapp/WEB-INF/jsp/staff/edit.jsp

@@ -58,25 +58,25 @@
                                         <tr>
                                             <th>현재 비밀번호</th>
                                             <td colspan="3">
-                                                <input type="text" class="form-control" name="password" required>
+                                                <input type="text" class="form-control" name="password" placeholder="정보수정을 위해 비밀번호를 입력해주세요." required>
                                             </td>
                                         </tr>
                                         <tr>
                                             <th>신규 비밀번호</th>
                                             <td colspan="3">
-                                                <input type="text" class="form-control" name="passwordNew">
+                                                <input type="text" class="form-control" name="passwordNew" placeholder="비밀번호 변경시에만 입력해주세요.(영문, 숫자, 특수문자를 혼합하여 8 ~ 15자 이내)">
                                             </td>
                                         </tr>
                                         <tr>
                                             <th>비밀번호 확인</th>
                                             <td colspan="3">
-                                                <input type="text" class="form-control" name="passwordConfirm">
+                                                <input type="text" class="form-control" name="passwordConfirm" placeholder="신규 비밀번호 확인을 위해 비밀번호를 한번 더 입력하세요.">
                                             </td>
                                         </tr>
                                         <tr>
                                             <th>휴대폰번호</th>
                                             <td>
-                                                <input type="text" class="form-control" name="phoneNumber" value="${info.phoneNumber}" placeholder="01012341234">
+                                                <input type="text" class="form-control" name="phoneNumber" value="${info.phoneNumber}" placeholder="01012341234" onkeypress="onlyNumber();">
                                             </td>
                                             <th>치료센터</th>
                                             <td>
@@ -93,8 +93,11 @@
                                             <th>권한</th>
                                             <td>
                                                 <select class="custom-select" name="groupIdx">
-                                                    <option selected="">센터-1</option>
-                                                    <option selected="">센터-2</option>
+                                                    <c:forEach var="gl" items="${groupList}"> 
+                                                        <option value="${gl.encryptIdx}" <c:if test="${gl.encryptIdx eq groupIdx}"> selected="selected" </c:if> ><c:out value="${gl.groupName}"/></option>
+                                                    </c:forEach>
+                                                    <!-- <option selected="">센터-1</option>
+                                                    <option selected="">센터-2</option> -->
                                                 </select>
                                             </td>
                                             <th>상태</th>
@@ -128,7 +131,7 @@
                                         <div class="col-12">
                                             <div class="text-right">
                                                 <button class="btn btn-outline-primary w100" onclick="location.href='./list';">취소</button>
-                                                <button class="btn btn-primary w100">등록</button>
+                                                <button class="btn btn-primary w100">수정</button>
                                             </div>
                                         </div>
                                     </div>

+ 26 - 24
src/main/webapp/WEB-INF/jsp/staff/info.jsp

@@ -4,37 +4,37 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+<script type="text/javascript">
+function reset() {
+    var resetCheck = confirm("비밀번호를 초기화 하시겠습니까?");
+    if (resetCheck == true) {
+        getAjax("/staff/passwordReset", $("#hiddenForm").serialize(), function ( result ) {
+            console.log( result );
+            if (result === true) {
+                alert('비밀번호가 초기화 되었습니다.');
+            }
+        }, function(){
+            alert('비밀번호가 초기화에 실패하였습니다.');
+        }, function(){
+            
+        });
+    }
+}
+
+</script>
 </head>
 <body>
     <div class="wrapper">
         <jsp:include page="${data._INCLUDE}/sidebar.jsp"></jsp:include>
         
         <div class="main">
-            <nav class="navbar navbar-expand navbar-light bg-white">
-                <a class="sidebar-toggle d-flex mr-2">
-                    <i class="hamburger align-self-center"></i>
-                </a>
-
-                <div class="navbar-collapse collapse">
-                    <ul class="navbar-nav ml-auto">
-                        <li class="nav-item dropdown">
-                            <a class="nav-icon dropdown-toggle d-inline-block d-sm-none" href="#" data-toggle="dropdown">
-                                <i class="align-middle" data-feather="settings"></i>
-                            </a>
-
-                            <a class="nav-link dropdown-toggle d-none d-sm-inline-block" href="#" data-toggle="dropdown">
-                               <span class="text-dark">홍길동 선생님</span>
-                            </a>
-                            <div class="dropdown-menu dropdown-menu-right">
-                                <a class="dropdown-item" href="pages-profile.html"><i class="align-middle mr-1" data-feather="user"></i> 정보변경</a>
-                                <a class="dropdown-item" href="#"><i class="align-middle mr-1" data-feather="pie-chart"></i> 로그아웃</a>
-                            </div>
-                        </li>
-                    </ul>
-                </div>
-            </nav>
+            <jsp:include page="${data._INCLUDE}/top.jsp"></jsp:include>
 
             <main class="content">
+            <form id="hiddenForm">
+                <input type="hidden" id="staffId" name="staffId" value="<c:out value="${info.id}" />">
+                <input type="hidden" id="type" name="type" value="staff">
+            </form>
                 <div class="container-fluid p-0">
                     <!-- 환자관리 : 신규환자 등록 START -->
                     <div class="row">
@@ -61,7 +61,7 @@
                                     <div class="row mb-3">
                                         <div class="col-12">
                                             <div class="text-right">
-                                                <button class="btn btn-primary w100" onclick="location.href='./edit?staffId=${info.id}&centerCode=${info.centerCode}&groupIdx=${info.groupIdx}';">수정</button>
+                                                <button class="btn btn-primary w100" onclick="location.href='./edit?staffId=${info.id}';">수정</button>
                                             </div>
                                         </div>
                                     </div>
@@ -76,6 +76,7 @@
                                             <th>아이디</th>
                                             <td>
                                                 <c:out value="${info.id}" />
+                                                <input type="hidden" id="staffId" name="staffId" value="<c:out value="${info.id}" />">
                                             </td>
                                             <th>이름</th>
                                             <td>
@@ -130,6 +131,7 @@
                                     <div class="row mt-3">
                                         <div class="col-12">
                                             <div class="text-right">
+                                                <button class="btn btn-warning w150" onclick="reset();">비밀번호 초기화</button>
                                                 <button class="btn btn-primary w100" onclick="location.href='./list';">확인</button>
                                             </div>
                                         </div>

+ 91 - 54
src/main/webapp/WEB-INF/jsp/staff/myinfo.jsp

@@ -4,6 +4,39 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+<script>
+$( function(){
+    $( "#newForm" ).validate({
+        rules: {
+            phoneNumber : {
+                phoneValid : true
+            },
+            passwordConfirm : {
+                 equalTo: "#passwordNew"
+            },
+            passwordNew :{
+                passwordValid : true
+            }
+        },
+        messages : {
+        	passwordConfirm : {
+                equalTo: "신규 비밀번호가 일치하지 않습니다."
+            }
+        },
+        onkeyup: function( element, event ) {
+            $( element ).valid();
+        },
+        onfocusout: function (element) {
+            $( element ).val( $.trim( $( element ).val() ) );
+            $( element ).valid();
+        },
+        submitHandler: function(form) {
+            $("#mainAddr").removeAttr("disabled");
+            form.submit();
+        }
+    });
+})
+</script>
 </head>
 <body>
     <div class="wrapper">
@@ -32,63 +65,67 @@
                     <div class="row">
                         <div class="col-12">
                             <div class="card">
-                                <div class="card-body">
-                                    <table class="table mobile-table">
-                                        <colgroup>
-                                            <col style="width:15%">
-                                            <col style="width:35%">
-                                            <col style="width:15%">
-                                            <col style="width:35%">
-                                        </colgroup>
-                                        <tr>
-                                            <th>아이디</th>
-                                            <td>
-                                                ghdrlfehd
-                                            </td>
-                                            <th>이름</th>
-                                            <td>
-                                                홍길동
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>현재 비밀번호</th>
-                                            <td colspan="3">
-                                                <input type="text" class="form-control">
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>신규 비밀번호</th>
-                                            <td colspan="3">
-                                                <input type="text" class="form-control">
-                                                <span class="font-13 text-muted">특수문자, 영문, 숫자 조합으로 8자 이상 12자 이내로 작성</span>
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>비밀번호 확인</th>
-                                            <td colspan="3">
-                                                <input type="text" class="form-control">
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>휴대폰번호</th>
-                                            <td>
-                                                <input type="text" class="form-control" placeholder="010-1234-1234">
-                                            </td>
-                                            <th>치료센터</th>
-                                            <td>
-                                                레몬종합병원
-                                            </td>
-                                        </tr>
-                                    </table>
-                                    <div class="row mt-3">
-                                        <div class="col-12">
-                                            <div class="text-right">
-                                                <button class="btn btn-outline-primary w100">취소</button>
-                                                <button class="btn btn-primary w100">등록</button>
+                                <form action="./myinfo/update" id="newForm">
+                                <input type="hidden" value="${returnUrl}" name="returnUrl">
+                                    <div class="card-body">
+                                        <table class="table mobile-table">
+                                            <colgroup>
+                                                <col style="width:15%">
+                                                <col style="width:35%">
+                                                <col style="width:15%">
+                                                <col style="width:35%">
+                                            </colgroup>
+                                            <tr>
+                                                <th>아이디</th>
+                                                <td>
+                                                    <c:out value="${info.id}" />
+                                                    <input type="hidden" name="id" value="${info.id}">
+                                                </td>
+                                                <th>이름</th>
+                                                <td>
+                                                    <c:out value="${info.name}" />
+                                                    <input type="hidden" name="name" value="${info.name}">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th><span class="fix">*</span>현재 비밀번호</th>
+                                                <td colspan="3">
+                                                    <input type="password" class="form-control" id="password" name="password" placeholder="정보수정을 위해 비밀번호를 입력해주세요." required>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th>신규 비밀번호</th>
+                                                <td colspan="3">
+                                                    <input type="password" class="form-control" id="passwordNew" name="passwordNew" placeholder="비밀번호 변경시에만 입력해주세요.(영문, 숫자, 특수문자를 혼합하여 8 ~ 15자 이내)">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th>신규 비밀번호 확인</th>
+                                                <td colspan="3">
+                                                    <input type="password" class="form-control" id="passwordConfirm" name="passwordConfirm" placeholder="신규 비밀번호 확인을 위해 비밀번호를 한번 더 입력하세요.">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th><span class="fix">*</span>휴대폰번호</th>
+                                                <td>
+                                                    <input type="text" class="form-control" value="${info.phoneNumber}" name="phoneNumber" placeholder="010-1234-1234" required onkeypress="onlyNumber();">
+                                                </td>
+                                                <th>치료센터</th>
+                                                <td>
+                                                    <c:out value="${info.centerName}" />
+                                                </td>
+                                            </tr>
+                                        </table>
+                                        <div class="row mt-3">
+                                            <div class="col-12">
+                                                <div class="text-right">
+                                                    <button class="btn btn-outline-primary w100">취소</button>
+                                                    <button type="submit" class="btn btn-primary w100">수정</button>
+                                                </div>
                                             </div>
                                         </div>
                                     </div>
-                                </div>
+                                </form>
                             </div>
                         </div>
                     </div>