phi/src/phi/ldap/user.py

56 lines
1.2 KiB
Python

from phi.ldap.entry import get_entry_by_uid, get_entries_by_ou, \
add_entry, delete_entry
shown_keys = ['uid', 'mail', 'createTimestamp', 'modifyTimestamp']
def flatten_attribute(attr):
if isinstance(attr, list) and len(attr)==1:
return attr[0]
else:
return attr
def flatten_user(entry):
return {k: flatten_attribute(attr)
for k, attr in entry['attributes'].items()
if k in shown_keys}
def get_user_by_uid(client, uid):
entry = get_entry_by_uid(client, uid)
if not entry:
return None
return flatten_user(entry)
def get_users_by_ou(client, ou):
entries = get_entries_by_ou(client, ou)
users = [flatten_user(entry) for entry in entries]
return users
def add_user(client, uid, cn, sn, mail):
dn = 'uid={},ou=Hackers,{}'.format(uid, client.base_dn)
attributes={
'objectClass': [
'inetOrgPerson',
'organizationalPerson',
'person', 'top'
],
'cn': cn,
'sn': sn,
'mail': mail
}
add_entry(client, dn, attributes)
def delete_user(client, uid):
dn = 'uid={},ou=Hackers,{}'.format(uid, client.base_dn)
delete_entry(client, dn)