36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from ldap3 import Server, Connection
|
|
|
|
from handlers.Handler import Handler
|
|
|
|
|
|
class LdapHandler(Handler):
|
|
def __init__(self, conf):
|
|
self.base = 'dc=su,dc=se'
|
|
self.entbase = conf['entbase']
|
|
self.url = conf['url'].rstrip('/')
|
|
self.conn = Connection(self.url,
|
|
user=conf['user'],
|
|
password=conf['password'],
|
|
read_only=True,
|
|
auto_range=True,
|
|
auto_bind=True)
|
|
|
|
def search(self, query):
|
|
# possibly relevant attributes:
|
|
# ['uid', 'eduPersonEntitlement', 'memberOf']
|
|
result = self.conn.search(
|
|
self.base,
|
|
query,
|
|
attributes=['uid'])
|
|
out = set()
|
|
if not result:
|
|
return out
|
|
for item in self.conn.entries:
|
|
out.add(str(item.uid))
|
|
return out
|
|
|
|
def getEntitledUsers(self, entitlement):
|
|
fqe = self.entbase + entitlement
|
|
query = '(eduPersonEntitlement={})'.format(fqe)
|
|
return self.search(query)
|