package com.alttd.altitudeweb.config; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.stereotype.Component; import java.io.IOException; @Slf4j @Component public class SecurityAuthFailureHandler implements AccessDeniedHandler, AuthenticationEntryPoint { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException { log.warn("Access denied: User '{}' attempted to access '{}' without proper permissions", request.getUserPrincipal() != null ? request.getUserPrincipal().getName() : "unknown", request.getRequestURI()); response.sendError(HttpServletResponse.SC_FORBIDDEN, "Access Denied"); } @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException { log.warn("Authentication failure: Unauthenticated user attempted to access secured endpoint '{}'", request.getRequestURI()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authentication Required"); } }