> thanks opend ticket #8647

Attached is a patch against contrib/auth/models.py that should 
add an "algo" parameter to set_password so it takes an algorithm.

-tim




--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Index: models.py
===================================================================
--- models.py   (revision 8666)
+++ models.py   (working copy)
@@ -9,6 +9,7 @@
 import urllib
 
 UNUSABLE_PASSWORD = '!' # This will never be a valid hash
+DEFAULT_ALGO = 'sha1'
 
 try:
     set
@@ -103,12 +104,12 @@
         return self.name
 
 class UserManager(models.Manager):
-    def create_user(self, username, email, password=None):
+    def create_user(self, username, email, password=None, algo=DEFAULT_ALGO):
         "Creates and saves a User with the given username, e-mail and 
password."
         now = datetime.datetime.now()
         user = self.model(None, username, '', '', email.strip().lower(), 
'placeholder', False, True, False, now, now)
         if password:
-            user.set_password(password)
+            user.set_password(password, algo)
         else:
             user.set_unusable_password()
         user.save()
@@ -172,9 +173,8 @@
         full_name = u'%s %s' % (self.first_name, self.last_name)
         return full_name.strip()
 
-    def set_password(self, raw_password):
+    def set_password(self, raw_password, algo=DEFAULT_ALGO):
         import random
-        algo = 'sha1'
         salt = get_hexdigest(algo, str(random.random()), 
str(random.random()))[:5]
         hsh = get_hexdigest(algo, salt, raw_password)
         self.password = '%s$%s$%s' % (algo, salt, hsh)
@@ -343,7 +343,7 @@
     def delete(self):
         raise NotImplementedError
 
-    def set_password(self, raw_password):
+    def set_password(self, raw_password, algo=DEFAULT_ALGO):
         raise NotImplementedError
 
     def check_password(self, raw_password):

Reply via email to