사용자별 메뉴 표현 작업중.
parent
34e7764240
commit
60a4a7d86d
|
|
@ -5,11 +5,14 @@ import lombok.NoArgsConstructor;
|
|||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.Transient;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class BaseModel {
|
||||
@Transient
|
||||
private List<String> organCdList;
|
||||
@Transient
|
||||
private Integer pageIndex=1; //요청페이지
|
||||
@Transient
|
||||
|
|
|
|||
|
|
@ -65,11 +65,13 @@ public class SecurityConfig{
|
|||
).hasRole(Role.USER.name()) // USER, ADMIN 접근 허용
|
||||
.antMatchers(
|
||||
"/codeMgt/**",
|
||||
"/menuMgt/**",
|
||||
"/menuMgt/**"
|
||||
).hasRole(Role.ADMIN.name()) // ADMIN만 접근 허용
|
||||
.antMatchers(
|
||||
"/authMgt/**",
|
||||
"/userMgt/**",
|
||||
"/organMgt/**"
|
||||
).hasRole(Role.ADMIN.name()) // ADMIN만 접근 허용
|
||||
).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN만 접근 허용
|
||||
.antMatchers("/login").permitAll() // 로그인 페이지는 권한 없이 접근 허용
|
||||
.and() // 로그인 설정
|
||||
.formLogin() .loginPage("/login") // Custom login form 사용
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
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.codeMgt.CodeMgtService;
|
||||
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.servlet.ModelAndView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
|
@ -20,6 +25,8 @@ import javax.servlet.http.HttpSession;
|
|||
public class BaseController {
|
||||
|
||||
private final CodeMgtService codeMgtService;
|
||||
private final OrganConfigService organConfigService;
|
||||
private final MenuMgtService menuMgtService;
|
||||
|
||||
@GetMapping("/")
|
||||
public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser, HttpSession session) {
|
||||
|
|
@ -27,7 +34,11 @@ public class BaseController {
|
|||
if(loginUser == null){
|
||||
mav = new ModelAndView("redirect:/login");
|
||||
}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");
|
||||
}
|
||||
return mav;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.dbnt.faisp.menuMgt;
|
||||
|
||||
import com.dbnt.faisp.authMgt.model.AccessConfig;
|
||||
import com.dbnt.faisp.menuMgt.mapper.MenuMgtMapper;
|
||||
import com.dbnt.faisp.menuMgt.model.MenuMgt;
|
||||
import com.dbnt.faisp.menuMgt.repository.MenuMgtRepository;
|
||||
|
|
@ -7,6 +8,7 @@ import lombok.RequiredArgsConstructor;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.persistence.Transient;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
|
|
@ -82,4 +84,28 @@ public class MenuMgtService {
|
|||
}
|
||||
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);
|
||||
|
||||
Integer selectMenuMgtListCnt(MenuMgt menuMgt);
|
||||
|
||||
List<MenuMgt> selectAccessMenuListWhereUserSeq(Integer userSeq);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import org.hibernate.annotations.DynamicInsert;
|
|||
import org.hibernate.annotations.DynamicUpdate;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
@ -32,6 +33,13 @@ public class MenuMgt extends BaseModel {
|
|||
@Column(name = "approval_chk")
|
||||
private String approvalChk;
|
||||
|
||||
@Transient
|
||||
private String menuCd;
|
||||
@Transient
|
||||
private String menuNm;
|
||||
@Transient
|
||||
private List<MenuMgt> childList;
|
||||
|
||||
@Transient
|
||||
private Integer cat1RowspanCnt;
|
||||
@Transient
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.dbnt.faisp.organMgt;
|
||||
|
||||
import com.dbnt.faisp.organMgt.mapper.OrganConfigMapper;
|
||||
import com.dbnt.faisp.organMgt.model.OrganConfig;
|
||||
import com.dbnt.faisp.organMgt.repository.OrganConfigRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -11,6 +12,7 @@ import java.util.List;
|
|||
@RequiredArgsConstructor
|
||||
public class OrganConfigService {
|
||||
private final OrganConfigRepository organConfigRepository;
|
||||
private final OrganConfigMapper organConfigMapper;
|
||||
|
||||
public List<OrganConfig> selectSavedOrganList() {
|
||||
return organConfigRepository.findAll();
|
||||
|
|
@ -21,4 +23,8 @@ public class OrganConfigService {
|
|||
organConfigRepository.deleteByOrganType("OGC002");
|
||||
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);
|
||||
}
|
||||
|
|
@ -62,11 +62,11 @@ public class UserInfo extends BaseModel implements UserDetails{
|
|||
|
||||
@Override
|
||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||
Set<GrantedAuthority> roles = new HashSet<>();
|
||||
for (String role : userRole.split(",")) {
|
||||
roles.add(new SimpleGrantedAuthority(role));
|
||||
}
|
||||
return roles;
|
||||
Set<GrantedAuthority> roles = new HashSet<>();
|
||||
for (String role : userRole.split(",")) {
|
||||
roles.add(new SimpleGrantedAuthority(role));
|
||||
}
|
||||
return roles;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -94,12 +94,12 @@ public class UserInfo extends BaseModel implements UserDetails{
|
|||
return userStatus.equals("USC003");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UserInfo [userSeq=" + userSeq + ", userId=" + userId + ", password=" + password + ", userNm=" + userNm
|
||||
+ ", ogCd=" + ogCd + ", ofcCd=" + ofcCd + ", userRole=" + userRole + ", userStatus=" + userStatus
|
||||
+ ", wrtDt=" + wrtDt + ", modifyPassword=" + modifyPassword + ", positionName=" + positionName
|
||||
+ ", departmentName=" + departmentName + ", accessConfigList=" + accessConfigList + ", approvalConfigList="
|
||||
+ approvalConfigList + "]";
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UserInfo [userSeq=" + userSeq + ", userId=" + userId + ", password=" + password + ", userNm=" + userNm
|
||||
+ ", ogCd=" + ogCd + ", ofcCd=" + ofcCd + ", userRole=" + userRole + ", userStatus=" + userStatus
|
||||
+ ", wrtDt=" + wrtDt + ", modifyPassword=" + modifyPassword + ", positionName=" + positionName
|
||||
+ ", departmentName=" + departmentName + ", accessConfigList=" + accessConfigList + ", approvalConfigList="
|
||||
+ approvalConfigList + "]";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
from menu_mgt a
|
||||
left outer join access_config b
|
||||
on a.menu_key = b.menu_key and b.user_seq = #{userSeq}
|
||||
order by cat1_cd, cat2_cd, cat3_cd
|
||||
</select>
|
||||
|
||||
<select id="selectApprovalConfigList" resultType="ApprovalConfig" parameterType="UserInfo">
|
||||
|
|
@ -25,5 +26,6 @@
|
|||
left outer join approval_config b
|
||||
on a.menu_key = b.menu_key and b.user_seq = #{userSeq}
|
||||
where a.approval_chk = 'T'
|
||||
order by cat1_cd, cat2_cd, cat3_cd
|
||||
</select>
|
||||
</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>
|
||||
</where>
|
||||
</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>
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<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">
|
||||
<input type="checkbox" id="approvalChk" name="approvalChk" value="T" th:checked="${menuMgt.approvalChk eq 'T'}">
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -10,20 +10,18 @@
|
|||
</a>
|
||||
</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="/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="/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="#" 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 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>
|
||||
</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="/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>
|
||||
</th:block>
|
||||
</ul>
|
||||
</div>
|
||||
<div sec:authorize="isAuthenticated()">
|
||||
|
|
|
|||
Loading…
Reference in New Issue