fix: don't escape @ in email for LDAP filter
This commit is contained in:
@@ -41,14 +41,16 @@ def _get_user_cn(user_id: str) -> str:
|
||||
server = Server(AD_SERVER, get_info=ALL)
|
||||
conn = Connection(server, user=AD_USER, password=AD_PASSWORD, auto_bind=True)
|
||||
|
||||
# Фильтр как в lk/handlers.py — работает
|
||||
safe_user_id = escape_filter_chars(search_id)
|
||||
# escape_filter_chars экранирует @ и . в email, что ломает фильтр.
|
||||
# Для email и UPN передаём raw. Для sAMAccountName — экранируем.
|
||||
safe_sam = escape_filter_chars(short_username)
|
||||
|
||||
search_filter = (
|
||||
f"(&(objectClass=user)(|"
|
||||
f"(mail={safe_user_id})"
|
||||
f"(userPrincipalName={safe_user_id})"
|
||||
f"(userPrincipalName={escape_filter_chars(f'{short_username}@sibcem.ru')}))"
|
||||
f"(sAMAccountName={escape_filter_chars(short_username)})))"
|
||||
f"(mail={search_id})"
|
||||
f"(userPrincipalName={search_id})"
|
||||
f"(userPrincipalName={short_username}@sibcem.ru))"
|
||||
f"(sAMAccountName={safe_sam})))"
|
||||
)
|
||||
logger.info(f"AD filter: {search_filter}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user