AD: поиск по нескольким OU (AD_BASES)
- config.py: AD_BASE -> AD_BASES (кортеж OU) - utils/ad_search.py: новая утилита для поиска по всем OU - utils/ad_checker.py: использовать ad_search - utils/otp_service.py: использовать ad_search - lk/handlers.py: использовать ad_search - transcription_bot/handlers.py: использовать ad_search - service_desk/handlers.py: использовать ad_search - instruct/handlers.py: использовать ad_search - photo_bot/ad_helper.py: использовать ad_search - photo_bot/check_ad_photo.py: использовать ad_search - check_ad_2fa.py: использовать ad_search - debug_ad_filter.py: обновить для AD_BASES - lk/test_lk_payslip.py: обновить для AD_BASES
This commit is contained in:
+16
-17
@@ -70,23 +70,22 @@ sd_sessions = {}
|
||||
# ================================================
|
||||
# БИЗНЕС-ЛОГИКА
|
||||
# ================================================
|
||||
def get_ad_user_sync(login: str):
|
||||
try:
|
||||
server = Server(AD_SERVER, get_info=ALL)
|
||||
conn = Connection(server, user=AD_USER, password=AD_PASSWORD, auto_bind=True)
|
||||
conn.search(search_base=AD_BASE, search_filter=f"(sAMAccountName={login})", attributes=["displayName", "mail", "l", "userAccountControl"])
|
||||
if conn.entries:
|
||||
user = conn.entries[0]
|
||||
uac = user.userAccountControl.value if 'userAccountControl' in user else 0
|
||||
return {
|
||||
"name": user.displayName.value if 'displayName' in user else login,
|
||||
"mail": user.mail.value if 'mail' in user else None,
|
||||
"city": user.l.value if 'l' in user else "Кемерово",
|
||||
"is_disabled": bool(uac & 2)
|
||||
}
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка LDAP: {e}")
|
||||
return None
|
||||
def get_ad_user_sync(login: str):
|
||||
try:
|
||||
from utils.ad_search import search_by_login
|
||||
entries = search_by_login(login, ["displayName", "mail", "l", "userAccountControl"])
|
||||
if entries:
|
||||
user = entries[0]
|
||||
uac = user.userAccountControl.value if 'userAccountControl' in user else 0
|
||||
return {
|
||||
"name": user.displayName.value if 'displayName' in user else login,
|
||||
"mail": user.mail.value if 'mail' in user else None,
|
||||
"city": user.l.value if 'l' in user else "Кемерово",
|
||||
"is_disabled": bool(uac & 2)
|
||||
}
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка LDAP: {e}")
|
||||
return None
|
||||
|
||||
async def generate_smart_subject(text: str) -> str:
|
||||
import re, traceback, importlib.util, httpx
|
||||
|
||||
Reference in New Issue
Block a user