diff options
author | Rob Crittenden <rcritten@redhat.com> | 2010-12-02 11:05:54 -0500 |
---|---|---|
committer | Adam Young <ayoung@redhat.com> | 2010-12-03 13:01:42 -0500 |
commit | 8a63315ef30ac1a8fdab1394601cd588a105f66d (patch) | |
tree | b6b149ee062c3c3ffcfc9e1246ce7ac03f86ca9e /ipalib/plugins/baseldap.py | |
parent | 867ac1f03d77d72b25037ddf7cacccf407ff531e (diff) | |
download | freeipa-8a63315ef30ac1a8fdab1394601cd588a105f66d.tar.gz freeipa-8a63315ef30ac1a8fdab1394601cd588a105f66d.tar.xz freeipa-8a63315ef30ac1a8fdab1394601cd588a105f66d.zip |
Provide list of available attributes for use in ACI UI.
Also include flag indicating whether the object is bindable. This will
be used to determine if the object can have a selfservice ACI.
ticket 446
Diffstat (limited to 'ipalib/plugins/baseldap.py')
-rw-r--r-- | ipalib/plugins/baseldap.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py index f6b992fdd..00ca89f4d 100644 --- a/ipalib/plugins/baseldap.py +++ b/ipalib/plugins/baseldap.py @@ -197,6 +197,8 @@ class LDAPObject(Object): uuid_attribute = '' attribute_members = {} rdnattr = None + # Can bind as this entry (has userPassword or krbPrincipalKey) + bindable = False container_not_found_msg = _('container entry (%(container)s) not found') parent_not_found_msg = _('%(parent)s: %(oname)s not found') @@ -293,14 +295,33 @@ class LDAPObject(Object): 'parent_object', 'container_dn', 'object_name', 'object_name_plural', 'object_class', 'object_class_config', 'default_attributes', 'label', 'hidden_attributes', 'uuid_attribute', 'attribute_members', 'name', - 'takes_params', 'rdn_attribute', + 'takes_params', 'rdn_attribute', 'bindable', ) + def __json__(self): + ldap = self.backend json_dict = dict( (a, getattr(self, a)) for a in self.json_friendly_attributes ) if self.primary_key: json_dict['primary_key'] = self.primary_key.name + objectclasses = self.object_class + if self.object_class_config: + config = ldap.get_ipa_config()[1] + objectclasses = config.get( + self.object_class_config, objectclasses + ) + # Get list of available attributes for this object for use + # in the ACI UI. + attrs = self.api.Backend.ldap2.schema.attribute_types(objectclasses) + attrlist = [] + # Go through the MUST first + for (oid, attr) in attrs[0].iteritems(): + attrlist.append(attr.names[0]) + # And now the MAY + for (oid, attr) in attrs[1].iteritems(): + attrlist.append(attr.names[0]) + json_dict['aciattrs'] = attrlist json_dict['methods'] = [m for m in self.methods] return json_dict |