[lc_ldap] correction de la création de compte
This commit is contained in:
parent
514915b1be
commit
27ed937c5f
2 changed files with 26 additions and 26 deletions
48
lc_ldap.py
48
lc_ldap.py
|
@ -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()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue