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)
|
server = Server(AD_SERVER, get_info=ALL)
|
||||||
conn = Connection(server, user=AD_USER, password=AD_PASSWORD, auto_bind=True)
|
conn = Connection(server, user=AD_USER, password=AD_PASSWORD, auto_bind=True)
|
||||||
|
|
||||||
# Фильтр как в lk/handlers.py — работает
|
# escape_filter_chars экранирует @ и . в email, что ломает фильтр.
|
||||||
safe_user_id = escape_filter_chars(search_id)
|
# Для email и UPN передаём raw. Для sAMAccountName — экранируем.
|
||||||
|
safe_sam = escape_filter_chars(short_username)
|
||||||
|
|
||||||
search_filter = (
|
search_filter = (
|
||||||
f"(&(objectClass=user)(|"
|
f"(&(objectClass=user)(|"
|
||||||
f"(mail={safe_user_id})"
|
f"(mail={search_id})"
|
||||||
f"(userPrincipalName={safe_user_id})"
|
f"(userPrincipalName={search_id})"
|
||||||
f"(userPrincipalName={escape_filter_chars(f'{short_username}@sibcem.ru')}))"
|
f"(userPrincipalName={short_username}@sibcem.ru))"
|
||||||
f"(sAMAccountName={escape_filter_chars(short_username)})))"
|
f"(sAMAccountName={safe_sam})))"
|
||||||
)
|
)
|
||||||
logger.info(f"AD filter: {search_filter}")
|
logger.info(f"AD filter: {search_filter}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user