summaryrefslogtreecommitdiffstats
path: root/ipalib/plugins/baseldap.py
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2010-12-02 11:05:54 -0500
committerAdam Young <ayoung@redhat.com>2010-12-03 13:01:42 -0500
commit8a63315ef30ac1a8fdab1394601cd588a105f66d (patch)
treeb6b149ee062c3c3ffcfc9e1246ce7ac03f86ca9e /ipalib/plugins/baseldap.py
parent867ac1f03d77d72b25037ddf7cacccf407ff531e (diff)
downloadfreeipa-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.py23
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