Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/user_interaction
diff options
context:
space:
mode:
authorDaniel Girtler <blackrabbit256@gmail.com>2022-06-06 21:04:50 +1000
committerGitHub <noreply@github.com>2022-06-06 13:04:50 +0200
commitf2492ca574448fe4bd44604316da322720e70040 (patch)
tree5f4a19e0b99af201677312e28b1ab7ed196d518f /archinstall/lib/user_interaction
parent32442ac7f36d71f0ba0d10bb5db19afa4a099e23 (diff)
Fix #1304 - Make password validation less intrusive (#1308)
* Make password validation less intrusive * Update Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Diffstat (limited to 'archinstall/lib/user_interaction')
-rw-r--r--archinstall/lib/user_interaction/utils.py32
1 files changed, 7 insertions, 25 deletions
diff --git a/archinstall/lib/user_interaction/utils.py b/archinstall/lib/user_interaction/utils.py
index fa079bc2..7ee6fc07 100644
--- a/archinstall/lib/user_interaction/utils.py
+++ b/archinstall/lib/user_interaction/utils.py
@@ -7,6 +7,7 @@ import time
from typing import Any, Optional, TYPE_CHECKING
from ..menu import Menu
+from ..models.password_strength import PasswordStrength
from ..output import log
if TYPE_CHECKING:
@@ -16,42 +17,23 @@ if TYPE_CHECKING:
SIG_TRIGGER = None
-def check_password_strong(passwd: str) -> bool:
- symbol_count = 0
- if any(character.isdigit() for character in passwd):
- symbol_count += 10
- if any(character.isupper() for character in passwd):
- symbol_count += 26
- if any(character.islower() for character in passwd):
- symbol_count += 26
- if any(not character.isalnum() for character in passwd):
- symbol_count += 40
-
- if symbol_count**len(passwd) < 10e20:
- prompt = str(_("The password you are using seems to be weak, are you sure you want to use it?"))
- choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run()
- return choice.value == Menu.yes()
-
- return True
-
-
def get_password(prompt: str = '') -> Optional[str]:
if not prompt:
prompt = _("Enter a password: ")
- while passwd := getpass.getpass(prompt):
- if len(passwd.strip()) <= 0:
+ while password := getpass.getpass(prompt):
+ if len(password.strip()) <= 0:
break
- if not check_password_strong(passwd):
- continue
+ strength = PasswordStrength.strength(password)
+ log(f'Password strength: {strength.value}', fg=strength.color())
passwd_verification = getpass.getpass(prompt=_('And one more time for verification: '))
- if passwd != passwd_verification:
+ if password != passwd_verification:
log(' * Passwords did not match * ', fg='red')
continue
- return passwd
+ return password
return None