Skip to content

Commit 5d72fc4

Browse files
committed
fix ldap employeenumber
1 parent bf7f9f9 commit 5d72fc4

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

.debpkg/DEBIAN/postinst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/bin/bash
2-
/var/lib/sesame-daemon/backends-modules/openldap/update.sh
2+
/var/lib/sesame-daemon/backends-modules/openldap/update.sh

src/lib/backend_ldap_utils.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,17 @@ def upsert_entry(l,entity):
124124
# lentree n existe pas
125125
#creation de la liste
126126
entry=u.make_entry_array_without_empty(entity)
127+
# employeeNumber est en général SINGLE-VALUE dans le schéma LDAP.
128+
# En cas de payload amont qui fournirait plusieurs valeurs,
129+
# on force ici une seule valeur pour éviter une violation de contrainte.
130+
if isinstance(entry.get('employeeNumber'), list):
131+
for item in entry['employeeNumber']:
132+
s = str(item).strip()
133+
if s != "":
134+
entry['employeeNumber'] = s
135+
break
136+
else:
137+
entry['employeeNumber'] = ""
127138
## Ajout objectclass
128139
entry['objectclass']=u.make_objectclass(entity,r)
129140
dn=compose_dn(entity)
@@ -139,7 +150,26 @@ def upsert_entry(l,entity):
139150
print(u.returncode(1,"many identities found"))
140151
exit(1)
141152
entry=u.make_entry_array_without_empty(entity);
153+
# Idem: forcer employeeNumber/employeenumber à une seule valeur avant conversion LDIF.
154+
# NB: `complete_entry()` lower-case ensuite les clés, d'où la gestion des deux cas.
155+
if isinstance(entry.get('employeeNumber'), list):
156+
for item in entry['employeeNumber']:
157+
s = str(item).strip()
158+
if s != "":
159+
entry['employeeNumber'] = s
160+
break
161+
else:
162+
entry['employeeNumber'] = ""
163+
142164
entry=complete_entry(entry,r);
165+
if isinstance(entry.get('employeenumber'), list):
166+
for item in entry['employeenumber']:
167+
s = str(item).strip()
168+
if s != "":
169+
entry['employeenumber'] = s
170+
break
171+
else:
172+
entry['employeenumber'] = ""
143173
dn = compose_dn(entity)
144174
entry['objectclass'] = u.make_objectclass(entity,r)
145175
entry = convert_to_utf8(entry)

0 commit comments

Comments
 (0)