메뉴별 권한 설정
parent
d3b0cdd749
commit
49a474103a
|
|
@ -177,12 +177,12 @@ function EgovHeader({ loginUser, onChangeLogin }) {
|
||||||
<div className="col">
|
<div className="col">
|
||||||
<h3>사이트관리</h3>
|
<h3>사이트관리</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><NavLink to={URL.ADMIN_SCHEDULE} className={({ isActive }) => (isActive ? "cur" : "")}>일정관리</NavLink></li>
|
<li><NavLink to={URL.ADMIN_SCHEDULE} className={({ isActive }) => (isActive ? "cur" : "")}>대시보드</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_BOARD} className={({ isActive }) => (isActive ? "cur" : "")}>게시판생성관리</NavLink></li>
|
{/*<li><NavLink to={URL.ADMIN_BOARD} className={({ isActive }) => (isActive ? "cur" : "")}>게시판생성관리</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_USAGE} className={({ isActive }) => (isActive ? "cur" : "")}>게시판사용관리</NavLink></li>
|
<li><NavLink to={URL.ADMIN_USAGE} className={({ isActive }) => (isActive ? "cur" : "")}>게시판사용관리</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_NOTICE} className={({ isActive }) => (isActive ? "cur" : "")}>공지사항관리</NavLink></li>
|
<li><NavLink to={URL.ADMIN_NOTICE} className={({ isActive }) => (isActive ? "cur" : "")}>공지사항관리</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_GALLERY} className={({ isActive }) => (isActive ? "cur" : "")}>사이트갤러리관리</NavLink></li>
|
<li><NavLink to={URL.ADMIN_GALLERY} className={({ isActive }) => (isActive ? "cur" : "")}>사이트갤러리관리</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_MANAGER} className={({ isActive }) => (isActive ? "cur" : "")}>사이트관리자 암호변경</NavLink></li>
|
<li><NavLink to={URL.ADMIN_MANAGER} className={({ isActive }) => (isActive ? "cur" : "")}>사이트관리자 암호변경</NavLink></li>*/}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
@ -241,8 +241,8 @@ function EgovHeader({ loginUser, onChangeLogin }) {
|
||||||
</div>
|
</div>
|
||||||
{sessionUserSe ==='ACC_TP01' &&
|
{sessionUserSe ==='ACC_TP01' &&
|
||||||
<>
|
<>
|
||||||
<h3><Link to={URL.ADMIN}>사이트관리</Link></h3>
|
<h3><Link to={URL.ADMIN_SCHEDULE}>사이트관리</Link></h3>
|
||||||
<div className="submenu closed">
|
{/*<div className="submenu closed">
|
||||||
<ul>
|
<ul>
|
||||||
<li><NavLink to={URL.ADMIN_SCHEDULE} className={({ isActive }) => (isActive ? "cur" : "")}>일정관리</NavLink></li>
|
<li><NavLink to={URL.ADMIN_SCHEDULE} className={({ isActive }) => (isActive ? "cur" : "")}>일정관리</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_BOARD} className={({ isActive }) => (isActive ? "cur" : "")}>게시판생성관리</NavLink></li>
|
<li><NavLink to={URL.ADMIN_BOARD} className={({ isActive }) => (isActive ? "cur" : "")}>게시판생성관리</NavLink></li>
|
||||||
|
|
@ -251,7 +251,7 @@ function EgovHeader({ loginUser, onChangeLogin }) {
|
||||||
<li><NavLink to={URL.ADMIN_GALLERY} className={({ isActive }) => (isActive ? "cur" : "")}>사이트갤러리관리</NavLink></li>
|
<li><NavLink to={URL.ADMIN_GALLERY} className={({ isActive }) => (isActive ? "cur" : "")}>사이트갤러리관리</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_MANAGER} className={({ isActive }) => (isActive ? "cur" : "")}>사이트관리자 암호변경</NavLink></li>
|
<li><NavLink to={URL.ADMIN_MANAGER} className={({ isActive }) => (isActive ? "cur" : "")}>사이트관리자 암호변경</NavLink></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>*/}
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
import React from 'react';
|
import React, {useCallback, useEffect, useState} from 'react';
|
||||||
import { useLocation } from 'react-router-dom';
|
import { useLocation } from 'react-router-dom';
|
||||||
import { NavLink } from 'react-router-dom';
|
import { NavLink } from 'react-router-dom';
|
||||||
import URL from 'constants/url';
|
import URL from 'constants/url';
|
||||||
import {Accordion} from "react-bootstrap";
|
import {Accordion} from "react-bootstrap";
|
||||||
|
import * as EgovNet from "../../api/egovFetch";
|
||||||
|
|
||||||
function EgovLeftNavAdmin(props) {
|
function EgovLeftNavAdmin(props) {
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
const [accordion, setAccordion] = useState([]);
|
||||||
|
|
||||||
const getMiddleFolder = (url) => { // 중간 폴더를 가져오는 로직 추가
|
const getMiddleFolder = (url) => { // 중간 폴더를 가져오는 로직 추가
|
||||||
const parts = url.split('/').filter(Boolean); // '/'로 분할하고 빈 문자열을 필터링
|
const parts = url.split('/').filter(Boolean); // '/'로 분할하고 빈 문자열을 필터링
|
||||||
|
|
@ -36,106 +38,66 @@ function EgovLeftNavAdmin(props) {
|
||||||
// activeKey = "7";
|
// activeKey = "7";
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
const getMenuAuth = useCallback(()=>{
|
||||||
|
EgovNet.requestFetch(
|
||||||
|
'/leftNav/menu?menuType=MNU_0000',
|
||||||
|
{
|
||||||
|
method: "GET"
|
||||||
|
},
|
||||||
|
(resp) => {
|
||||||
|
const temp = [];
|
||||||
|
resp.result.menuList.forEach(function (group, i) {
|
||||||
|
temp.push(
|
||||||
|
<Accordion.Item eventKey={i}>
|
||||||
|
<Accordion.Header>{group.menuTitle}</Accordion.Header>
|
||||||
|
<Accordion.Body>
|
||||||
|
<ul className="menu4">
|
||||||
|
{group.childList.map((menu) => {
|
||||||
|
return (
|
||||||
|
<li><NavLink to={menu.menuUrl} className={({ isActive }) => (isActive ? "cur" : "")}>{menu.menuTitle}</NavLink></li>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
</ul>
|
||||||
|
</Accordion.Body>
|
||||||
|
</Accordion.Item>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
setAccordion(temp)
|
||||||
|
},
|
||||||
|
function (resp){
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
getMenuAuth();
|
||||||
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="nav">
|
<div className="nav">
|
||||||
<div className="inner">
|
<div className="inner">
|
||||||
<h2 className={"nav_title"}>사이트관리
|
<h2 className={"nav_title"}>사이트관리
|
||||||
<NavLink to={URL.ADMIN_SCHEDULE} className={({ isActive }) => (isActive ? "cur" : "")}><h6 className={"nav_subtitle"}>Dashboard</h6></NavLink></h2>
|
<NavLink to={URL.ADMIN_SCHEDULE} className={({ isActive }) => (isActive ? "cur" : "")}><h6 className={"nav_subtitle"}>Dashboard</h6></NavLink></h2>
|
||||||
<Accordion defaultActiveKey={activeKey}>
|
<Accordion defaultActiveKey={activeKey}>
|
||||||
{/*<Accordion.Item eventKey={"7"}>*/}
|
{accordion}
|
||||||
{/* <Accordion.Header>사이트 관리</Accordion.Header>*/}
|
{/*{menuList.map((group, i) => {
|
||||||
{/* <Accordion.Body>*/}
|
return (
|
||||||
{/* <ul className="menu4">*/}
|
<Accordion.Item eventKey={i}>
|
||||||
{/* <li><NavLink to={URL.ADMIN_SCHEDULE} className={({ isActive }) => (isActive ? "cur" : "")}>Dashboard</NavLink></li>*/}
|
<Accordion.Header>{group.menuTitle}</Accordion.Header>
|
||||||
{/* /!*<li><NavLink to={URL.ADMIN_BOARD} className={({ isActive }) => (isActive ? "cur" : "")}>게시판생성관리</NavLink></li>*/}
|
|
||||||
{/* <li><NavLink to={URL.ADMIN_USAGE} className={({ isActive }) => (isActive ? "cur" : "")}>게시판사용관리</NavLink></li>*/}
|
|
||||||
{/* <li><NavLink to={URL.ADMIN_NOTICE} className={({ isActive }) => (isActive ? "cur" : "")}>공지사항관리</NavLink></li>*/}
|
|
||||||
{/* <li><NavLink to={URL.ADMIN_GALLERY} className={({ isActive }) => (isActive ? "cur" : "")}>사이트갤러리관리</NavLink></li>*/}
|
|
||||||
{/* <li><NavLink to={URL.ADMIN_MANAGER} className={({ isActive }) => (isActive ? "cur" : "")}>사이트관리자 암호변경</NavLink></li>*!/*/}
|
|
||||||
{/* </ul>*/}
|
|
||||||
{/* </Accordion.Body>*/}
|
|
||||||
{/*</Accordion.Item>*/}
|
|
||||||
<Accordion.Item eventKey={"0"}>
|
|
||||||
<Accordion.Header>환경설정</Accordion.Header>
|
|
||||||
<Accordion.Body>
|
<Accordion.Body>
|
||||||
<ul className="menu4">
|
<ul className="menu4">
|
||||||
<li><NavLink to={URL.ADMIN_BASE_CODE} className={({ isActive }) => (isActive ? "cur" : "")}>기본코드 관리</NavLink></li>
|
{group.childList.map((menu) => {
|
||||||
<li><NavLink to={URL.ADMIN_STANDARD_CODE} className={({ isActive }) => (isActive ? "cur" : "")}>건설기준코드 관리</NavLink></li>
|
return (
|
||||||
<li><NavLink to={URL.ADMIN_COMMITTEE_CODE} className={({ isActive }) => (isActive ? "cur" : "")}>위원회코드 관리</NavLink></li>
|
<li><NavLink to={menu.menuUrl} className={({ isActive }) => (isActive ? "cur" : "")}>{menu.menuTitle}</NavLink></li>
|
||||||
<li><NavLink to={URL.ADMIN_MENU} className={({ isActive }) => (isActive ? "cur" : "")}>메뉴 관리</NavLink></li>
|
)
|
||||||
<li><NavLink to={URL.ADMIN_MENU_AUTH} className={({ isActive }) => (isActive ? "cur" : "")}>메뉴권한 관리</NavLink></li>
|
})}
|
||||||
<li><NavLink to={URL.ADMIN_ABOUT_SITE} className={({ isActive }) => (isActive ? "cur" : "")}>관련사이트 관리</NavLink></li>
|
|
||||||
</ul>
|
|
||||||
</Accordion.Body>
|
|
||||||
</Accordion.Item>
|
|
||||||
|
|
||||||
<Accordion.Item eventKey={"1"}>
|
|
||||||
<Accordion.Header>사용자 관리</Accordion.Header>
|
|
||||||
<Accordion.Body>
|
|
||||||
<ul className="menu4">
|
|
||||||
<li><NavLink to={URL.ADMIN__USERS__LIST} className={({ isActive }) => (isActive ? "cur" : "")}>사용자 목록</NavLink></li>
|
|
||||||
</ul>
|
|
||||||
</Accordion.Body>
|
|
||||||
</Accordion.Item>
|
|
||||||
|
|
||||||
<Accordion.Item eventKey={"2"}>
|
|
||||||
<Accordion.Header>게시판현황</Accordion.Header>
|
|
||||||
<Accordion.Body>
|
|
||||||
<ul className="menu4">
|
|
||||||
<li><NavLink to={URL.ADMIN__BOARDS__LIST} className={({ isActive }) => (isActive ? "cur" : "")}>게시판 관리</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__BOARDS__POSTS} className={({ isActive }) => (isActive ? "cur" : "")}>게시물 관리</NavLink></li>
|
|
||||||
{/*<li><NavLink to={URL.ADMIN__BOARDS__KEYWORDS} className={({ isActive }) => (isActive ? "cur" : "")}>키워드 관리</NavLink></li>*/}
|
|
||||||
</ul>
|
|
||||||
</Accordion.Body>
|
|
||||||
</Accordion.Item>
|
|
||||||
|
|
||||||
<Accordion.Item eventKey={"3"}>
|
|
||||||
<Accordion.Header>건설기준관리</Accordion.Header>
|
|
||||||
<Accordion.Body>
|
|
||||||
<ul className="menu4">
|
|
||||||
{/*<li><NavLink to={URL.ADMIN__STANDARDS__REFERENCE_CODES} className={({ isActive }) => (isActive ? "cur" : "")}>참조코드 관리</NavLink></li>*/}
|
|
||||||
<li><NavLink to={URL.ADMIN__STANDARDS__API_KYES} className={({ isActive }) => (isActive ? "cur" : "")}>API KEY 관리</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__STANDARDS__SIMILARITY_CHECK} className={({ isActive }) => (isActive ? "cur" : "")}>유사성 검사</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__STANDARDS__INFO_DISCLOSURE} className={({ isActive }) => (isActive ? "cur" : "")}>건설기준 내용 관리</NavLink></li>
|
|
||||||
</ul>
|
|
||||||
</Accordion.Body>
|
|
||||||
</Accordion.Item>
|
|
||||||
|
|
||||||
<Accordion.Item eventKey={"4"}>
|
|
||||||
<Accordion.Header>컨텐츠관리</Accordion.Header>
|
|
||||||
<Accordion.Body>
|
|
||||||
<ul className="menu4">
|
|
||||||
<li><NavLink to={URL.ADMIN__CONTENTS__SURVEY} className={({ isActive }) => (isActive ? "cur" : "")}>설문 관리</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__CONTENTS__POP_UP} className={({ isActive }) => (isActive ? "cur" : "")}>팝업 관리</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__CONTENTS__STANDARDS_RESEARCH} className={({ isActive }) => (isActive ? "cur" : "")}>건설기준연구 관리</NavLink></li>
|
|
||||||
{/*<li><NavLink to={URL.ADMIN__CONTENTS__TEXT_MESSAGES} className={({ isActive }) => (isActive ? "cur" : "")}>문자 발송</NavLink></li>*/}
|
|
||||||
</ul>
|
|
||||||
</Accordion.Body>
|
|
||||||
</Accordion.Item>
|
|
||||||
|
|
||||||
<Accordion.Item eventKey={"5"}>
|
|
||||||
<Accordion.Header>위원회관리</Accordion.Header>
|
|
||||||
<Accordion.Body>
|
|
||||||
<ul className="menu4">
|
|
||||||
<li><NavLink to={URL.ADMIN__COMMITTEE__PROGRESS_STATUS} className={({ isActive }) => (isActive ? "cur" : "")}>진행현황 관리</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__COMMITTEE__SCHEDULES} className={({ isActive }) => (isActive ? "cur" : "")}>위원회 일정 관리</NavLink></li>
|
|
||||||
</ul>
|
|
||||||
</Accordion.Body>
|
|
||||||
</Accordion.Item>
|
|
||||||
|
|
||||||
<Accordion.Item eventKey={"6"}>
|
|
||||||
<Accordion.Header>로그현황</Accordion.Header>
|
|
||||||
<Accordion.Body>
|
|
||||||
<ul className="menu4">
|
|
||||||
<li><NavLink to={URL.ADMIN__LOGS__MENU_ACCESS_INFO} className={({ isActive }) => (isActive ? "cur" : "")}>메뉴별 접속 현황</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__LOGS__USER_CONNECTIONS} className={({ isActive }) => (isActive ? "cur" : "")}>사용자 접속 현황</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__LOGS__PRIVACY_LOGS} className={({ isActive }) => (isActive ? "cur" : "")}>개인정보 로그 현황</NavLink></li>
|
|
||||||
<li><NavLink to={URL.ADMIN__LOGS__FILE_DOWNLOAD_STATUS} className={({ isActive }) => (isActive ? "cur" : "")}>파일 다운 현황</NavLink></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</Accordion.Body>
|
</Accordion.Body>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
|
)
|
||||||
|
})}*/}
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,10 @@ function MenuAuthMgt(props) {
|
||||||
if(checked) {
|
if(checked) {
|
||||||
item.menuAuth += ","+role.itemCd
|
item.menuAuth += ","+role.itemCd
|
||||||
}else{
|
}else{
|
||||||
item.menuAuth = item.menuAuth.replace(","+role.itemCd, '');
|
item.menuAuth = item.menuAuth.replace(role.itemCd, '');
|
||||||
|
if(item.menuAuth.startsWith(",")) {
|
||||||
|
item.menuAuth.replace(",", "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
defaultChecked={item.menuAuth.includes(role.itemCd)}/>
|
defaultChecked={item.menuAuth.includes(role.itemCd)}/>
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
|
@ -53,9 +54,18 @@ public class TcMenu {
|
||||||
@Column(name = "use_yn")
|
@Column(name = "use_yn")
|
||||||
private String useYn;
|
private String useYn;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private String groupTitle;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private String menuTypeValue;
|
private String menuTypeValue;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private String menuAuth;
|
private String menuAuth;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<String> roleList;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<TcMenu> childList;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,6 @@ public interface TcMenuMapper {
|
||||||
List<TcMenu> selectMenuList();
|
List<TcMenu> selectMenuList();
|
||||||
|
|
||||||
List<TcMenu> selectMenuAuthList();
|
List<TcMenu> selectMenuAuthList();
|
||||||
|
|
||||||
|
List<TcMenu> selectMenuListToRole(TcMenu params);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -162,6 +162,14 @@ public class AdminConfigService extends EgovAbstractServiceImpl {
|
||||||
return menuMapper.selectMenuAuthList();
|
return menuMapper.selectMenuAuthList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<TcMenu> selectMenuListToRole(String menuTypeCd, List<String> roleList){
|
||||||
|
TcMenu params = new TcMenu();
|
||||||
|
params.setMenuTypeCd(menuTypeCd);
|
||||||
|
params.setRoleList(roleList);
|
||||||
|
return menuMapper.selectMenuListToRole(params);
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void editMenuAuth(TcMenu menu) {
|
public void editMenuAuth(TcMenu menu) {
|
||||||
String[] roleAry = menu.getMenuAuth().split(",");
|
String[] roleAry = menu.getMenuAuth().split(",");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.dbnt.kcscbackend.admin.leftNav;
|
||||||
|
|
||||||
|
|
||||||
|
import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
|
||||||
|
import com.dbnt.kcscbackend.admin.config.service.AdminConfigService;
|
||||||
|
import com.dbnt.kcscbackend.auth.entity.LoginVO;
|
||||||
|
import com.dbnt.kcscbackend.config.common.ResultVO;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RequestMapping("/leftNav")
|
||||||
|
@Tag(name="LeftNavController", description = "leftNav 컨트롤러")
|
||||||
|
public class LeftNavController {
|
||||||
|
|
||||||
|
private final AdminConfigService adminConfigService;
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.GET, value = "/menu")
|
||||||
|
public ResultVO getMenu(
|
||||||
|
@AuthenticationPrincipal LoginVO user,
|
||||||
|
@RequestParam(value="menuType", required = true) String menuTypeCd
|
||||||
|
){
|
||||||
|
ResultVO resultVO = new ResultVO();
|
||||||
|
List<TcMenu> menuList = adminConfigService.selectMenuListToRole(menuTypeCd, Arrays.asList(user.getUserRole().split(",")));
|
||||||
|
Map<String, String> groupMap = new LinkedHashMap<>();
|
||||||
|
for(TcMenu menu: menuList){
|
||||||
|
groupMap.put(menu.getMenuGroup(), menu.getGroupTitle());
|
||||||
|
}
|
||||||
|
List<TcMenu> groupList = new ArrayList<>();
|
||||||
|
for(Map.Entry<String, String> group: groupMap.entrySet()){
|
||||||
|
TcMenu temp = new TcMenu();
|
||||||
|
temp.setMenuId(group.getKey());
|
||||||
|
temp.setMenuTitle(group.getValue());
|
||||||
|
groupList.add(temp);
|
||||||
|
}
|
||||||
|
for(TcMenu group: groupList){
|
||||||
|
for(TcMenu menu: menuList){
|
||||||
|
if(group.getMenuId().equals(menu.getMenuGroup())){
|
||||||
|
if(group.getChildList()==null){
|
||||||
|
group.setChildList(new ArrayList<>());
|
||||||
|
}
|
||||||
|
group.getChildList().add(menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
|
resultMap.put("menuList", groupList);
|
||||||
|
resultVO.setResult(resultMap);
|
||||||
|
return resultVO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -61,6 +61,9 @@ public class LoginVO implements Serializable{
|
||||||
@Schema(description = "사용자 구분", allowableValues = {"ACC_TP01", "ACC_TP02"}, defaultValue = "ACC_TP02")
|
@Schema(description = "사용자 구분", allowableValues = {"ACC_TP01", "ACC_TP02"}, defaultValue = "ACC_TP02")
|
||||||
private String userSe;
|
private String userSe;
|
||||||
|
|
||||||
|
@Schema(description = "사용자 ROLE")
|
||||||
|
private String userRole;
|
||||||
|
|
||||||
@Schema(description = "이름")
|
@Schema(description = "이름")
|
||||||
@NotBlank(message = "이름을 입력해주세요.")
|
@NotBlank(message = "이름을 입력해주세요.")
|
||||||
private String userNm;
|
private String userNm;
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,10 @@ public class EgovJwtTokenUtil implements Serializable{
|
||||||
Claims claims = getClaimFromToken(token);
|
Claims claims = getClaimFromToken(token);
|
||||||
return claims.get("userSe").toString();
|
return claims.get("userSe").toString();
|
||||||
}
|
}
|
||||||
|
public String getUserRoleFromToken(String token) {
|
||||||
|
Claims claims = getClaimFromToken(token);
|
||||||
|
return claims.get("userRole").toString();
|
||||||
|
}
|
||||||
public String getInfoFromToken(String type, String token) {
|
public String getInfoFromToken(String type, String token) {
|
||||||
Claims claims = getClaimFromToken(token);
|
Claims claims = getClaimFromToken(token);
|
||||||
return claims.get(type).toString();
|
return claims.get(type).toString();
|
||||||
|
|
@ -97,6 +101,7 @@ public class EgovJwtTokenUtil implements Serializable{
|
||||||
claims.put("id", loginVO.getUserId());
|
claims.put("id", loginVO.getUserId());
|
||||||
claims.put("remoteAddr", remoteAddr);
|
claims.put("remoteAddr", remoteAddr);
|
||||||
claims.put("userSe", loginVO.getUserSe());
|
claims.put("userSe", loginVO.getUserSe());
|
||||||
|
claims.put("userRole", loginVO.getUserRole());
|
||||||
claims.put("type", "Authorization");
|
claims.put("type", "Authorization");
|
||||||
|
|
||||||
log.debug("===>>> secret = "+SECRET_KEY);
|
log.debug("===>>> secret = "+SECRET_KEY);
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||||
loginVO.setUserSeq(Integer.parseInt(jwtTokenUtil.getUserSeqFromToken(jwtToken)));
|
loginVO.setUserSeq(Integer.parseInt(jwtTokenUtil.getUserSeqFromToken(jwtToken)));
|
||||||
loginVO.setId(id);
|
loginVO.setId(id);
|
||||||
loginVO.setUserSe(jwtTokenUtil.getUserSeFromToken(jwtToken));
|
loginVO.setUserSe(jwtTokenUtil.getUserSeFromToken(jwtToken));
|
||||||
|
loginVO.setUserRole(jwtTokenUtil.getUserRoleFromToken(jwtToken));
|
||||||
// loginVO.setUniqId( jwtTokenUtil.getInfoFromToken("uniqId",jwtToken) );
|
// loginVO.setUniqId( jwtTokenUtil.getInfoFromToken("uniqId",jwtToken) );
|
||||||
// loginVO.setOrgnztId( jwtTokenUtil.getInfoFromToken("orgnztId",jwtToken) );
|
// loginVO.setOrgnztId( jwtTokenUtil.getInfoFromToken("orgnztId",jwtToken) );
|
||||||
// loginVO.setName( jwtTokenUtil.getInfoFromToken("name",jwtToken) );
|
// loginVO.setName( jwtTokenUtil.getInfoFromToken("name",jwtToken) );
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@
|
||||||
select a.menu_id ,
|
select a.menu_id ,
|
||||||
a.menu_title ,
|
a.menu_title ,
|
||||||
a.menu_group ,
|
a.menu_group ,
|
||||||
|
a.menu_url,
|
||||||
coalesce(b.role_cd, '') as menu_auth
|
coalesce(b.role_cd, '') as menu_auth
|
||||||
from tc_menu a
|
from tc_menu a
|
||||||
left outer join (
|
left outer join (
|
||||||
|
|
@ -38,4 +39,27 @@
|
||||||
where a.use_yn = 'Y'
|
where a.use_yn = 'Y'
|
||||||
order by a.menu_id asc
|
order by a.menu_id asc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectMenuListToRole" resultType="TcMenu" parameterType="TcMenu">
|
||||||
|
select a.menu_id ,
|
||||||
|
a.menu_title ,
|
||||||
|
a.menu_group ,
|
||||||
|
a.menu_url,
|
||||||
|
c.menu_title as group_title,
|
||||||
|
coalesce(b.role_cd, '') as menu_auth
|
||||||
|
from tc_menu a
|
||||||
|
inner join (
|
||||||
|
select menu_id , string_agg(role_id, ',') as role_cd
|
||||||
|
from tb_menu_role
|
||||||
|
where role_id in
|
||||||
|
<foreach collection="roleList" item="role" separator="," open="(" close=")">
|
||||||
|
#{role}
|
||||||
|
</foreach>
|
||||||
|
group by menu_id
|
||||||
|
) b on a.menu_id = b.menu_id
|
||||||
|
inner join tc_menu c on a.menu_group = c.menu_id
|
||||||
|
where a.use_yn = 'Y'
|
||||||
|
and a.menu_type_cd = #{menuTypeCd}
|
||||||
|
order by a.menu_id asc
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue