사용자별 메뉴 표현 작업중.
parent
34e7764240
commit
60a4a7d86d
|
|
@ -5,11 +5,14 @@ import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import javax.persistence.Transient;
|
import javax.persistence.Transient;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class BaseModel {
|
public class BaseModel {
|
||||||
|
@Transient
|
||||||
|
private List<String> organCdList;
|
||||||
@Transient
|
@Transient
|
||||||
private Integer pageIndex=1; //요청페이지
|
private Integer pageIndex=1; //요청페이지
|
||||||
@Transient
|
@Transient
|
||||||
|
|
|
||||||
|
|
@ -65,11 +65,13 @@ public class SecurityConfig{
|
||||||
).hasRole(Role.USER.name()) // USER, ADMIN 접근 허용
|
).hasRole(Role.USER.name()) // USER, ADMIN 접근 허용
|
||||||
.antMatchers(
|
.antMatchers(
|
||||||
"/codeMgt/**",
|
"/codeMgt/**",
|
||||||
"/menuMgt/**",
|
"/menuMgt/**"
|
||||||
|
).hasRole(Role.ADMIN.name()) // ADMIN만 접근 허용
|
||||||
|
.antMatchers(
|
||||||
"/authMgt/**",
|
"/authMgt/**",
|
||||||
"/userMgt/**",
|
"/userMgt/**",
|
||||||
"/organMgt/**"
|
"/organMgt/**"
|
||||||
).hasRole(Role.ADMIN.name()) // ADMIN만 접근 허용
|
).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN만 접근 허용
|
||||||
.antMatchers("/login").permitAll() // 로그인 페이지는 권한 없이 접근 허용
|
.antMatchers("/login").permitAll() // 로그인 페이지는 권한 없이 접근 허용
|
||||||
.and() // 로그인 설정
|
.and() // 로그인 설정
|
||||||
.formLogin() .loginPage("/login") // Custom login form 사용
|
.formLogin() .loginPage("/login") // Custom login form 사용
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
package com.dbnt.faisp.controller;
|
package com.dbnt.faisp.controller;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.authMgt.AuthMgtService;
|
||||||
|
import com.dbnt.faisp.menuMgt.MenuMgtService;
|
||||||
|
import com.dbnt.faisp.menuMgt.model.MenuMgt;
|
||||||
|
import com.dbnt.faisp.organMgt.OrganConfigService;
|
||||||
import com.dbnt.faisp.userInfo.model.UserInfo;
|
import com.dbnt.faisp.userInfo.model.UserInfo;
|
||||||
import com.dbnt.faisp.codeMgt.CodeMgtService;
|
import com.dbnt.faisp.codeMgt.CodeMgtService;
|
||||||
import com.dbnt.faisp.codeMgt.model.CodeCatg;
|
import com.dbnt.faisp.codeMgt.model.CodeCatg;
|
||||||
|
|
@ -11,6 +15,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
@ -20,6 +25,8 @@ import javax.servlet.http.HttpSession;
|
||||||
public class BaseController {
|
public class BaseController {
|
||||||
|
|
||||||
private final CodeMgtService codeMgtService;
|
private final CodeMgtService codeMgtService;
|
||||||
|
private final OrganConfigService organConfigService;
|
||||||
|
private final MenuMgtService menuMgtService;
|
||||||
|
|
||||||
@GetMapping("/")
|
@GetMapping("/")
|
||||||
public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser, HttpSession session) {
|
public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser, HttpSession session) {
|
||||||
|
|
@ -27,7 +34,11 @@ public class BaseController {
|
||||||
if(loginUser == null){
|
if(loginUser == null){
|
||||||
mav = new ModelAndView("redirect:/login");
|
mav = new ModelAndView("redirect:/login");
|
||||||
}else{
|
}else{
|
||||||
session.setAttribute("commonCodeList", codeMgtService.selectCommonCodeList());
|
loginUser.setOrganCdList(organConfigService.selectOrganListWhereUserOgCd(loginUser.getOgCd()));
|
||||||
|
List<MenuMgt> accessMenuList = menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq());
|
||||||
|
List<CodeMgt> commonCodeList = codeMgtService.selectCommonCodeList();
|
||||||
|
session.setAttribute("menuList", menuList);
|
||||||
|
session.setAttribute("commonCodeList", commonCodeList);
|
||||||
mav = new ModelAndView("redirect:/dashboard");
|
mav = new ModelAndView("redirect:/dashboard");
|
||||||
}
|
}
|
||||||
return mav;
|
return mav;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.dbnt.faisp.menuMgt;
|
package com.dbnt.faisp.menuMgt;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.authMgt.model.AccessConfig;
|
||||||
import com.dbnt.faisp.menuMgt.mapper.MenuMgtMapper;
|
import com.dbnt.faisp.menuMgt.mapper.MenuMgtMapper;
|
||||||
import com.dbnt.faisp.menuMgt.model.MenuMgt;
|
import com.dbnt.faisp.menuMgt.model.MenuMgt;
|
||||||
import com.dbnt.faisp.menuMgt.repository.MenuMgtRepository;
|
import com.dbnt.faisp.menuMgt.repository.MenuMgtRepository;
|
||||||
|
|
@ -7,6 +8,7 @@ import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.persistence.Transient;
|
import javax.persistence.Transient;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -82,4 +84,28 @@ public class MenuMgtService {
|
||||||
}
|
}
|
||||||
return menuList;
|
return menuList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<MenuMgt> selectAccessMenuListWhereUserSeq(Integer userSeq) {
|
||||||
|
List<MenuMgt> accessMenuList =menuMgtMapper.selectAccessMenuListWhereUserSeq(userSeq);
|
||||||
|
List<MenuMgt> menuList = new ArrayList<>();
|
||||||
|
for(MenuMgt menuMgt: accessMenuList){
|
||||||
|
boolean savedFlag = false;
|
||||||
|
for(MenuMgt savedMenu: menuList){
|
||||||
|
if(savedChk(menuMgt.getCat1Cd(), savedMenu.getCat1Cd())){
|
||||||
|
savedFlag = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!savedFlag){
|
||||||
|
|
||||||
|
MenuMgt topMenu = new MenuMgt();
|
||||||
|
menuList.add(topMenu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return menuList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean savedChk(String catCd1, String catCd2){
|
||||||
|
return catCd1.equals(catCd2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,6 @@ public interface MenuMgtMapper {
|
||||||
List<MenuMgt> selectMenuMgtList(MenuMgt menuMgt);
|
List<MenuMgt> selectMenuMgtList(MenuMgt menuMgt);
|
||||||
|
|
||||||
Integer selectMenuMgtListCnt(MenuMgt menuMgt);
|
Integer selectMenuMgtListCnt(MenuMgt menuMgt);
|
||||||
|
|
||||||
|
List<MenuMgt> selectAccessMenuListWhereUserSeq(Integer userSeq);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import org.hibernate.annotations.DynamicInsert;
|
||||||
import org.hibernate.annotations.DynamicUpdate;
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
|
@ -32,6 +33,13 @@ public class MenuMgt extends BaseModel {
|
||||||
@Column(name = "approval_chk")
|
@Column(name = "approval_chk")
|
||||||
private String approvalChk;
|
private String approvalChk;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private String menuCd;
|
||||||
|
@Transient
|
||||||
|
private String menuNm;
|
||||||
|
@Transient
|
||||||
|
private List<MenuMgt> childList;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private Integer cat1RowspanCnt;
|
private Integer cat1RowspanCnt;
|
||||||
@Transient
|
@Transient
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.dbnt.faisp.organMgt;
|
package com.dbnt.faisp.organMgt;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.organMgt.mapper.OrganConfigMapper;
|
||||||
import com.dbnt.faisp.organMgt.model.OrganConfig;
|
import com.dbnt.faisp.organMgt.model.OrganConfig;
|
||||||
import com.dbnt.faisp.organMgt.repository.OrganConfigRepository;
|
import com.dbnt.faisp.organMgt.repository.OrganConfigRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class OrganConfigService {
|
public class OrganConfigService {
|
||||||
private final OrganConfigRepository organConfigRepository;
|
private final OrganConfigRepository organConfigRepository;
|
||||||
|
private final OrganConfigMapper organConfigMapper;
|
||||||
|
|
||||||
public List<OrganConfig> selectSavedOrganList() {
|
public List<OrganConfig> selectSavedOrganList() {
|
||||||
return organConfigRepository.findAll();
|
return organConfigRepository.findAll();
|
||||||
|
|
@ -21,4 +23,8 @@ public class OrganConfigService {
|
||||||
organConfigRepository.deleteByOrganType("OGC002");
|
organConfigRepository.deleteByOrganType("OGC002");
|
||||||
return organConfigRepository.saveAll(organConfigList).size();
|
return organConfigRepository.saveAll(organConfigList).size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> selectOrganListWhereUserOgCd(String ogCd) {
|
||||||
|
return organConfigMapper.selectOrganListWhereUserOgCd(ogCd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.dbnt.faisp.organMgt.mapper;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.menuMgt.model.MenuMgt;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface OrganConfigMapper {
|
||||||
|
List<String> selectOrganListWhereUserOgCd(String ogCd);
|
||||||
|
}
|
||||||
|
|
@ -94,12 +94,12 @@ public class UserInfo extends BaseModel implements UserDetails{
|
||||||
return userStatus.equals("USC003");
|
return userStatus.equals("USC003");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "UserInfo [userSeq=" + userSeq + ", userId=" + userId + ", password=" + password + ", userNm=" + userNm
|
return "UserInfo [userSeq=" + userSeq + ", userId=" + userId + ", password=" + password + ", userNm=" + userNm
|
||||||
+ ", ogCd=" + ogCd + ", ofcCd=" + ofcCd + ", userRole=" + userRole + ", userStatus=" + userStatus
|
+ ", ogCd=" + ogCd + ", ofcCd=" + ofcCd + ", userRole=" + userRole + ", userStatus=" + userStatus
|
||||||
+ ", wrtDt=" + wrtDt + ", modifyPassword=" + modifyPassword + ", positionName=" + positionName
|
+ ", wrtDt=" + wrtDt + ", modifyPassword=" + modifyPassword + ", positionName=" + positionName
|
||||||
+ ", departmentName=" + departmentName + ", accessConfigList=" + accessConfigList + ", approvalConfigList="
|
+ ", departmentName=" + departmentName + ", accessConfigList=" + accessConfigList + ", approvalConfigList="
|
||||||
+ approvalConfigList + "]";
|
+ approvalConfigList + "]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
from menu_mgt a
|
from menu_mgt a
|
||||||
left outer join access_config b
|
left outer join access_config b
|
||||||
on a.menu_key = b.menu_key and b.user_seq = #{userSeq}
|
on a.menu_key = b.menu_key and b.user_seq = #{userSeq}
|
||||||
|
order by cat1_cd, cat2_cd, cat3_cd
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectApprovalConfigList" resultType="ApprovalConfig" parameterType="UserInfo">
|
<select id="selectApprovalConfigList" resultType="ApprovalConfig" parameterType="UserInfo">
|
||||||
|
|
@ -25,5 +26,6 @@
|
||||||
left outer join approval_config b
|
left outer join approval_config b
|
||||||
on a.menu_key = b.menu_key and b.user_seq = #{userSeq}
|
on a.menu_key = b.menu_key and b.user_seq = #{userSeq}
|
||||||
where a.approval_chk = 'T'
|
where a.approval_chk = 'T'
|
||||||
|
order by cat1_cd, cat2_cd, cat3_cd
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
|
||||||
|
<mapper namespace="com.dbnt.faisp.organMgt.mapper.OrganConfigMapper">
|
||||||
|
<select id="selectOrganListWhereUserOgCd" resultType="string" parameterType="string">
|
||||||
|
with recursive organ_list (
|
||||||
|
organ_cd
|
||||||
|
) as(
|
||||||
|
select
|
||||||
|
organ_cd
|
||||||
|
from organ_config
|
||||||
|
where organ_cd = #{ogCd}
|
||||||
|
union all
|
||||||
|
select
|
||||||
|
a.organ_cd
|
||||||
|
from organ_config a
|
||||||
|
inner join organ_list b on a.parent_organ = b.organ_cd
|
||||||
|
)
|
||||||
|
select * from organ_list
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
|
|
@ -47,4 +47,16 @@
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectAccessMenuListWhereUserSeq" resultType="MenuMgt" parameterType="int">
|
||||||
|
select ab.cat1_cd,
|
||||||
|
ab.cat2_cd,
|
||||||
|
ab.cat3_cd,
|
||||||
|
ab.menu_url
|
||||||
|
from access_config aa
|
||||||
|
inner join menu_mgt ab on aa.menu_key = ab.menu_key
|
||||||
|
where aa.user_seq = #{userSeq}
|
||||||
|
and aa.access_auth is not null
|
||||||
|
order by cat1_cd, cat2_cd, cat3_cd
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="menuUrl" class="col-sm-4 col-form-label col-form-label-sm text-center">결제기능</label>
|
<label for="menuUrl" class="col-sm-4 col-form-label col-form-label-sm text-center">결재권한설정</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="checkbox" id="approvalChk" name="approvalChk" value="T" th:checked="${menuMgt.approvalChk eq 'T'}">
|
<input type="checkbox" id="approvalChk" name="approvalChk" value="T" th:checked="${menuMgt.approvalChk eq 'T'}">
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -10,20 +10,18 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<ul class="nav nav-pills" sec:authorize="hasRole('ROLE_ADMIN')">
|
<ul class="nav nav-pills">
|
||||||
|
<th:block sec:authorize="hasRole('ROLE_ADMIN')">
|
||||||
<li class="nav-item"><a href="/codeMgt/codeMgtPage" class="nav-link p-1 link-dark">코드관리</a></li>
|
<li class="nav-item"><a href="/codeMgt/codeMgtPage" class="nav-link p-1 link-dark">코드관리</a></li>
|
||||||
<li class="nav-item"><a href="/organMgt/organMgtPage" class="nav-link p-1 link-dark">관서설정</a></li>
|
<li class="nav-item"><a href="/organMgt/organMgtPage" class="nav-link p-1 link-dark">관서설정</a></li>
|
||||||
<li class="nav-item"><a href="/menuMgt/menuMgtPage" class="nav-link p-1 link-dark">메뉴관리</a></li>
|
<li class="nav-item"><a href="/menuMgt/menuMgtPage" class="nav-link p-1 link-dark">메뉴관리</a></li>
|
||||||
|
</th:block>
|
||||||
|
<th:block sec:authorize="hasRole('ROLE_SUB_ADMIN')">
|
||||||
<li class="nav-item"><a href="/userMgt/userMgtPage" class="nav-link p-1 link-dark">외사경찰관리</a></li>
|
<li class="nav-item"><a href="/userMgt/userMgtPage" class="nav-link p-1 link-dark">외사경찰관리</a></li>
|
||||||
<li class="nav-item"><a href="/authMgt/authMgtPage" class="nav-link p-1 link-dark">권한설정</a></li>
|
<li class="nav-item"><a href="/authMgt/authMgtPage" class="nav-link p-1 link-dark">권한설정</a></li>
|
||||||
<li class="nav-item"><a href="#" class="nav-link p-1 link-dark">사용자로그</a></li>
|
<li class="nav-item"><a href="#" class="nav-link p-1 link-dark">사용자로그</a></li>
|
||||||
<li class="nav-item"><a href="#" class="nav-link p-1 link-dark">접속설정</a></li>
|
<li class="nav-item"><a href="#" class="nav-link p-1 link-dark">접속설정</a></li>
|
||||||
</ul>
|
</th:block>
|
||||||
<ul class="nav nav-pills" sec:authorize="hasRole('ROLE_SUB_ADMIN')">
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link p-1 link-dark">외사경찰관리</a></li>
|
|
||||||
<li class="nav-item"><a href="/authMgt/authMgtPage" class="nav-link p-1 link-dark">권한설정</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link p-1 link-dark">사용자로그</a></li>
|
|
||||||
<li class="nav-item"><a href="#" class="nav-link p-1 link-dark">접속설정</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div sec:authorize="isAuthenticated()">
|
<div sec:authorize="isAuthenticated()">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue