1、禅道#795问题修复,支持部门禁用的实时检查;2、新增用户、部门、组织删除和禁用时对对应用户的token移除;

This commit is contained in:
gaoqr
2024-11-29 17:04:52 +08:00
parent 0de7725788
commit 45482a5dbf
12 changed files with 246 additions and 42 deletions
@@ -1,2 +1,2 @@
com.cf.imes.framework.datapermission.config.ChenfengDataPermissionAutoConfiguration
com.cf.imes.framework.datapermission.config.ChenfengDeptDataPermissionAutoConfiguration
#com.cf.imes.framework.datapermission.config.ChenfengDataPermissionAutoConfiguration
#com.cf.imes.framework.datapermission.config.ChenfengDeptDataPermissionAutoConfiguration
@@ -16,6 +16,7 @@ import com.cf.imes.framework.organ.core.service.OrganFrameworkServiceImpl;
import com.cf.imes.framework.organ.core.web.OrganContextWebFilter;
import com.cf.imes.framework.web.config.WebProperties;
import com.cf.imes.framework.web.core.handler.GlobalExceptionHandler;
import com.cf.imes.module.system.api.dept.DeptApi;
import com.cf.imes.module.system.api.organ.OrganApi;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
@@ -42,8 +43,8 @@ import java.util.Objects;
public class ChenfengOrganAutoConfiguration {
@Bean
public OrganFrameworkService tenantFrameworkService(OrganApi organApi) {
return new OrganFrameworkServiceImpl(organApi);
public OrganFrameworkService tenantFrameworkService(OrganApi organApi, DeptApi deptApi) {
return new OrganFrameworkServiceImpl(organApi, deptApi);
}
// ========== AOP ==========
@@ -61,8 +61,10 @@ public class OrganSecurityWebFilter extends ApiRequestFilter {
throws ServletException, IOException {
Long organId = WebFrameworkUtils.getOrganId(request);
// 1. 登陆的用户,校验是否有权限访问该组织,避免越权问题。
Long deptId = null;
LoginUser user = SecurityFrameworkUtils.getLoginUser();
if (user != null) {
deptId = user.getDeptId();
// 如果获取不到组织编号,则尝试使用登陆用户的组织编号
if (organId == null) {
organId = user.getOrganId();
@@ -89,7 +91,10 @@ public class OrganSecurityWebFilter extends ApiRequestFilter {
}
// 3. 校验组织是合法,例如说被禁用、到期
try {
// 校验组织
organFrameworkService.validOrgan(organId);
// 校验部门
organFrameworkService.validDept(deptId);
} catch (Throwable ex) {
CommonResult<?> result = globalExceptionHandler.allExceptionHandler(request, ex);
// 组织失效返回401踢出系统
@@ -23,4 +23,10 @@ public interface OrganFrameworkService {
*/
void validOrgan(Long id);
/**
* 校验部门是否合法
*
* @param id
*/
void validDept(Long id);
}
@@ -1,6 +1,7 @@
package com.cf.imes.framework.organ.core.service;
import com.cf.imes.framework.common.util.cache.CacheUtils;
import com.cf.imes.module.system.api.dept.DeptApi;
import com.cf.imes.module.system.api.organ.OrganApi;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
@@ -20,6 +21,8 @@ public class OrganFrameworkServiceImpl implements OrganFrameworkService {
private final OrganApi organApi;
private final DeptApi deptApi;
/**
* 针对 {@link #getOrganIds()} 的缓存
*/
@@ -46,4 +49,8 @@ public class OrganFrameworkServiceImpl implements OrganFrameworkService {
organApi.validOrgan(id).checkError();
}
@Override
public void validDept(Long id) {
deptApi.validateDept(id);
}
}