diff --git a/PasswordLockoutRequirement.java b/PasswordLockoutRequirement.java new file mode 100644 index 0000000..3067bea --- /dev/null +++ b/PasswordLockoutRequirement.java @@ -0,0 +1,33 @@ +import java.util.HashMap; +import java.util.Map; + +public class PasswordLockoutRequirement extends Requirement { + private static final int MAX_FAILED_ATTEMPTS = 5; + private final String username; + private static final Map failedAttempts = new HashMap<>(); + + public PasswordLockoutRequirement(String username) { + this.username = username; + } + + public void recordFailedAttempt() { + failedAttempts.put(username, failedAttempts.getOrDefault(username, 0) + 1); + } + + public void resetFailedAttempts() { + failedAttempts.put(username, 0); + } + + @Override + public CheckStatus check() { + int attempts = failedAttempts.getOrDefault(username, 0); + + if (attempts >= MAX_FAILED_ATTEMPTS) { + System.out.println("Account is locked due to too many failed login attempts."); + return CheckStatus.FAIL; + } else { + System.out.println("Account is not locked. Failed attempts: " + attempts); + return CheckStatus.PASS; + } + } +} diff --git a/PasswordMinimumLength.java b/PasswordMinimumLength.java index e3262ca..278928f 100644 --- a/PasswordMinimumLength.java +++ b/PasswordMinimumLength.java @@ -1,6 +1,3 @@ - -import rqcode.concepts.Requirement; - public class PasswordMinimumLength extends Requirement { private static final int MIN_LENGTH = 8; private static final int MAX_LENGTH = 64; diff --git a/PasswordPolicy.java b/PasswordPolicy.java index 251ba3b..d257ee1 100644 --- a/PasswordPolicy.java +++ b/PasswordPolicy.java @@ -1,6 +1,3 @@ -package rqcode.tutorial.tutorial_new; -import rqcode.concepts.CombinedRequirements; -import rqcode.concepts.Requirement; import java.util.Arrays; import java.util.List; diff --git a/Research Questions 3.pdf b/Research Questions 3.pdf new file mode 100644 index 0000000..287901f Binary files /dev/null and b/Research Questions 3.pdf differ