Merge branch 'dev' into shirc_dev

This commit is contained in:
shirenchuang
2021-04-22 14:13:32 +08:00
10 changed files with 46 additions and 22 deletions

View File

@@ -8,10 +8,11 @@ package com.xiaojukeji.kafka.manager.common.constant;
public class ApiPrefix { public class ApiPrefix {
public static final String API_PREFIX = "/api/"; public static final String API_PREFIX = "/api/";
private static final String API_V1_PREFIX = API_PREFIX + "v1/"; private static final String API_V1_PREFIX = API_PREFIX + "v1/";
private static final String API_V2_PREFIX = API_PREFIX + "v2/";
// login
public static final String API_V1_SSO_PREFIX = API_V1_PREFIX + "sso/";
// console // console
public static final String API_V1_SSO_PREFIX = API_V1_PREFIX + "sso/";
public static final String API_V1_NORMAL_PREFIX = API_V1_PREFIX + "normal/"; public static final String API_V1_NORMAL_PREFIX = API_V1_PREFIX + "normal/";
public static final String API_V1_RD_PREFIX = API_V1_PREFIX + "rd/"; public static final String API_V1_RD_PREFIX = API_V1_PREFIX + "rd/";
public static final String API_V1_OP_PREFIX = API_V1_PREFIX + "op/"; public static final String API_V1_OP_PREFIX = API_V1_PREFIX + "op/";

View File

@@ -4,7 +4,6 @@ import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus; import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
import com.xiaojukeji.kafka.manager.common.entity.ao.ClusterDetailDTO; import com.xiaojukeji.kafka.manager.common.entity.ao.ClusterDetailDTO;
import com.xiaojukeji.kafka.manager.common.entity.ao.cluster.ControllerPreferredCandidate; import com.xiaojukeji.kafka.manager.common.entity.ao.cluster.ControllerPreferredCandidate;
import com.xiaojukeji.kafka.manager.common.entity.dto.op.ControllerPreferredCandidateDTO;
import com.xiaojukeji.kafka.manager.common.entity.vo.normal.cluster.ClusterNameDTO; import com.xiaojukeji.kafka.manager.common.entity.vo.normal.cluster.ClusterNameDTO;
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO; import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterMetricsDO; import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterMetricsDO;

View File

@@ -1,7 +1,6 @@
package com.xiaojukeji.kafka.manager.service.service; package com.xiaojukeji.kafka.manager.service.service;
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus; import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
import com.xiaojukeji.kafka.manager.common.entity.dto.rd.RegionDTO;
import com.xiaojukeji.kafka.manager.common.entity.pojo.RegionDO; import com.xiaojukeji.kafka.manager.common.entity.pojo.RegionDO;
import java.util.List; import java.util.List;

View File

@@ -340,10 +340,6 @@ public class AdminServiceImpl implements AdminService {
@Override @Override
public ResultStatus modifyTopicConfig(ClusterDO clusterDO, String topicName, Properties properties, String operator) { public ResultStatus modifyTopicConfig(ClusterDO clusterDO, String topicName, Properties properties, String operator) {
ResultStatus rs = TopicCommands.modifyTopicConfig(clusterDO, topicName, properties); ResultStatus rs = TopicCommands.modifyTopicConfig(clusterDO, topicName, properties);
if (!ResultStatus.SUCCESS.equals(rs)) {
return rs;
}
return rs; return rs;
} }
} }

View File

@@ -8,7 +8,6 @@ import com.xiaojukeji.kafka.manager.common.entity.ao.consumer.ConsumeDetailDTO;
import com.xiaojukeji.kafka.manager.common.entity.ao.consumer.ConsumerGroup; import com.xiaojukeji.kafka.manager.common.entity.ao.consumer.ConsumerGroup;
import com.xiaojukeji.kafka.manager.common.entity.ao.consumer.ConsumerGroupSummary; import com.xiaojukeji.kafka.manager.common.entity.ao.consumer.ConsumerGroupSummary;
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO; import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
import com.xiaojukeji.kafka.manager.common.utils.ListUtils;
import com.xiaojukeji.kafka.manager.common.zookeeper.znode.brokers.TopicMetadata; import com.xiaojukeji.kafka.manager.common.zookeeper.znode.brokers.TopicMetadata;
import com.xiaojukeji.kafka.manager.common.entity.ao.PartitionOffsetDTO; import com.xiaojukeji.kafka.manager.common.entity.ao.PartitionOffsetDTO;
import com.xiaojukeji.kafka.manager.common.exception.ConfigException; import com.xiaojukeji.kafka.manager.common.exception.ConfigException;

View File

@@ -16,5 +16,5 @@ public interface LoginService {
void logout(HttpServletRequest request, HttpServletResponse response, Boolean needJump2LoginPage); void logout(HttpServletRequest request, HttpServletResponse response, Boolean needJump2LoginPage);
boolean checkLogin(HttpServletRequest request, HttpServletResponse response); boolean checkLogin(HttpServletRequest request, HttpServletResponse response, String classRequestMappingValue);
} }

View File

