- no need for md5crypt module, newer standard crypt modules support md5
authorMark Huang <mlhuang@cs.princeton.edu>
Fri, 8 Sep 2006 19:45:46 +0000 (19:45 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Fri, 8 Sep 2006 19:45:46 +0000 (19:45 +0000)
crypt
- set min and max for str fields

PLC/Persons.py

index 27e8da8..bb2de63 100644 (file)
@@ -4,7 +4,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: Persons.py,v 1.1 2006/09/06 15:36:07 mlhuang Exp $
+# $Id: Persons.py,v 1.2 2006/09/07 23:45:31 mlhuang Exp $
 #
 
 from types import StringTypes
 #
 
 from types import StringTypes
@@ -13,6 +13,7 @@ import md5
 import time
 from random import Random
 import re
 import time
 from random import Random
 import re
+import crypt
 
 from PLC.Faults import *
 from PLC.Parameter import Parameter
 
 from PLC.Faults import *
 from PLC.Parameter import Parameter
@@ -21,7 +22,6 @@ from PLC.Table import Row, Table
 from PLC.Roles import Roles
 from PLC.Addresses import Address, Addresses
 from PLC.Keys import Key, Keys
 from PLC.Roles import Roles
 from PLC.Addresses import Address, Addresses
 from PLC.Keys import Key, Keys
-from PLC import md5crypt
 import PLC.Sites
 
 class Person(Row):
 import PLC.Sites
 
 class Person(Row):
@@ -33,17 +33,17 @@ class Person(Row):
 
     fields = {
         'person_id': Parameter(int, "Account identifier"),
 
     fields = {
         'person_id': Parameter(int, "Account identifier"),
-        'first_name': Parameter(str, "Given name"),
-        'last_name': Parameter(str, "Surname"),
-        'title': Parameter(str, "Title"),
-        'email': Parameter(str, "Primary e-mail address"),
-        'phone': Parameter(str, "Telephone number"),
-        'url': Parameter(str, "Home page"),
-        'bio': Parameter(str, "Biography"),
+        'first_name': Parameter(str, "Given name", max = 128),
+        'last_name': Parameter(str, "Surname", max = 128),
+        'title': Parameter(str, "Title", max = 128),
+        'email': Parameter(str, "Primary e-mail address", max = 254),
+        'phone': Parameter(str, "Telephone number", max = 64),
+        'url': Parameter(str, "Home page", max = 254),
+        'bio': Parameter(str, "Biography", max = 254),
         'accepted_aup': Parameter(bool, "Has accepted the AUP"),
         'enabled': Parameter(bool, "Has been enabled"),
         'deleted': Parameter(bool, "Has been deleted"),
         'accepted_aup': Parameter(bool, "Has accepted the AUP"),
         'enabled': Parameter(bool, "Has been enabled"),
         'deleted': Parameter(bool, "Has been deleted"),
-        'password': Parameter(str, "Account password in crypt() form"),
+        'password': Parameter(str, "Account password in crypt() form", max = 254),
         'last_updated': Parameter(str, "Date and time of last update"),
         'date_created': Parameter(str, "Date and time when account was created"),
         }
         'last_updated': Parameter(str, "Date and time of last update"),
         'date_created': Parameter(str, "Date and time when account was created"),
         }
@@ -112,14 +112,16 @@ class Person(Row):
         database.
         """
 
         database.
         """
 
-        if len(password) > len(md5crypt.MAGIC) and \
-           password[0:len(md5crypt.MAGIC)] == md5crypt.MAGIC:
+        magic = "$1$"
+
+        if len(password) > len(magic) and \
+           password[0:len(magic)] == magic:
             return password
         else:
             return password
         else:
-            # Generate a somewhat unique 2 character salt string
+            # Generate a somewhat unique 8 character salt string
             salt = str(time.time()) + str(Random().random())
             salt = md5.md5(salt).hexdigest()[:8] 
             salt = str(time.time()) + str(Random().random())
             salt = md5.md5(salt).hexdigest()[:8] 
-            return md5crypt.md5crypt(password, salt)
+            return crypt.crypt(password.encode(self.api.encoding), magic + salt + "$")
 
     def validate_role_ids(self, role_ids):
         """
 
     def validate_role_ids(self, role_ids):
         """