changeset 3439:822a2719b81b

keep plaintext password in Password object property (rfe [SF#1379447])
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Sun, 25 Dec 2005 15:38:40 +0000
parents 4963c853d51b
children 0c78c9bbb542
files roundup/password.py
diffstat 1 files changed, 10 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/roundup/password.py	Sun Dec 25 14:52:33 2005 +0000
+++ b/roundup/password.py	Sun Dec 25 15:38:40 2005 +0000
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 #
-# $Id: password.py,v 1.14 2005-12-03 11:35:54 a1s Exp $
+# $Id: password.py,v 1.15 2005-12-25 15:38:40 a1s Exp $
 
 """Password handling (encoding, decoding).
 """
@@ -89,15 +89,15 @@
         if scheme is None:
             scheme = self.default_scheme
         if plaintext is not None:
-            self.password = encodePassword(plaintext, self.default_scheme)
-            self.scheme = self.default_scheme
+            self.setPassword (plaintext, scheme)
         elif encrypted is not None:
-            self.unpack(encrypted)
+            self.unpack(encrypted, scheme)
         else:
+            self.scheme = self.default_scheme
             self.password = None
-            self.scheme = self.default_scheme
+            self.plaintext = None
 
-    def unpack(self, encrypted):
+    def unpack(self, encrypted, scheme=None):
         '''Set the password info from the scheme:<encryted info> string
            (the inverse of __str__)
         '''
@@ -105,16 +105,18 @@
         if m:
             self.scheme = m.group(1)
             self.password = m.group(2)
+            self.plaintext = None
         else:
             # currently plaintext - encrypt
-            self.password = encodePassword(encrypted, self.default_scheme)
-            self.scheme = self.default_scheme
+            self.setPassword(encrypted, scheme)
 
     def setPassword(self, plaintext, scheme=None):
         '''Sets encrypts plaintext.'''
         if scheme is None:
             scheme = self.default_scheme
+        self.scheme = scheme
         self.password = encodePassword(plaintext, scheme)
+        self.plaintext = plaintext
 
     def __cmp__(self, other):
         '''Compare this password against another password.'''

Roundup Issue Tracker: http://roundup-tracker.org/