View Javadoc
1   package de.dlr.shepard.common.filters;
2   
3   import io.quarkus.logging.Log;
4   import jakarta.enterprise.context.RequestScoped;
5   import jakarta.ws.rs.container.ContainerRequestContext;
6   import jakarta.ws.rs.container.ContainerRequestFilter;
7   import jakarta.ws.rs.ext.Provider;
8   import java.io.IOException;
9   
10  @Provider
11  @RequestScoped
12  public class LoggingFilter implements ContainerRequestFilter {
13  
14    @Override
15    public void filter(ContainerRequestContext requestContext) throws IOException {
16      var method = requestContext.getMethod();
17      var endpoint = requestContext.getUriInfo().getPath();
18      var queryParams = requestContext.getUriInfo().getQueryParameters();
19      if (requestContext.getSecurityContext().getUserPrincipal() == null) {
20        Log.infof(
21          "Received %s request without security context on %s with query params %s",
22          method,
23          endpoint,
24          queryParams
25        );
26        return;
27      }
28      var username = requestContext.getSecurityContext().getUserPrincipal().getName();
29  
30      Log.infof("Received %s request on %s from %s with query params %s", method, endpoint, username, queryParams);
31    }
32  }