Browse Source

메뉴별 권한 적용, 사이드메뉴 리스트 권한 적용 및 수정, 인력관리 화면 수정

Seo 4 years ago
parent
commit
0ed487934b

+ 21 - 2
src/main/java/com/lemon/lifecenter/common/LifeCenterController.java

@@ -1,6 +1,7 @@
 package com.lemon.lifecenter.common;
 
 import java.util.HashMap;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -12,6 +13,8 @@ import org.springframework.web.servlet.ModelAndView;
 import com.lemon.lifecenter.dto.RoleDTO;
 import com.lemon.lifecenter.service.RoleService;
 
+import ch.qos.logback.classic.Logger;
+
 public class LifeCenterController {
     @Autowired
     private RoleService roleService;
@@ -39,6 +42,7 @@ public class LifeCenterController {
         hashMap.put("_INCLUDE", "/WEB-INF/jsp/include");
         hashMap.put("_MENUPATH", pathType);
         hashMap.put("_MENUPATH2", pathType2);
+        hashMap.put("_URL", url);
         
         try {
           String sesId         = LifeCenterSessionController.getSession( request, "sesId" );
@@ -53,6 +57,8 @@ public class LifeCenterController {
           hashMap.put( "_SES_CENTER_NAME", sesCenterName );
           hashMap.put( "_SES_GROUP_IDX", sesGroupIdx );
           
+          
+          
         } catch (NullPointerException e) {
           e.printStackTrace();
           
@@ -62,15 +68,28 @@ public class LifeCenterController {
         }
         
         /*
-         * 현재 메뉴에대한 권한 (C, R, U, D) 리턴  -> View 페이지에서 CRUD 권한에 따른 각각의 버튼 show, hide 제어 하기 위함
+         * SideBar 사이드 메뉴리스트 조회 read 권한있는 메뉴만 
          */
+        
+        String sesGroupIdx = LifeCenterSessionController.getSession( request, "sesGroupIdx" );
         RoleDTO roleDTO = new RoleDTO();
+        
+        if( sesGroupIdx != null && !sesGroupIdx.equals( "" ) ) {
+            roleDTO.setGroupIdx( Integer.valueOf( sesGroupIdx.toString() ) );
+            List<RoleDTO> sideMenuList = roleService.selectSideMenuList( roleDTO );
+            mv.addObject( "sideMenuList", sideMenuList );
+        }
+        
+        /*
+         * 현재 메뉴에대한 권한 (C, R, U, D) 리턴  -> View 페이지에서 CRUD 권한에 따른 각각의 버튼 show, hide 제어 하기 위함
+         */
+        roleDTO = new RoleDTO();
         roleDTO.setMenuPath( url );
         int roleCount = roleService.selectNowPathRoleCheckTotal( roleDTO );
         
+        
         // roleCount가 0인경우는 권한체크하지않음 권한체크가 필요한 경로는 sys_menu_list에 등록 필수
         if( roleCount > 0 ) {
-            String sesGroupIdx = LifeCenterSessionController.getSession( request, "sesGroupIdx" );
             roleDTO.setGroupIdx( Integer.valueOf( sesGroupIdx.toString() ) );
             roleDTO = roleService.selectNowPathRoleCheckData( roleDTO );
             

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

@@ -91,7 +91,6 @@ public class StaffController extends LifeCenterController {
         centerService.selectCenterInfoOne( centerDTO );
         
         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() ) ) );
         }
         
@@ -161,33 +160,34 @@ public class StaffController extends LifeCenterController {
         StaffDTO dto = new StaffDTO();
         dto.setId(staffId);
         dto = memberService.selectMemberInfo(dto);
-//        String groupIdx = LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, String.valueOf(dto.getGroupIdx()));
+        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);
+        GroupListDTO gDto = new GroupListDTO();
+        List<GroupListDTO> groupList = groupListService.selectGroupList(gDto);
         
-//        for( GroupListDTO data : groupList ) {
-//            data.setEncryptIdx( LifeCenterFunction.aesEncrypt( config.aesKey, config.IV, String.valueOf( data.getIdx() ) ) );
-//        }
+        for( GroupListDTO data : groupList ) {
+            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("groupIdx", groupIdx);
 //        mv.addObject("centerList", centerList);
-//        mv.addObject( "groupList", groupList );
+        mv.addObject( "groupList", groupList );
 
         return mv;
     }
     
-    @RequestMapping("edit/update")
+    @RequestMapping( value="edit/update", method=RequestMethod.POST)
     public String editUpdate(
             HttpServletRequest request,HttpServletResponse response,
-            @ModelAttribute("dto") StaffDTO dto
-            ) throws Exception {
-        
+            @RequestParam(value="encGroupIdx", required=true) String encGroupIdx,
+            @ModelAttribute("dto") StaffDTO dto ) throws Exception {
+        String decryptIdx = LifeCenterFunction.aesDecrypt( config.aesKey, config.IV, encGroupIdx );
         String sesId  = LifeCenterSessionController.getSession( request, "sesId" );
+        dto.setGroupIdx( Integer.valueOf( decryptIdx ) );
         dto.setUpdateById(sesId);
         
         int rts = memberService.updateEditMember(dto);

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

@@ -23,4 +23,5 @@ public interface RoleMapper {
     public void insertMenuRole( RoleDTO dto );
     public int selectNowPathRoleCheckTotal( RoleDTO dto );
     public RoleDTO selectNowPathRoleCheckData( RoleDTO dto );
+    public List<RoleDTO> selectSideMenuList( RoleDTO dto );
 }

+ 3 - 0
src/main/java/com/lemon/lifecenter/service/RoleService.java

@@ -49,4 +49,7 @@ public class RoleService {
     public RoleDTO selectNowPathRoleCheckData( RoleDTO dto ){
         return mapper.selectNowPathRoleCheckData(dto);
     }
+    public List<RoleDTO> selectSideMenuList( RoleDTO dto ) {
+        return mapper.selectSideMenuList(dto);
+    }
 }

+ 2 - 2
src/main/resources/mybatis/mapper/group/group.xml

@@ -12,8 +12,8 @@
                    PERMISSIONS AS permissions
               FROM GROUP_LIST
              WHERE USE_YN = 'Y'
-               AND PERMISSIONS = 'USER'
-             ORDER BY `ORDER`
+               AND NVL( permissions, '' ) NOT IN ( 'SYSTEM', 'ADMIN' )
+             ORDER BY CREATE_DATE
         ]]>
     </select>
 </mapper>

+ 18 - 0
src/main/resources/mybatis/mapper/role/role.xml

@@ -110,6 +110,7 @@
                 ON MR.menu_code = ML.parent_code
                AND group_idx = #{groupIdx}
              WHERE ML.menu_path = #{menuPath}
+               AND ML.parent_code != '*****' 
         ]]>
     </select>
     
