From 3eb9c4d6e0d82ff54400b87b2d31ed1ec4935937 Mon Sep 17 00:00:00 2001 From: Navi Singla Date: Fri, 18 Oct 2024 15:41:38 +0530 Subject: [PATCH] Added user block / unblock logic --- src/main/java/UserService.java | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) 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; + } +}