forked from kimhyungsik/ax_hub_mcp_tool
소스 업데이트
This commit is contained in:
@@ -1,40 +1,43 @@
|
||||
package io.shinhanlife.dat.lib.mcp;
|
||||
|
||||
import java.io.IOException;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
|
||||
import jakarta.servlet.*;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
import io.shinhanlife.dat.lib.session.mci.AxhubSessionService;
|
||||
import io.shinhanlife.dat.lib.session.dto.SessionDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/** Captures optional correlation and employee headers for an MCP HTTP call and creates mock session. */
|
||||
@Component
|
||||
public class McpRequestHeaderFilter extends OncePerRequestFilter {
|
||||
public class McpRequestHeaderFilter implements Filter {
|
||||
|
||||
@Autowired(required = false)
|
||||
private AxhubSessionService sessionService;
|
||||
|
||||
@Override
|
||||
protected boolean shouldNotFilter(HttpServletRequest request) {
|
||||
return !request.getRequestURI().endsWith("/mcp");
|
||||
}
|
||||
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)
|
||||
throws IOException, ServletException {
|
||||
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) res;
|
||||
|
||||
if (!request.getRequestURI().contains("/mcp")) {
|
||||
filterChain.doFilter(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
|
||||
FilterChain filterChain) throws ServletException, IOException {
|
||||
String empNo = request.getHeader("employee-no");
|
||||
|
||||
|
||||
McpRequestHeaderContext.set(new McpRequestHeaders(
|
||||
request.getHeader("x-request-id"),
|
||||
request.getHeader("guid"),
|
||||
request.getHeader("mcp-session-id"),
|
||||
empNo,
|
||||
request.getHeader("virtual-employee-no")));
|
||||
|
||||
|
||||
// Fetch session info via MCI using employee-no (Only if sessionService is available, e.g. in Tool Pods)
|
||||
if (sessionService != null && empNo != null && !empNo.isEmpty()) {
|
||||
SessionDto sessionDto = sessionService.fetchUserSession(empNo);
|
||||
@@ -43,7 +46,7 @@ public class McpRequestHeaderFilter extends OncePerRequestFilter {
|
||||
request.setAttribute("userInfo", sessionDto);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
filterChain.doFilter(request, response);
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user