Limiter le test d’existence à l’établissement

This commit is contained in:
2025-08-18 16:30:13 +02:00
parent cd1544c3ab
commit ef72be02e6

View File

@ -72,7 +72,7 @@ index 0db4982..290d66e 100755
nscd_start()
log.del_lock()
diff --git usr/lib/python3/dist-packages/scribe/eoleldap.py usr/lib/python3/dist-packages/scribe/eoleldap.py
index 45ec338..9b80f82 100644
index 45ec338..dd819eb 100644
--- usr/lib/python3/dist-packages/scribe/eoleldap.py
+++ usr/lib/python3/dist-packages/scribe/eoleldap.py
@@ -8,21 +8,21 @@
@ -98,7 +98,7 @@ index 45ec338..9b80f82 100644
def is_system_user(user):
"""
indique si le login proposé est déjà un utilisateur système
@@ -120,60 +120,68 @@ class _Ldap(object):
@@ -120,75 +120,83 @@ class _Ldap(object):
class _LdapEntry(object):
"""
classe de base pour gérer les entrées ldap
@ -169,15 +169,62 @@ index 45ec338..9b80f82 100644
return False
return True
def _test_available_name(self, name):
- def _test_available_name(self, name):
+ def _test_available_name(self, name, etab=None):
"""
Test la disponibilité d'un nom
raise une exception si pas disponible
"""
- if self._is_group(name):
+ if self._is_group(name, etab=etab):
raise LdapExistingGroup
- elif self._is_user(name):
+ elif self._is_user(name, etab=etab):
raise LdapExistingUser
- elif is_system_user(name):
+ elif is_system_user(name, etab=etab):
raise SystemExistingUser
return True
def get_niveau(self, classe):
"""
Retourne le niveau associé à la classe
"""
self.ldap_admin.connect()
res = self._get_niveau(classe)
self.ldap_admin.close()
diff --git usr/lib/python3/dist-packages/scribe/eoleuser.py usr/lib/python3/dist-packages/scribe/eoleuser.py
index 05569fd..7a8d46c 100644
index 05569fd..b4a4fb8 100644
--- usr/lib/python3/dist-packages/scribe/eoleuser.py
+++ usr/lib/python3/dist-packages/scribe/eoleuser.py
@@ -259,26 +259,26 @@ class User(LdapEntry):
Ajoute un utilisateur
**args
"""
self.filter_must_args(args)
self.filter_may_args(args)
#force login in lower case #33178
login = args['login'].lower()
args['login'] = login
if match("^[a-zA-Z0-9.\-_]*$", login) is None:
raise BadLogin("Login \"%s\" invalide !" % login)
- self._test_available_name(login)
args.setdefault('etab', None)
if args['etab'] is None and 'classe' in args:
args['etab'] = self.get_etab_from_group(args['classe'])
if args['etab'] == num_etab:
args['etab'] = None
+ self._test_available_name(login, etab=args['etab'])
self.cache_etab['login'][login] = args['etab']
# FIXME : fixes #327 mais est-ce le bon endroit ?
if tool.not_empty(args, 'date'):
args['date'] = tool.deformate_date(args['date'])
if 'exp_date' in args: # Can be jj/mm/aaaa or empty string
if LDAP_MODE == 'openldap':
args['exp_unix_days'] = str(tool.get_days_from_epoch(args['exp_date'])) if args['exp_date'] else '-1'
else:
args['exp_nt_time'] = str(tool.get_nt_time_from_date(args['exp_date'])) if args['exp_date'] else '0'
args.pop('exp_date')
@@ -536,31 +536,32 @@ class User(LdapEntry):
data = [((MOD_REPLACE, attribut, value))]
self.ldap_admin._modify(user_dn, data)