@Component
public class CustomAuthenticationHandler implements AuthenticationFailureHandler {
@Autowired
private UserRepository userRepository;
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(CustomAuthenticationHandler.class);
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
logger.info("CustomAuthenticationFailureHandler invoked");
if (exception instanceof BadCredentialsException) {
String email = request.getParameter("username");
boolean emailExists = checkEmail(email);
if (!emailExists) {
logger.warn(" User not registered with email : {}", email);
response.sendRedirect("/login?error=email");
} else {
logger.warn(" Incorrect password for email: {}", email);
response.sendRedirect("/login?error=password");
}
} else {
logger.error("Authentication failed due to: {}", exception.getMessage());
response.sendRedirect("/login?error");
}
}
private boolean checkEmail(String email) {
Optional<User> user = userRepository.findByEmail(email);
return user.isPresent();
}
}
@Component
public class CustomAuthenticationHandler implements AuthenticationFailureHandler {
@Autowired
private UserRepository userRepository;
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(CustomAuthenticationHandler.class);
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
logger.info("CustomAuthenticationFailureHandler invoked");
if (exception instanceof BadCredentialsException) {
String email = request.getParameter("username");
boolean emailExists = checkEmail(email);
if (!emailExists) {
logger.warn(" User not registered with email : {}", email);
response.sendRedirect("/login?error=email");
} else {
logger.warn(" Incorrect password for email: {}", email);
response.sendRedirect("/login?error=password");
}
} else {
logger.error("Authentication failed due to: {}", exception.getMessage());
response.sendRedirect("/login?error");
}
}
private boolean checkEmail(String email) {
Optional<User> user = userRepository.findByEmail(email);
return user.isPresent();
}
}