[lc_ldap] correction de la création de compte

This commit is contained in:
Antoine Durand-Gasselin 2010-10-17 18:55:40 +02:00
parent 514915b1be
commit 27ed937c5f
2 changed files with 26 additions and 26 deletions

View file

@ -31,7 +31,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from __future__ import with_statement
import os, sys, ldap, re, netaddr, datetime, copy, time
import os, sys, ldap, re, netaddr, datetime, copy, time, random
from ldap.modlist import addModlist, modifyModlist
from Levenshtein import jaro
sys.path.append('/usr/scripts/gestion')
@ -582,35 +582,35 @@ class adherent(proprio):
if u'posixAccount' in self.attrs['objectClass']:
return self.attrs['uid'][0]
elif login:
nom = strip_accents(self.attrs['nom'][0]).lower()
login = strip_accents(login).lower()
if jaro(nom, login) < 0.75:
raise ValueError("L'uid est trop différent du nom (%s -> %s)" % (uid, self.attrs['nom'][0]))
if not re.match('[a-z][-a-z]{1,15}'):
raise ValueError("Seules les lettres non accentuées et le - sont acceptés pour le login")
if mailexist(login):
raise ValueError(u"Login existant ou correspondant à un alias mail.", 1)
fn = crans_utils.strip_accents(self.attrs['prenom'][0].capitalize())
ln = crans_utils.strip_accents(self.attrs['nom'][0].capitalize())
login = crans_utils.strip_accents(login).lower()
if jaro(ln.lower(), login) < 0.75 and jaro(fn.lower() + ' ' + ln.lower(), login) < 0.75:
raise ValueError("Le login est trop différent du nom (%s -> %s)" %
(login, self.attrs['nom'][0]))
if not re.match('^[a-z][-a-z]{1,15}$', login):
raise ValueError("Le login a entre 2 et 16 lettres, il peut contenir (pas au début) des - ")
if crans_utils.mailexist(login):
raise ValueError("Login existant ou correspondant à un alias mail.")
home = '/home/' + login
home = u'/home/' + login
if os.path.exists(home):
raise ValueError(u'Création du compte impossible : home existant', 1)
raise ValueError('Création du compte impossible : home existant')
if os.path.exists("/var/mail/" + login):
raise ValueError(u'Création du compte impossible : /var/mail/%s existant' % login, 1)
raise ValueError('Création du compte impossible : /var/mail/%s existant' % login)
self._modifs['homeDirectory'] = [home]
self._modifs['mail'] = [login]
self._modifs['uid' ] = [login]
fn = strip_accents(self.attrs['prenom'].capitalize())
ln = strip_accents(self.attrs['nom'].capitalize()))
calias = strip_spaces(fn) + '.' + strip_spaces(ln)
if mailexists(calias):
calias = crans_utils.strip_spaces(fn) + u'.' + crans_utils.strip_spaces(ln)
if crans_utils.mailexist(calias):
calias = login
self._modifs['canonicalAlias'] = [calias]
self._modifs['objectClass'] = ['adherent', 'cransAccount', 'posixAccount', 'shadowAccount']
self._modifs['cn'] = fn + ' ' + ln
self._modifs['loginShell'] = [ shel]
self._modifs['userPassword'] = [hash_pass]
self._modifs['objectClass'] = [u'adherent', u'cransAccount', u'posixAccount', u'shadowAccount']
self._modifs['cn'] = [ fn + u' ' + ln ]
self._modifs['loginShell'] = [unicode(shell)]
self._modifs['userPassword'] = [unicode(hash_pass)]
if uidNumber:
if self.conn.search('(uidNumber=%s)' % uidNumber):
@ -623,7 +623,7 @@ class adherent(proprio):
if not self.conn.search('(uidNumber=%s)' % uidNumber):
break
if not len(pool_uid):
raise ValueError(u"Plus d'uid disponibles !")
raise ValueError("Plus d'uid disponibles !")
## try:
## self.lock('uidNumber', str(uidNumber))
@ -631,9 +631,9 @@ class adherent(proprio):
## # Quelqu'un nous a piqué l'uid que l'on venait de choisir !
## return self.compte(login, uidNumber, hash_pass, shell)
self._modifs['uidNumber'] = [str(uidNumber)]
self._modifs['gidNumber'] = [str(config.gid)]
self._modifs['gecos'] = cn + ',,,'
self._modifs['uidNumber'] = [unicode(uidNumber)]
self._modifs['gidNumber'] = [unicode(config.gid)]
self._modifs['gecos'] = self._modifs['cn'][0] + u',,,'
self.save()