[PATCH 2/3] Make use of the validatePassword routine from users.py
Jesse Keating
jkeating at redhat.com
Fri Oct 12 02:21:05 UTC 2012
Errors bring returned is a simple mismatch or invalid chars, which we
can't allow. Raised items are actual quality issues which the user
could use anyway.
---
pyanaconda/ui/gui/spokes/password.py | 54 ++++++++++--------------------------
1 file changed, 15 insertions(+), 39 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/password.py b/pyanaconda/ui/gui/spokes/password.py
index 74acd4e..c67afb6 100644
--- a/pyanaconda/ui/gui/spokes/password.py
+++ b/pyanaconda/ui/gui/spokes/password.py
@@ -25,8 +25,8 @@ N_ = lambda x: x
from gi.repository import Gtk
-from pyanaconda.users import cryptPassword
-import pwquality
+from pyanaconda.users import cryptPassword, validatePassword
+from pwquality import PWQError
import string
from pyanaconda.ui.gui.spokes import NormalSpoke
@@ -101,49 +101,25 @@ class PasswordSpoke(NormalSpoke):
# Do various steps to validate the password
# sets self._error to an error string
# Return True if valid, False otherwise
+ self._error = False
pw = self.pw.get_text()
confirm = self.confirm.get_text()
- # if both pw and confirm are blank, password is disabled.
- if (pw and not confirm) or (confirm and not pw):
- self._error = _("You must enter your root password "
- "and confirm it by typing it a second "
- "time to continue.")
- return False
-
- if pw != confirm:
- self._error = _("The passwords you entered were "
- "different. Please try again.")
- return False
+ try:
+ self._error = validatePassword(pw, confirm)
+ except PWQError as (e, msg):
+ if pw == self._oldweak:
+ # We got a second attempt with the same weak password
+ pass
+ else:
+ self._error = _("You have provided a weak password: %s. "
+ " Press Done again to use anyway.") % msg
+ self._oldweak = pw
+ return False
- if pw and len(pw) < 6:
- self._error = _("The root password must be at least "
- "six characters long.")
+ if self._error:
return False
- if pw:
- try:
- settings = pwquality.PWQSettings()
- settings.read_config()
- settings.check(pw, None, "root")
- except pwquality.PWQError as (e, msg):
- if pw == self._oldweak:
- # We got a second attempt with the same weak password
- pass
- else:
- self._error = _("You have provided a weak password: %s. "
- " Press Done again to use anyway.") % msg
- self._oldweak = pw
- return False
-
- legal = string.digits + string.ascii_letters + string.punctuation + " "
- for letter in pw:
- if letter not in legal:
- self._error = _("Requested password contains "
- "non-ASCII characters, which are "
- "not allowed.")
- return False
-
# if no errors, clear the info for next time we go into the spoke
self._password = pw
self.window.clear_info()
--
1.7.11.4
More information about the anaconda-patches
mailing list