Moved check of generated password into separate function

This commit is contained in:
StNicolay 2022-11-15 15:39:38 +03:00
parent d5f3708c50
commit d68a7bb6e8

View File

@ -109,17 +109,23 @@ def check_account(name: str, login: str, passwd: str) -> bool:
return check_account_name(name) and check_login(login) and check_passwd(passwd)
def _check_gened_password(passwd: str, /) -> bool:
"""Retuns true if generated password is valid,
false otherwise.
Password is valid if there is at least one lowercase character,
uppercase character and one punctuation character"""
return (
any(c.islower() for c in passwd)
and any(c.isupper() for c in passwd)
and any(c.isdigit() for c in passwd)
and any(c in PUNCTUATION for c in passwd)
)
def gen_passwd() -> str:
"""Generates password of length 32"""
choices = SystemRandom().choices
while True:
passwd = "".join(choices(PASSWORD_CHARS, k=32))
# If there is at least one lowercase character, uppercase character
# and one punctuation character
if (
any(c.islower() for c in passwd)
and any(c.isupper() for c in passwd)
and any(c.isdigit() for c in passwd)
and any(c in PUNCTUATION for c in passwd)
):
if _check_gened_password(passwd):
return passwd