X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fdirectory%2Fldap%2FAbstractLdapDirectory.java;h=5dffcb63aa61550cc7606e837c835c678a2ca5b7;hb=d2fc7fa541b15f81c9372813f6ea5ba58c700271;hp=1ec6c9de8eebb886c6edcddff4464c530cd4b0bd;hpb=e4a5502f49e2a2c35d16bbc96efdffead1362a76;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/directory/ldap/AbstractLdapDirectory.java b/org.argeo.cms/src/org/argeo/cms/directory/ldap/AbstractLdapDirectory.java index 1ec6c9de8..5dffcb63a 100644 --- a/org.argeo.cms/src/org/argeo/cms/directory/ldap/AbstractLdapDirectory.java +++ b/org.argeo.cms/src/org/argeo/cms/directory/ldap/AbstractLdapDirectory.java @@ -299,6 +299,17 @@ public abstract class AbstractLdapDirectory implements CmsDirectory, XAResourceP return directoryDao.doGetDirectHierarchyUnits(baseDn, functionalOnly); } + @Override + public HierarchyUnit getDirectChild(Type type) { + // TODO factorise with hierarchy unit? + return switch (type) { + case ROLES -> getDirectoryDao().doGetHierarchyUnit((LdapName) getBaseDn().add(getSystemRoleBaseRdn())); + case PEOPLE -> getDirectoryDao().doGetHierarchyUnit((LdapName) getBaseDn().add(getUserBaseRdn())); + case GROUPS -> getDirectoryDao().doGetHierarchyUnit((LdapName) getBaseDn().add(getGroupBaseRdn())); + case FUNCTIONAL -> throw new IllegalArgumentException("Type must be a technical type"); + }; + } + @Override public String getHierarchyUnitName() { return getName(); @@ -385,8 +396,7 @@ public abstract class AbstractLdapDirectory implements CmsDirectory, XAResourceP for (int i = 0; i < segments.length; i++) { String segment = segments[i]; // TODO make attr names configurable ? - String attr = getDirectory().getRealm().isPresent()/* IPA */ ? LdapAttr.cn.name() - : LdapAttr.ou.name(); + String attr = getDirectory().getRealm().isPresent()/* IPA */ ? LdapAttr.cn.name() : LdapAttr.ou.name(); if (parentRdn != null) { if (getUserBaseRdn().equals(parentRdn)) attr = LdapAttr.uid.name();