On 09/03/2013 01:09 PM, Samantha N. Bueno wrote:
As per dshea's recommendations, here's a new/revised version with appropriate edits.
This is in keeping some consistency with GUI behavior, check a user's pw quality score and warn/prompt them to confirm whether they are ok with using a weak pw.
Resolves: rhbz#1001039
pyanaconda/ui/gui/spokes/password.py | 12 +++--------- pyanaconda/ui/tui/spokes/__init__.py | 5 ++++- pyanaconda/users.py | 8 ++++++++ 3 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/password.py b/pyanaconda/ui/gui/spokes/password.py index c67979b..55bf116 100644 --- a/pyanaconda/ui/gui/spokes/password.py +++ b/pyanaconda/ui/gui/spokes/password.py @@ -20,15 +20,13 @@ #
from pyanaconda.i18n import _, N_ -from pyanaconda.users import cryptPassword, validatePassword +from pyanaconda.users import cryptPassword, validatePassword, checkPassword from pwquality import PWQError
from pyanaconda.ui.gui.spokes import NormalSpoke from pyanaconda.ui.gui.categories.user_settings import UserSettingsCategory from pyanaconda.ui.common import FirstbootSpokeMixIn
-import pwquality
- __all__ = ["PasswordSpoke"]
@@ -61,10 +59,6 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke): self.pw.set_placeholder_text(_("The password is set.")) self.confirm.set_placeholder_text(_("The password is set."))
# set up passphrase quality checkerself._pwq = pwquality.PWQSettings()self._pwq.read_config()self.pw_bar = self.builder.get_object("password_bar") self.pw_label = self.builder.get_object("password_label")@@ -113,9 +107,9 @@ class PasswordSpoke(FirstbootSpokeMixIn, NormalSpoke): the changed Gtk event handler. """ try:
strength = self._pwq.check(self.pw.get_text(), None, None)
strength = checkPassword(self.pw.get_text()) _pwq_error = None
except pwquality.PWQError as e:
except PWQError as e: _pwq_error = e.message strength = 0diff --git a/pyanaconda/ui/tui/spokes/__init__.py b/pyanaconda/ui/tui/spokes/__init__.py index 2f92126..087199b 100644 --- a/pyanaconda/ui/tui/spokes/__init__.py +++ b/pyanaconda/ui/tui/spokes/__init__.py @@ -21,7 +21,7 @@ from pyanaconda.ui.tui import simpleline as tui from pyanaconda.ui.tui.tuiobject import TUIObject, YesNoDialog from pyanaconda.ui.common import Spoke, StandaloneSpoke, NormalSpoke, PersonalizationSpoke, collect -from pyanaconda.users import validatePassword +from pyanaconda.users import validatePassword, checkPassword from pwquality import PWQError import re from collections import namedtuple @@ -118,6 +118,9 @@ class EditTUIDialog(NormalTUISpoke): if error: print(error) return None
strength = checkPassword(pw)if strength < 50:raise PWQError("The password you have provided is weak.") except PWQError as e: error = _("You have provided a weak password: %s. " % e.message) error += _("\nWould you like to use it anyway?")diff --git a/pyanaconda/users.py b/pyanaconda/users.py index 33f86fe..ba5427a 100644 --- a/pyanaconda/users.py +++ b/pyanaconda/users.py @@ -145,6 +145,14 @@ def validatePassword(pw, confirm=None, minlen=6, user="root"):
return None+def checkPassword(pw):
- """ Check the quality of a password passed in and return a numeric
value.- """
- pwq = pwquality.PWQSettings()
- pwq.read_config()
- return pwq.check(pw, None, None)
- def guess_username(fullname): fullname = fullname.split()
Ack.