@@ -55,6 +55,7 @@ def get_rooms(config: Config) -> Optional[List[Room]]:
55
55
base_dn_groups = ldap_config .get ("base_dn_groups" , None )
56
56
base_dn_users = ldap_config .get ("base_dn_users" , None )
57
57
user_filter = ldap_config .get ("user_filter" , None )
58
+ username_attribute = ldap_config .get ("username_attribute" , "uid" )
58
59
if (not homeserver
59
60
or not ldap_config
60
61
or not base_dn_groups
@@ -92,8 +93,8 @@ def get_rooms(config: Config) -> Optional[List[Room]]:
92
93
93
94
rooms : List [Room ] = []
94
95
for group in groups :
95
- group_members = get_group_members (connection , groups .get (group ), base_dn_users , user_filter )
96
- group_owners = get_group_members (connection , owner_groups .get (group ), base_dn_users , user_filter ) if group in owner_groups else []
96
+ group_members = get_group_members (connection , groups .get (group ), base_dn_users , username_attribute , user_filter )
97
+ group_owners = get_group_members (connection , owner_groups .get (group ), base_dn_users , username_attribute , user_filter ) if group in owner_groups else []
97
98
98
99
room_members : List [RoomMember ] = []
99
100
for group_member in group_members :
@@ -108,7 +109,7 @@ def get_rooms(config: Config) -> Optional[List[Room]]:
108
109
return rooms
109
110
110
111
111
- def get_group_members (connection : Connection , group_dn : str , user_dn : str , search_filter : str = '(objectClass=*)' )\
112
+ def get_group_members (connection : Connection , group_dn : str , user_dn : str , username_attribute : str , search_filter : str = '(objectClass=*)' )\
112
113
-> List [Tuple [str , bool ]]:
113
114
"""Return members of a given user-group.
114
115
@@ -120,10 +121,10 @@ def get_group_members(connection: Connection, group_dn: str, user_dn: str, searc
120
121
"""
121
122
members : List [Tuple [str , bool ]] = []
122
123
search = f"(&(memberOf={ group_dn } ){ search_filter } )"
123
- connection .search (user_dn , search , attributes = ["uid" , "nsAccountLock" ])
124
+ connection .search (user_dn , search , attributes = [username_attribute , "nsAccountLock" ])
124
125
entries = connection .entries
125
126
for element in entries :
126
- members .append ((str (element . uid ), element .nsAccountLock .value ))
127
+ members .append ((str (getattr ( element , username_attribute ) ), element .nsAccountLock .value ))
127
128
return members
128
129
129
130
0 commit comments