diff --git a/src/main/java/UserService.java b/src/main/java/UserService.java index bb26d0f..e3bb523 100644 --- a/src/main/java/UserService.java +++ b/src/main/java/UserService.java @@ -1,10 +1,38 @@ +import java.util.HashMap; +import java.util.Map; + public class UserService { + private Map failedAttempts = new HashMap(); + private static final int MAX_FAILED_ATTEMPTS = 4; + public String authenticate(String username, String password) { - if ("admin".equals(username) && "password123".equals(password)) { + if (isUserBlocked(username)) { + return "User is blocked due to too many failed login attempts."; + } + + if ("admin".equals(username) && "password1234".equals(password)) { + resetFailedAttempts(username); // Reset attempts on successful login return "Login successful"; } else { - return "Login failed"; + incrementFailedAttempts(username); + if (failedAttempts.get(username) >= MAX_FAILED_ATTEMPTS) { + return "User is blocked due to too many failed login attempts."; + } else { + return "Login failed. You have " + (MAX_FAILED_ATTEMPTS - failedAttempts.get(username)) + " attempts left."; + } } } -} \ No newline at end of file + + private void incrementFailedAttempts(String username) { + failedAttempts.put(username, failedAttempts.getOrDefault(username, 0) + 1); + } + + private void resetFailedAttempts(String username) { + failedAttempts.put(username, 0); + } + + private boolean isUserBlocked(String username) { + return failedAttempts.getOrDefault(username, 0) >= MAX_FAILED_ATTEMPTS; + } +}