[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
|
@ -46,12 +46,12 @@ def ip_of_mid(mid):
|
||||||
def strip_accents(a):
|
def strip_accents(a):
|
||||||
""" Supression des accents de la chaîne fournie"""
|
""" Supression des accents de la chaîne fournie"""
|
||||||
res = normalize('NFKD', a).encode('ASCII', 'ignore')
|
res = normalize('NFKD', a).encode('ASCII', 'ignore')
|
||||||
return res
|
return unicode(res)
|
||||||
|
|
||||||
def strip_spaces(a):
|
def strip_spaces(a):
|
||||||
""" Suppression des espaces et des apostrophes"""
|
""" Suppression des espaces et des apostrophes"""
|
||||||
res = a.copy()
|
res = a.copy()
|
||||||
res.replace(' ', '_').replace("'", '')
|
res.replace(u' ', u'_').replace(u"'", u'')
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def mailexist(mail):
|
def mailexist(mail):
|
||||||
|
|
48
lc_ldap.py
48
lc_ldap.py
|
@ -31,7 +31,7 @@
|
||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
from __future__ import with_statement
|
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 ldap.modlist import addModlist, modifyModlist
|
||||||
from Levenshtein import jaro
|
from Levenshtein import jaro
|
||||||
sys.path.append('/usr/scripts/gestion')
|
sys.path.append('/usr/scripts/gestion')
|
||||||
|
@ -582,35 +582,35 @@ class adherent(proprio):
|
||||||
if u'posixAccount' in self.attrs['objectClass']:
|
if u'posixAccount' in self.attrs['objectClass']:
|
||||||
return self.attrs['uid'][0]
|
return self.attrs['uid'][0]
|
||||||
elif login:
|
elif login:
|
||||||
nom = strip_accents(self.attrs['nom'][0]).lower()
|
fn = crans_utils.strip_accents(self.attrs['prenom'][0].capitalize())
|
||||||
login = strip_accents(login).lower()
|
ln = crans_utils.strip_accents(self.attrs['nom'][0].capitalize())
|
||||||
if jaro(nom, login) < 0.75:
|
login = crans_utils.strip_accents(login).lower()
|
||||||
raise ValueError("L'uid est trop différent du nom (%s -> %s)" % (uid, self.attrs['nom'][0]))
|
if jaro(ln.lower(), login) < 0.75 and jaro(fn.lower() + ' ' + ln.lower(), login) < 0.75:
|
||||||
if not re.match('[a-z][-a-z]{1,15}'):
|
raise ValueError("Le login est trop différent du nom (%s -> %s)" %
|
||||||
raise ValueError("Seules les lettres non accentuées et le - sont acceptés pour le login")
|
(login, self.attrs['nom'][0]))
|
||||||
if mailexist(login):
|
if not re.match('^[a-z][-a-z]{1,15}$', login):
|
||||||
raise ValueError(u"Login existant ou correspondant à un alias mail.", 1)
|
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):
|
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):
|
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['homeDirectory'] = [home]
|
||||||
self._modifs['mail'] = [login]
|
self._modifs['mail'] = [login]
|
||||||
self._modifs['uid' ] = [login]
|
self._modifs['uid' ] = [login]
|
||||||
fn = strip_accents(self.attrs['prenom'].capitalize())
|
calias = crans_utils.strip_spaces(fn) + u'.' + crans_utils.strip_spaces(ln)
|
||||||
ln = strip_accents(self.attrs['nom'].capitalize()))
|
if crans_utils.mailexist(calias):
|
||||||
calias = strip_spaces(fn) + '.' + strip_spaces(ln)
|
|
||||||
if mailexists(calias):
|
|
||||||
calias = login
|
calias = login
|
||||||
self._modifs['canonicalAlias'] = [calias]
|
self._modifs['canonicalAlias'] = [calias]
|
||||||
self._modifs['objectClass'] = ['adherent', 'cransAccount', 'posixAccount', 'shadowAccount']
|
self._modifs['objectClass'] = [u'adherent', u'cransAccount', u'posixAccount', u'shadowAccount']
|
||||||
self._modifs['cn'] = fn + ' ' + ln
|
self._modifs['cn'] = [ fn + u' ' + ln ]
|
||||||
self._modifs['loginShell'] = [ shel]
|
self._modifs['loginShell'] = [unicode(shell)]
|
||||||
self._modifs['userPassword'] = [hash_pass]
|
self._modifs['userPassword'] = [unicode(hash_pass)]
|
||||||
|
|
||||||
if uidNumber:
|
if uidNumber:
|
||||||
if self.conn.search('(uidNumber=%s)' % uidNumber):
|
if self.conn.search('(uidNumber=%s)' % uidNumber):
|
||||||
|
@ -623,7 +623,7 @@ class adherent(proprio):
|
||||||
if not self.conn.search('(uidNumber=%s)' % uidNumber):
|
if not self.conn.search('(uidNumber=%s)' % uidNumber):
|
||||||
break
|
break
|
||||||
if not len(pool_uid):
|
if not len(pool_uid):
|
||||||
raise ValueError(u"Plus d'uid disponibles !")
|
raise ValueError("Plus d'uid disponibles !")
|
||||||
|
|
||||||
## try:
|
## try:
|
||||||
## self.lock('uidNumber', str(uidNumber))
|
## 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 !
|
## # Quelqu'un nous a piqué l'uid que l'on venait de choisir !
|
||||||
## return self.compte(login, uidNumber, hash_pass, shell)
|
## return self.compte(login, uidNumber, hash_pass, shell)
|
||||||
|
|
||||||
self._modifs['uidNumber'] = [str(uidNumber)]
|
self._modifs['uidNumber'] = [unicode(uidNumber)]
|
||||||
self._modifs['gidNumber'] = [str(config.gid)]
|
self._modifs['gidNumber'] = [unicode(config.gid)]
|
||||||
self._modifs['gecos'] = cn + ',,,'
|
self._modifs['gecos'] = self._modifs['cn'][0] + u',,,'
|
||||||
|
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue