diff --git a/ldapcherry/__init__.py b/ldapcherry/__init__.py index a948574..b28eaaa 100644 --- a/ldapcherry/__init__.py +++ b/ldapcherry/__init__.py @@ -486,7 +486,11 @@ def _merge_user_attrs(self, attrs_backend, attrs_out, backend_name): """ for attr in attrs_backend: if attr in self.attributes.backend_attributes[backend_name]: - attrid = self.attributes.backend_attributes[backend_name][attr] + attr_desc = self.attributes.backend_attributes[backend_name][attr] + if type(attr_desc) is list: + attrid = attr_desc[0]['id'] + else: + attrid = attr_desc['id'] if attrid not in attrs_out: attrs_out[attrid] = attrs_backend[attr] diff --git a/ldapcherry/attributes.py b/ldapcherry/attributes.py index 5ddea82..dee4573 100644 --- a/ldapcherry/attributes.py +++ b/ldapcherry/attributes.py @@ -61,9 +61,27 @@ def __init__(self, attributes_file): self.key = attrid for b in attr['backends']: self.backends.add(b) + backend_attr = attr['backends'][b] if b not in self.backend_attributes: self.backend_attributes[b] = {} - self.backend_attributes[b][attr['backends'][b]] = attrid + if backend_attr in self.backend_attributes[b]: + if type(self.backend_attributes[b][backend_attr]) \ + is not list: + self.backend_attributes[b][backend_attr] = [ + self.backend_attributes[b][backend_attr], + ] + + self.backend_attributes[b][backend_attr].append( + { + 'id':attrid, + 'type': attr['type'] + } + ) + else: + self.backend_attributes[b][backend_attr] = { + 'id':attrid, + 'type': attr['type'] + } if 'search_displayed' in attr and attr['search_displayed']: self.displayed_attributes[attrid] = attr