fix: use ai@sibcem.ru when user has no mail in AD
This commit is contained in:
+12
-7
@@ -60,7 +60,7 @@ def get_user_cn(user_id: str) -> str | None:
|
||||
if entries:
|
||||
entry = entries[0]
|
||||
cn = str(entry.cn)
|
||||
mail = str(entry.mail) if 'mail' in entry else "N/A"
|
||||
mail = str(entry.mail) if 'mail' in entry else ""
|
||||
sam = str(entry.sAMAccountName) if 'sAMAccountName' in entry else "N/A"
|
||||
upn = str(entry.userPrincipalName) if 'userPrincipalName' in entry else "N/A"
|
||||
logger.info(f"AD found: cn={cn}, mail={mail}, sam={sam}, upn={upn}")
|
||||
@@ -86,7 +86,9 @@ def get_ad_user_info(user_id: str) -> dict | None:
|
||||
if entries:
|
||||
entry = entries[0]
|
||||
cn = str(entry.cn)
|
||||
mail = str(entry.mail) if 'mail' in entry else None
|
||||
raw_mail = str(entry.mail) if 'mail' in entry else ""
|
||||
# mail может быть "[]" (пустой LDAP объект), "" или "N/A" — фильтруем
|
||||
mail = raw_mail if raw_mail and raw_mail not in ("[]", "N/A", "") else None
|
||||
city = str(entry.l) if 'l' in entry else "Кемерово"
|
||||
return {"cn": cn, "mail": mail, "city": city}
|
||||
except Exception as e:
|
||||
@@ -106,16 +108,19 @@ async def create_sd_ticket_for_trueconf(user_id: str, cn: str) -> str | None:
|
||||
# Пытаемся получить информацию из AD
|
||||
ad_info = get_ad_user_info(user_id)
|
||||
|
||||
if ad_info:
|
||||
# Пользователь найден в AD
|
||||
requester_email = ad_info["mail"] or DEFAULT_REQUESTER
|
||||
if ad_info and ad_info.get("mail"):
|
||||
# Пользователь найден в AD и имеет email
|
||||
requester_email = ad_info["mail"]
|
||||
city = ad_info["city"]
|
||||
description = f"Пользователь {cn} ({user_id}) запросил инструкцию по Trueconf, но не имеет группы 2FA. Требуется выдача доступа."
|
||||
else:
|
||||
# Пользователь не найден в AD — создаём от ai@sibcem.ru
|
||||
# Пользователь не найден в AD ИЛИ не имеет email — создаём от ai@sibcem.ru
|
||||
requester_email = DEFAULT_REQUESTER
|
||||
city = "Кемерово"
|
||||
description = f"Пользователь {cn} ({user_id}) не найден в Active Directory. Требуется ручная проверка и выдача доступа к Trueconf."
|
||||
if ad_info and not ad_info.get("mail"):
|
||||
description = f"Пользователь {cn} ({user_id}) не найден в Active Directory (нет email). Требуется ручная проверка и выдача доступа к Trueconf."
|
||||
else:
|
||||
description = f"Пользователь {cn} ({user_id}) не найден в Active Directory. Требуется ручная проверка и выдача доступа к Trueconf."
|
||||
|
||||
try:
|
||||
ticket_id = await create_ticket_in_sd(requester_email, subject, description, city)
|
||||
|
||||
Reference in New Issue
Block a user