InternalTokenInterceptor.java

  1. package com.sintia.ffl.admin.dentaire.api.interceptors;

  2. import com.sintia.ffl.admin.dentaire.api.exceptions.BadInternalTokenException;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.stereotype.Component;
  6. import org.springframework.web.servlet.HandlerInterceptor;

  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;

  9. @Slf4j
  10. @Component
  11. public class InternalTokenInterceptor implements HandlerInterceptor {

  12.     @Value("${app.internal-auth-token}")
  13.     private String internalAuthToken;

  14.     @Override
  15.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

  16.         final String servletPath = request.getServletPath();

  17.         if(servletPath.startsWith("/api")) {
  18.             final String internalToken = request.getHeader("X-Internal-Token");
  19.             if (internalToken == null || internalToken.isBlank() || !internalToken.equals(internalAuthToken)) {
  20.                 throw new BadInternalTokenException("Le token d'authentification interne est absent ou invalide");
  21.             }
  22.         }

  23.         return HandlerInterceptor.super.preHandle(request, response, handler);
  24.     }
  25. }