From 03339885ff609df651ce382b9f6e0966ed243dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B5=D0=BD=D0=B8=D1=81=20=D0=9A=D1=80=D0=B8=D0=B2?= =?UTF-8?q?=D0=BE=D1=87=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Wed, 22 Jul 2026 00:02:16 +0700 Subject: [PATCH] fix: replace tcs.sibcem.ru with sibcem.ru in AD user lookup --- instruct/handlers.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/instruct/handlers.py b/instruct/handlers.py index 5f00ca8..6edc7cd 100644 --- a/instruct/handlers.py +++ b/instruct/handlers.py @@ -24,23 +24,28 @@ router = Router() def _get_user_cn(user_id: str) -> str: """ Получить CN пользователя из AD по его user_id (email или логин). - user_id из TrueConf — это обычно email, например 'ds.krivochenko@sibcem.ru' + user_id из TrueConf — это обычно email, например 'ds.krivochenko@tcs.sibcem.ru' + Заменяет tcs.sibcem.ru на sibcem.ru для поиска в AD. """ from ldap3 import Server, Connection, ALL from config.config import AD_SERVER, AD_USER, AD_PASSWORD, AD_BASE from ldap3.utils.conv import escape_filter_chars try: + # Заменяем tcs.sibcem.ru на sibcem.ru + search_id = user_id.replace("@tcs.sibcem.ru", "@sibcem.ru") + short_username = search_id.split("@")[0] if "@" in search_id else search_id + safe_id = escape_filter_chars(search_id) + safe_short = escape_filter_chars(short_username) + server = Server(AD_SERVER, get_info=ALL) conn = Connection(server, user=AD_USER, password=AD_PASSWORD, auto_bind=True) - safe_id = escape_filter_chars(user_id) - short_username = user_id.split('@')[0] if '@' in user_id else user_id search_filter = ( f"(&(objectClass=user)(|" f"(mail={safe_id})" f"(userPrincipalName={safe_id})" - f"(userPrincipalName={escape_filter_chars(f'{short_username}@sibcem.ru')}))" - f"(sAMAccountName={escape_filter_chars(short_username)})))" + f"(sAMAccountName={safe_short}))" + f"))" ) conn.search(AD_BASE, search_filter, attributes=["cn", "sAMAccountName"]) if conn.entries: