import_ldap_group_users : fallback UPN/sam@sanef.com si mail absent, inclut comptes admin sans mail
This commit is contained in:
parent
2a4c785535
commit
7ec7c49c34
@ -53,26 +53,43 @@ def fetch_group_members(cfg, group_dn):
|
|||||||
conn = Connection(server, user=cfg["bind_dn"], password=cfg["bind_pwd"],
|
conn = Connection(server, user=cfg["bind_dn"], password=cfg["bind_pwd"],
|
||||||
auto_bind=True)
|
auto_bind=True)
|
||||||
|
|
||||||
# Filter LDAP : user actif, membre direct du groupe
|
# Filter LDAP : membre direct du groupe (inclut comptes admin, meme sans mail)
|
||||||
search_filter = (
|
search_filter = (
|
||||||
f"(&(objectClass=user)(objectCategory=person)"
|
f"(&(objectClass=user)(objectCategory=person)"
|
||||||
f"(!(userAccountControl:1.2.840.113556.1.4.803:=2))"
|
|
||||||
f"(memberOf={group_dn}))"
|
f"(memberOf={group_dn}))"
|
||||||
)
|
)
|
||||||
conn.search(cfg["base_dn"], search_filter, search_scope=SUBTREE,
|
conn.search(cfg["base_dn"], search_filter, search_scope=SUBTREE,
|
||||||
attributes=["sAMAccountName", "displayName", "mail",
|
attributes=["sAMAccountName", "displayName", "mail",
|
||||||
"distinguishedName", "userAccountControl"])
|
"userPrincipalName", "distinguishedName",
|
||||||
|
"userAccountControl"])
|
||||||
|
|
||||||
members = []
|
members = []
|
||||||
for entry in conn.entries:
|
for entry in conn.entries:
|
||||||
email = str(entry.mail) if entry.mail else None
|
sam = str(entry.sAMAccountName) if entry.sAMAccountName else None
|
||||||
if not email:
|
if not sam:
|
||||||
|
print(f" [SKIP] Entry sans sAMAccountName : {entry.entry_dn}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Priorite email : mail > userPrincipalName > fallback sam@sanef.com
|
||||||
|
email = None
|
||||||
|
if entry.mail and str(entry.mail).strip():
|
||||||
|
email = str(entry.mail).strip().lower()
|
||||||
|
elif entry.userPrincipalName and str(entry.userPrincipalName).strip():
|
||||||
|
email = str(entry.userPrincipalName).strip().lower()
|
||||||
|
else:
|
||||||
|
email = f"{sam.lower()}@sanef.com"
|
||||||
|
print(f" [INFO] {sam} sans mail AD, fallback : {email}")
|
||||||
|
|
||||||
|
# Verifier si compte desactive (pour info seulement)
|
||||||
|
uac = entry.userAccountControl.value if entry.userAccountControl else 0
|
||||||
|
if isinstance(uac, int) and uac & 0x2:
|
||||||
|
print(f" [WARN] {sam} compte AD DESACTIVE (UAC={uac}) — importe quand meme")
|
||||||
|
|
||||||
members.append({
|
members.append({
|
||||||
"username": str(entry.sAMAccountName).lower(),
|
"username": sam.lower(),
|
||||||
"display_name": str(entry.displayName) if entry.displayName else str(entry.sAMAccountName),
|
"display_name": str(entry.displayName) if entry.displayName else sam,
|
||||||
"email": email.lower(),
|
"email": email,
|
||||||
"dn": str(entry.distinguishedName),
|
"dn": str(entry.entry_dn),
|
||||||
})
|
})
|
||||||
conn.unbind()
|
conn.unbind()
|
||||||
return members
|
return members
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user