From ef910a9b57ed9af2bf880e3084888bee9ebac59c Mon Sep 17 00:00:00 2001 From: Makar Shevchenko Date: Tue, 11 Feb 2025 22:24:01 +0300 Subject: [PATCH 1/2] RQCODE PasswordLockoutRequirement --- PasswordLockoutRequirement.java | 33 +++++++++++++++++++++++++++++++++ PasswordMinimumLength.java | 3 --- PasswordPolicy.java | 3 --- 3 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 PasswordLockoutRequirement.java diff --git a/PasswordLockoutRequirement.java b/PasswordLockoutRequirement.java new file mode 100644 index 0000000..b858f08 --- /dev/null +++ b/PasswordLockoutRequirement.java @@ -0,0 +1,33 @@ +public class PasswordLockoutRequirement extends Requirement { + private final Map username2attempts = new HashMap<>(); + private static final int MAX_ATTEMPTS = 5; + private String username; + + public PasswordLockoutRequirement(String username) { + super("Requirement: Password Lockout Requirement"); + this.username = username; + if (this.username2attempts.get(username) == null) { + this.username2attempts[username] = 0; + } + } + + public void recordFailedAttempt() { + this.username2attempts[username] = this.username2attempts[username] + 1; + } + + public void resetFailedAttempts() { + this.username2attempts[username] = 0; + } + + @Override + public CheckStatus check() { + if (this.username == null) { + return CheckStatus.INCOMPLETE; + } + if (this.username2attempts[username] > this.MAX_ATTEMPTS) { + System.out.println("Account is locked"); + return CheckStatus.FAIL; + } + 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; From fae747569ea766c9df9fc25d5cde54981eacc445 Mon Sep 17 00:00:00 2001 From: Makar Shevchenko Date: Tue, 11 Feb 2025 22:26:33 +0300 Subject: [PATCH 2/2] RQCODE PasswordLockoutRequirement --- PasswordLockoutRequirement.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PasswordLockoutRequirement.java b/PasswordLockoutRequirement.java index b858f08..c684098 100644 --- a/PasswordLockoutRequirement.java +++ b/PasswordLockoutRequirement.java @@ -1,3 +1,6 @@ +import java.util.HashMap; + + public class PasswordLockoutRequirement extends Requirement { private final Map username2attempts = new HashMap<>(); private static final int MAX_ATTEMPTS = 5;