@@ -128,6 +129,7 @@
                    IFNULL( ( SELECT delete_yn FROM sys_menu_role WHERE group_idx=#{groupIdx} AND ML.menu_code = menu_code ), 'N' ) AS deleteYn
               FROM sys_menu_list ML
              WHERE parent_code = '*****'
+               AND use_yn = 'Y'
              ORDER BY menu_order ASC
         ]]>
     </select>
@@ -149,4 +151,20 @@
         ]]>
     </insert>
     
+    
+    <select id="selectSideMenuList" parameterType="RoleDTO" resultType="RoleDTO">
+        <![CDATA[
+            SELECT ML.menu_code AS menuCode,
+                   ML.menu_name AS menuName,
+                   ML.menu_path AS menuPath
+              FROM sys_menu_list ML
+              LEFT JOIN sys_menu_role MR
+                ON ML.menu_code = MR.menu_code
+               AND MR.group_idx= #{groupIdx}
+             WHERE parent_code = '*****'
+               AND ML.use_yn = 'Y'
+               AND MR.read_yn = 'Y'
+             ORDER BY menu_order ASC
+        ]]>
+    </select>
 </mapper>

+ 72 - 52
src/main/webapp/WEB-INF/jsp/include/sidebar.jsp

@@ -1,7 +1,6 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-    pageEncoding="UTF-8"%>
-    
+<%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix = "fn" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <script>
 // $( function(){
 // // localStorage.clear();
@@ -53,65 +52,86 @@
             </li>
             <li class="sidebar-item active">
                 <ul id="dashboards" class="sidebar-dropdown list-unstyled collapse show" data-parent="#sidebar">
