diff --git a/patches.d/scribe-backend.patch b/patches.d/scribe-backend.patch index 863d8d6..5ab8a2c 100644 --- a/patches.d/scribe-backend.patch +++ b/patches.d/scribe-backend.patch @@ -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)