From 15f93a026914b55e52f147e6aa53392434652522 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 21 Sep 2022 07:52:09 +0200 Subject: [PATCH] Cosmetic improvements --- .../src/org/argeo/api/uuid/RandomUuid.java | 3 +-- .../src/org/argeo/cms/CmsUserManager.java | 7 +++++++ .../directory/AbstractDirectoryContent.java | 3 ++- .../cms/internal/auth/CmsUserManagerImpl.java | 18 ++++++++++++++++++ .../argeo/util/directory/ldap/LdapEntry.java | 7 ++++++- 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java b/org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java index b65772e9b..79b2b7032 100644 --- a/org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java +++ b/org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java @@ -14,8 +14,7 @@ public final class RandomUuid extends TypedUuid { } /** - * Always returns true since random UUIDs are by definition not - * opaque. + * Always returns true since random UUIDs are by definition opaque. */ @Override public final boolean isOpaque() { diff --git a/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java b/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java index 4017c7ebf..c013feed6 100644 --- a/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java +++ b/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java @@ -54,6 +54,13 @@ public interface CmsUserManager { /** Search among groups including system roles and users if needed */ List listGroups(String filter, boolean includeUsers, boolean includeSystemRoles); +// /** +// * Lists functional accounts, that is users with regular access to the system +// * under this functional hierarchy unit (which probably have technical direct +// * sub hierarchy units), excluding groups which are not explicitly users. +// */ +// Set listAccounts(HierarchyUnit hierarchyUnit, boolean deep); + /* * EDITION */ diff --git a/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java b/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java index a14ada79a..42b0a0804 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java @@ -34,6 +34,8 @@ abstract class AbstractDirectoryContent extends AbstractContent { public Optional get(QName key, Class clss) { String attrName = key.getLocalPart(); Object value = doGetProperties().get(attrName); + if (Long.class.isAssignableFrom(clss)) + return Optional.of((A) (Long) Long.parseLong(value.toString())); if (value == null) return Optional.empty(); // TODO deal with type and multiple @@ -92,5 +94,4 @@ abstract class AbstractDirectoryContent extends AbstractContent { return provider; } - } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java index a1bc1efc8..c8e137ee9 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java @@ -139,6 +139,24 @@ public class CmsUserManagerImpl implements CmsUserManager { addUsers(users, group, filter); return users; } + + + +// @Override +// public Set listAccounts(HierarchyUnit hierarchyUnit, boolean deep) { +// if(!hierarchyUnit.isFunctional()) +// throw new IllegalArgumentException("Hierarchy unit "+hierarchyUnit.getBase()+" is not functional"); +// UserDirectory directory = (UserDirectory)hierarchyUnit.getDirectory(); +// Set res = new HashSet<>(); +// for(HierarchyUnit technicalHu:hierarchyUnit.getDirectHierarchyUnits(false)) { +// if(technicalHu.isFunctional()) +// continue; +// for(Role role:directory.getHierarchyUnitRoles(technicalHu, null, false)) { +// if(role) +// } +// } +// return res; +// } /** Recursively add users to list */ private void addUsers(Set users, Group group, String filter) { diff --git a/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java b/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java index cf293cee2..f34de7eb5 100644 --- a/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java +++ b/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java @@ -1,6 +1,7 @@ package org.argeo.util.directory.ldap; import java.util.Arrays; +import java.util.Collection; import java.util.Dictionary; import java.util.List; import java.util.Set; @@ -29,7 +30,11 @@ public interface LdapEntry { /* * UTILITIES */ - public static void addObjectClasses(Dictionary properties, Set objectClasses) { + /** + * Convert a collection of object classes to the format expected by an LDAP + * backend. + */ + public static void addObjectClasses(Dictionary properties, Collection objectClasses) { String value = properties.get(LdapAttrs.objectClasses.name()).toString(); Set currentObjectClasses = new TreeSet<>(Arrays.asList(value.toString().split("\n"))); currentObjectClasses.addAll(objectClasses); -- 2.30.2