-<%--                     <c:if test="${data._SES_GROUP_IDX ne 1}"> --%>
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "patient"}'>active</c:if>">
-                            <a class="sidebar-link" href="/patient/list">환자관리</a>
-                        </li>
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "clinic"}'>active</c:if>">
-                            <a class="sidebar-link" href="/clinic/state">진료관리</a>
-                        </li>
-                        <c:if test="${data._SES_GROUP_IDX ne 3}">
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "staff"}'>active</c:if>">
-                            <a class="sidebar-link" href="/staff/list">의료진관리</a>
+                    
+                    <c:forEach var="sm" items="${sideMenuList}">
+                        <li class="sidebar-item 
+                            <c:choose>
+                                <c:when test="${data._URL eq sm.menuPath}">active</c:when>
+                                <c:otherwise>
+                                    <c:set var="menuPath" value="/${data._MENUPATH}/"/>
+                                    <c:if test = "${fn:contains( sm.menuPath, menuPath )}">active ${menuPath}</c:if>
+                                </c:otherwise>
+                            </c:choose>
+                            ">
+                            <a class="sidebar-link" href="${sm.menuPath}"><c:out value="${sm.menuName}"/></a>
                         </li>
-                        </c:if>
+                    </c:forEach>
+                    
+<%--                     <c:if test="${data._SES_GROUP_IDX ne 1}"> --%>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "patient"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/patient/list">환자관리</a> -->
+<!--                         </li> -->
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "clinic"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/clinic/state">진료관리</a> -->
+<!--                         </li> -->
+<%--                         <c:if test="${data._SES_GROUP_IDX ne 3}"> --%>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "staff"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/staff/list">의료진관리</a> -->
+<!--                         </li> -->
+<%--                         </c:if> --%>
 <%--                     </c:if> --%>
                     
-                    <c:if test="${data._SES_GROUP_IDX eq 1}">
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "center"}'>active</c:if>">
-                            <a class="sidebar-link" href="/center/list">생활치료센터 관리</a>
-                        </li>
+<%--                     <c:if test="${data._SES_GROUP_IDX eq 1}"> --%>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "center"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/center/list">생활치료센터 관리</a> -->
+<!--                         </li> -->
                         
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "cooperation"}'>active</c:if>">
-                            <a class="sidebar-link" href="/cooperation/list">협력병원 관리</a>
-                        </li>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "cooperation"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/cooperation/list">협력병원 관리</a> -->
+<!--                         </li> -->
                         
-                    </c:if>
+<%--                     </c:if> --%>
                     
-                    <li class="sidebar-item <c:if test='${data._MENUPATH eq "notice"}'>active</c:if>">
-                        <a class="sidebar-link" href="/notice/list">공지사항</a>
-                    </li>
-                    <c:if test="${data._SES_ID eq 'user'}">
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "qna"}'>active</c:if>">
-                            <a class="sidebar-link" href="/qna/list">의견 게시판</a>
-                        </li>
-                    </c:if>
+<%--                     <li class="sidebar-item <c:if test='${data._MENUPATH eq "notice"}'>active</c:if>"> --%>
+<!--                         <a class="sidebar-link" href="/notice/list">공지사항</a> -->
+<!--                     </li> -->
+<%--                     <c:if test="${data._SES_ID eq 'user'}"> --%>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "qna"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/qna/list">의견 게시판</a> -->
+<!--                         </li> -->
+<%--                     </c:if> --%>
                     
-                    <c:if test="${data._SES_ID eq 'user'}">
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "push"}'>active</c:if>">
-                            <a class="sidebar-link" href="/push/list">푸시 서비스 관리</a>
-                        </li>
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "apiapplication"}'>active</c:if>">
-                            <a class="sidebar-link" href="/apiApplication/info">API 서비스 신청</a>
-                        </li>
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "apimanager"}'>active</c:if>">
-                            <a class="sidebar-link" href="/apiManager/list">API 서비스 관리</a>
-                        </li>
+<%--                     <c:if test="${data._SES_ID eq 'user'}"> --%>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "push"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/push/list">푸시 서비스 관리</a> -->
+<!--                         </li> -->
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "apiapplication"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/apiApplication/info">API 서비스 신청</a> -->
+<!--                         </li> -->
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "apimanager"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/apiManager/list">API 서비스 관리</a> -->
+<!--                         </li> -->
                         
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "role"}'>active</c:if>">
-                            <a class="sidebar-link" href="/role/list">그룹 권한 관리</a>
-                        </li>
-                    </c:if>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "role"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/role/list">그룹 권한 관리</a> -->
+<!--                         </li> -->
+<%--                     </c:if> --%>
                     
