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 }