@@ -63,16 +63,16 @@ public class LoginServiceImpl implements LoginService {
} }
@Override @Override
public boolean checkLogin(HttpServletRequest request, HttpServletResponse response) { public boolean checkLogin(HttpServletRequest request, HttpServletResponse response, String classRequestMappingValue) {
String uri = request.getRequestURI().replace("//", "/"); if (ValidateUtils.isNull(classRequestMappingValue)) {
if (uri.contains("/../") || uri.contains("/./")) { LOGGER.error("class=LoginServiceImpl||method=checkLogin||msg=uri illegal||uri={}", request.getRequestURI());
LOGGER.error("class=LoginServiceImpl||method=checkLogin||msg=uri illegal, contains /../ or /./||uri={}", uri); singleSignOn.setRedirectToLoginPage(response);
return false; return false;
} }
if (uri.startsWith(ApiPrefix.API_V1_SSO_PREFIX) if (classRequestMappingValue.equals(ApiPrefix.API_V1_SSO_PREFIX)
|| uri.startsWith(ApiPrefix.API_V1_THIRD_PART_PREFIX) || classRequestMappingValue.equals(ApiPrefix.API_V1_THIRD_PART_PREFIX)
|| uri.startsWith(ApiPrefix.GATEWAY_API_V1_PREFIX)) { || classRequestMappingValue.equals(ApiPrefix.GATEWAY_API_V1_PREFIX)) {
// 白名单接口直接true // 白名单接口直接true
return true; return true;
} }

View File

@@ -9,7 +9,6 @@ import com.xiaojukeji.kafka.manager.common.entity.vo.common.AccountSummaryVO;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils; import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
import com.xiaojukeji.kafka.manager.common.utils.SpringTool; import com.xiaojukeji.kafka.manager.common.utils.SpringTool;
import com.xiaojukeji.kafka.manager.common.constant.ApiPrefix; import com.xiaojukeji.kafka.manager.common.constant.ApiPrefix;
import com.xiaojukeji.kafka.manager.web.api.versionone.gateway.GatewayHeartbeatController;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -62,4 +61,4 @@ public class NormalAccountController {
AccountRoleEnum accountRoleEnum = accountService.getAccountRoleFromCache(username); AccountRoleEnum accountRoleEnum = accountService.getAccountRoleFromCache(username);
return new Result<>(new AccountRoleVO(username, accountRoleEnum.getRole())); return new Result<>(new AccountRoleVO(username, accountRoleEnum.getRole()));
} }
} }

View File

@@ -7,7 +7,6 @@ import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
import com.xiaojukeji.kafka.manager.common.entity.metrics.BrokerMetrics; import com.xiaojukeji.kafka.manager.common.entity.metrics.BrokerMetrics;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils; import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
import com.xiaojukeji.kafka.manager.common.zookeeper.znode.brokers.BrokerMetadata; import com.xiaojukeji.kafka.manager.common.zookeeper.znode.brokers.BrokerMetadata;
import com.xiaojukeji.kafka.manager.openapi.common.vo.ThirdPartBrokerOverviewVO;
import com.xiaojukeji.kafka.manager.service.cache.PhysicalClusterMetadataManager; import com.xiaojukeji.kafka.manager.service.cache.PhysicalClusterMetadataManager;
import com.xiaojukeji.kafka.manager.service.service.BrokerService; import com.xiaojukeji.kafka.manager.service.service.BrokerService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -52,4 +51,4 @@ public class ThirdPartClusterController {
return new Result<>(underReplicated.equals(0)); return new Result<>(underReplicated.equals(0));
} }
} }

View File

@@ -1,8 +1,13 @@
package com.xiaojukeji.kafka.manager.web.inteceptor; package com.xiaojukeji.kafka.manager.web.inteceptor;
import com.xiaojukeji.kafka.manager.account.LoginService; import com.xiaojukeji.kafka.manager.account.LoginService;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -15,6 +20,8 @@ import javax.servlet.http.HttpServletResponse;
*/ */
@Component @Component
public class PermissionInterceptor implements HandlerInterceptor { public class PermissionInterceptor implements HandlerInterceptor {
private static final Logger LOGGER = LoggerFactory.getLogger(PermissionInterceptor.class);
@Autowired @Autowired
private LoginService loginService; private LoginService loginService;
@@ -28,6 +35,31 @@ public class PermissionInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, HttpServletResponse response,
Object handler) throws Exception { Object handler) throws Exception {
return loginService.checkLogin(request, response);
String classRequestMappingValue = null;
try {
classRequestMappingValue = getClassRequestMappingValue(handler);
} catch (Exception e) {
LOGGER.error("class=PermissionInterceptor||method=preHandle||uri={}||msg=parse class request-mapping failed", request.getRequestURI(), e);
}
return loginService.checkLogin(request, response, classRequestMappingValue);
}
private String getClassRequestMappingValue(Object handler) {
RequestMapping classRM = null;
if(handler instanceof HandlerMethod) {
HandlerMethod hm = (HandlerMethod)handler;
classRM = hm.getMethod().getDeclaringClass().getAnnotation(RequestMapping.class);
} else if(handler instanceof org.springframework.web.servlet.mvc.Controller) {
org.springframework.web.servlet.mvc.Controller hm = (org.springframework.web.servlet.mvc.Controller)handler;
Class<? extends org.springframework.web.servlet.mvc.Controller> hmClass = hm.getClass();
classRM = hmClass.getAnnotation(RequestMapping.class);
} else {
classRM = handler.getClass().getAnnotation(RequestMapping.class);
}
if (ValidateUtils.isNull(classRM) || classRM.value().length < 0) {
return null;
}
return classRM.value()[0];
} }
} }