接口逻辑补充零碎修改等

This commit is contained in:
mi9688
2024-10-21 17:41:45 +08:00
parent a8faa7cdeb
commit 655e22579c
14 changed files with 180 additions and 33 deletions

View File

@ -61,7 +61,7 @@ public class ResourcesConfig implements WebMvcConfigurer
"/tool/gen/**");
//配置项目数据隔离拦截器
registry.addInterceptor(projectDataIsolationInterceptor)
.addPathPatterns("/gis/groups/**", "/gis/legend/**","/gis/site/**");
.addPathPatterns("/gis/groups/**", "/gis/legend/**","/gis/site/**","/project/**");
}
/**

View File

@ -131,6 +131,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
//安防小板
.antMatchers("/iot/photos","/iot/photos/**","/yinghsiyun/webhook").permitAll()
.antMatchers("/test/**/*").permitAll()
.antMatchers("/system/district/tree").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()

View File

@ -15,9 +15,11 @@ import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.annotation.Nullable;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@ -49,18 +51,52 @@ public class ProjectDataIsolationInterceptor implements HandlerInterceptor {
if ("PUT".equalsIgnoreCase(request.getMethod())) {
return true;
}
//获取路径中的查询字符串参数
String projectIds = request.getParameter("projectIds");
if (StringUtils.isBlank(projectIds)) {
return true;
//当前项目信息
ProjectInfo projectInfo = ProjectInfo.builder().build();
//获取cookie
Cookie[] requestCookies = request.getCookies();
//获取cookie中的projectIds父项目及其子项目id,projectId(当前项目id),userId当前管理员id
if (requestCookies != null) {
for (Cookie cookie : requestCookies){
//获取cookie中的projectIds
if ("projectIds".equals(cookie.getName())) {
byte[] decode = Base64.decode(cookie.getValue());
//转成List集合
String decodedStr = new String(decode);
if (StringUtils.isNotBlank(decodedStr)) {
JSONArray objects = JSONUtil.parseArray(decodedStr);
projectInfo.setProjectIdList(objects.toList(Long.class));
}
}
//获取cookie中的projectId
if ("projectId".equals(cookie.getName())) {
projectInfo.setProjectId(cookie.getValue());
}
//获取cookie中的userId
if ("userId".equals(cookie.getName())) {
projectInfo.setProjectAdminId(cookie.getValue());
}
}
byte[] decode = Base64.decode(projectIds);
//转成List集合
String decodedStr = new String(decode);
JSONArray objects = JSONUtil.parseArray(decodedStr);
ProjectHolder.setProjectInfo(ProjectInfo.builder()
.projectIdList(objects.toList(Long.class))
.build());
}
ProjectHolder.setProjectInfo(projectInfo);
// //获取路径中的查询字符串参数
// String projectIds = request.getParameter("projectIds");
//
// //为空则是超级管理员不做数据隔离
// if (StringUtils.isBlank(projectIds)) {
// ProjectHolder.setProjectInfo(ProjectInfo.builder().projectId("").build());
// return true;
// }
// byte[] decode = Base64.decode(projectIds);
// //转成List集合
// String decodedStr = new String(decode);
// JSONArray objects = JSONUtil.parseArray(decodedStr);
// ProjectHolder.setProjectInfo(ProjectInfo.builder()
// .projectIdList(objects.toList(Long.class))
// .build());
return true;
}
@Override