-                    <c:if test="${data._SES_ID eq 'user' or data._SES_ID eq 'system'}">
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "staffmedimanager"}'>active</c:if>">
-                            <a class="sidebar-link" href="/staffMediManager/list">의료인력 현황</a>
-                        </li>
+<%--                     <c:if test="${data._SES_ID eq 'user' or data._SES_ID eq 'system'}"> --%>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "meditotal"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/meditotal/list">의료인력 현황</a> -->
+<!--                         </li> -->
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "medi"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/medi/managerlist">의료인력 현황 관리</a> -->
+<!--                         </li> -->
                         
-                        <li class="sidebar-item <c:if test='${data._MENUPATH eq "staffgovmanager"}'>active</c:if>">
-                            <a class="sidebar-link" href="/staffGovManager/list">행정인력 현황</a>
-                        </li>
-                    </c:if>
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "govtotal"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/govtotal/list">행정인력 현황</a> -->
+<!--                         </li> -->
+<%--                         <li class="sidebar-item <c:if test='${data._MENUPATH eq "gov"}'>active</c:if>"> --%>
+<!--                             <a class="sidebar-link" href="/gov/managerlist">행정인력 현황 관리</a> -->
+<!--                         </li> -->
+<%--                     </c:if> --%>
                     
                 </ul>
             </li>

+ 2 - 12
src/main/webapp/WEB-INF/jsp/staff/edit.jsp

@@ -78,26 +78,16 @@ $( function(){
                                                 <th>치료센터</th>
                                                 <td>
                                                     <c:out value="${info.centerName}" />
-    <!--                                                 <select class="custom-select" name="centerCode"> -->
-    <%--                                                     <c:forEach var="i" items="${centerList}"> --%>
-    <%--                                                         <option value="${i.centerCode}" <c:if test="${i.centerCode eq centerCode}"> selected="selected"</c:if>><c:out value="${i.centerName}" /></option> --%>
-    <%--                                                     </c:forEach> --%>
-                                                        
-    <!--                                                     <option selected="">센터-2</option> -->
-    <!--                                                 </select> -->
                                                 </td>
                                             </tr>
                                             <tr>
                                                 <th>권한</th>
                                                 <td>
-                                                    <c:if test="${info.groupIdx eq 1}">시스템관리자</c:if>
-                                                    <c:if test="${info.groupIdx eq 2}">관리자</c:if>
-                                                    <c:if test="${info.groupIdx eq 3}">일반사용자</c:if>
-                                                    <!-- select class="custom-select" name="encGroupIdx">
+                                                    <select class="custom-select" name="encGroupIdx">
                                                         <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>
-                                                    </select-->
+                                                    </select>
                                                 </td>
                                                 <th>상태</th>
                                                 <td>

+ 4 - 4
src/main/webapp/WEB-INF/jsp/staffTotal/list.jsp

@@ -305,14 +305,14 @@ function getExcel(){
                                                         <c:forEach var="l" items="${list}" varStatus="lStatus">
                                                         
                                                             <c:set var="pageNum" value="${ lStatus.index + ( (page - 1) * pageSize ) }" />
-                                                            <tr>
+                                                            <tr <c:if test="${pageNum == 0}">style="background:#fbfd93;font-weight:600;text-align:center;"</c:if>>
                                                                 <td><c:choose><c:when test="${pageNum == 0}">총계</c:when><c:otherwise>${pageNum}</c:otherwise></c:choose></td>
-                                                                <td class="text-left">
+                                                                <td <c:if test="${pageNum != 0}">class="text-left"</c:if>>
                                                                     <c:out value="${l.centerName}" />
                                                                 </td>
-                                                                <td><c:out value="${l.locationName}" /></td>
+                                                                <td><c:out value="${l.locationName}" /><c:if test="${l.locationName eq ''}">-</c:if>
                                                                 <td><c:out value="${l.cooperativeName}" /></td>
-                                                                <td><c:out value="${l.staffTotal}" /></td>
+                                                                <td><fmt:formatNumber value="${l.staffTotal}" pattern="#,###" /></td>
                                                                 <td><fmt:formatNumber value="${l.staff1}" pattern="#,###" /></td>
                                                                 <td><fmt:formatNumber value="${l.staff2}" pattern="#,###" /></td>
                                                                 <td><fmt:formatNumber value="${l.staff3}" pattern="#,###" /></td>