From ef9d32cda5fb6504c97ac6f33600b3e42363ac0d Mon Sep 17 00:00:00 2001 From: PANDACUSHION Date: Sat, 11 Jan 2025 16:10:44 +0545 Subject: [PATCH] password validation and exception --- backend/utils/utils.py | 52 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/backend/utils/utils.py b/backend/utils/utils.py index 2098c68..eeac0c5 100644 --- a/backend/utils/utils.py +++ b/backend/utils/utils.py @@ -30,4 +30,54 @@ def is_valid_email(email): if re.match(pattern, email): return True else: - return False \ No newline at end of file + return False + +def password_check(passwd: str) -> bool: + special_symbol_pattern = r'[$@#%]' + upper_case_pattern = r'[A-Z]' + lower_case_pattern = r'[a-z]' + digit_pattern = r'[0-9]' + + if len(passwd) < 6: + raise PasswordLengthMinException('Password length should be at least 6 characters.') + elif len(passwd) > 20: + raise PasswordLengthMaxException('Password length should not be greater than 20 characters.') + + if not re.search(digit_pattern, passwd): + raise PasswordNumericException('Password should have at least one numeral.') + + if not re.search(upper_case_pattern, passwd): + raise PasswordUppercaseException('Password should have at least one uppercase letter.') + + if not re.search(lower_case_pattern, passwd): + raise PasswordLowercaseException('Password should have at least one lowercase letter.') + + if not re.search(special_symbol_pattern, passwd): + raise PasswordSpecialSymbolException('Password should have at least one of the symbols $@#%.') + + return True + + +class PasswordLengthMinException(Exception): + def __init__(self, message): + self.message = message + +class PasswordLengthMaxException(Exception): + def __init__(self, message): + self.message = message + +class PasswordNumericException(Exception): + def __init__(self, message): + self.message = message + +class PasswordUppercaseException(Exception): + def __init__(self, message): + self.message = message + +class PasswordLowercaseException(Exception): + def __init__(self, message): + self.message = message + +class PasswordSpecialSymbolException(Exception): + def __init__(self, message): + self.message = message