fountain issueshttps://gitlab.hrz.tu-chemnitz.de/urz-django/fountain/-/issues2023-06-28T11:19:06+02:00https://gitlab.hrz.tu-chemnitz.de/urz-django/fountain/-/issues/10Erweiterung: get_user_by_phonenumber2023-06-28T11:19:06+02:00Ronny KramerErweiterung: get_user_by_phonenumberIch wünsche mir, dass man in der Ldap Klasse einen Nutzer auch per TelefonNummer abrufen kann.
Use Case:
```
attrs = l.get_user_by_phonenumber('36266', attributes=['givenName', 'sn'])
print(attrs['givenName'][0],...Ich wünsche mir, dass man in der Ldap Klasse einen Nutzer auch per TelefonNummer abrufen kann.
Use Case:
```
attrs = l.get_user_by_phonenumber('36266', attributes=['givenName', 'sn'])
print(attrs['givenName'][0], attrs['sn'][0])
```
Am liebsten hätte ich auch die Funktion `get_attributes_by_phonenumber` aber der Kommentar sagt ja "Do not use it.", daher habe ich es so hässlich gemacht. :)
Hier eine Beispiellösung, die sicher mit weniger kopiertem Code geht, z.B. indem die search_kwargs als Parameter möglich sind.
```
def get_user_by_phonenumber(self, phonenumber, attributes=ldap3.ALL_ATTRIBUTES):
"""
Returns the specified user from LDAP, without doing any conversion.
:rtype: dict
"""
cleaned_phonenumber = escape_filter_chars(phonenumber)
search_kwargs = {
'search_base': self.LDAP_PARAMS['base'],
'search_filter': '(telephoneNumber=%s)' % cleaned_phonenumber,
'attributes': attributes,
}
conn = self.connection
if not conn:
return {}
try:
result = conn.search(**search_kwargs)
except LDAPException:
# Try one more time before raising the exception
# @TODO: Catch exception in User.pre_save()
try:
conn.unbind()
except:
pass
conn.bind()
result = conn.search(**search_kwargs)
if not result:
return {}
else:
return conn.response[0]['attributes']
```https://gitlab.hrz.tu-chemnitz.de/urz-django/fountain/-/issues/3LDAP timeout2017-10-21T04:41:50+02:00Daniel KlaffenbachLDAP timeoutReduce/define LDAP timeoutReduce/define LDAP timeout