From de8f04a41db19968896b15cd7f43c819a28e7158 Mon Sep 17 00:00:00 2001 From: Mathieu Date: Sat, 12 Nov 2022 08:14:34 +0100 Subject: [PATCH] Make CmsUserManager an API. --- org.argeo.api.cms/bnd.bnd | 3 ++- .../argeo/api/cms/directory}/CmsUserManager.java | 9 ++------- .../argeo/cms/integration/CmsTokenServlet.java | 2 +- org.argeo.cms/OSGI-INF/cmsContentRepository.xml | 2 +- org.argeo.cms/OSGI-INF/cmsUserManager.xml | 4 ++-- .../src/org/argeo/cms/acr/ContentUtils.java | 2 +- .../acr/directory/DirectoryContentProvider.java | 2 +- .../{auth => runtime}/CmsUserManagerImpl.java | 15 +++++++++------ .../runtime/DeployedContentRepository.java | 2 +- .../src/org/argeo/cms/runtime/StaticCms.java | 4 ++-- .../cms/swt/dialogs/ChangePasswordDialog.java | 2 +- 11 files changed, 23 insertions(+), 24 deletions(-) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.api.cms/src/org/argeo/api/cms/directory}/CmsUserManager.java (91%) rename org.argeo.cms/src/org/argeo/cms/internal/{auth => runtime}/CmsUserManagerImpl.java (98%) diff --git a/org.argeo.api.cms/bnd.bnd b/org.argeo.api.cms/bnd.bnd index 51c4e663c..351748484 100644 --- a/org.argeo.api.cms/bnd.bnd +++ b/org.argeo.api.cms/bnd.bnd @@ -1,4 +1,5 @@ Import-Package: \ -javax.security.* +javax.security.*,\ +org.osgi.service.useradmin,\ Export-Package: org.argeo.api.cms.* \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java b/org.argeo.api.cms/src/org/argeo/api/cms/directory/CmsUserManager.java similarity index 91% rename from org.argeo.cms/src/org/argeo/cms/CmsUserManager.java rename to org.argeo.api.cms/src/org/argeo/api/cms/directory/CmsUserManager.java index f87d28b1c..422cadef0 100644 --- a/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java +++ b/org.argeo.api.cms/src/org/argeo/api/cms/directory/CmsUserManager.java @@ -1,4 +1,4 @@ -package org.argeo.cms; +package org.argeo.api.cms.directory; import java.time.ZonedDateTime; import java.util.List; @@ -8,11 +8,6 @@ import java.util.Set; import javax.security.auth.Subject; import javax.xml.namespace.QName; -import org.argeo.api.cms.directory.CmsGroup; -import org.argeo.api.cms.directory.CmsUser; -import org.argeo.api.cms.directory.HierarchyUnit; -import org.argeo.api.cms.directory.UserDirectory; -import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; @@ -47,7 +42,7 @@ public interface CmsUserManager { // Search /** Returns a filtered list of roles */ - Role[] getRoles(String filter) throws InvalidSyntaxException; + Role[] getRoles(String filter); /** Recursively lists users in a given group. */ Set listUsersInGroup(String groupDn, String filter); diff --git a/org.argeo.cms.ee/src/org/argeo/cms/integration/CmsTokenServlet.java b/org.argeo.cms.ee/src/org/argeo/cms/integration/CmsTokenServlet.java index e170609bb..c355ecd8d 100644 --- a/org.argeo.cms.ee/src/org/argeo/cms/integration/CmsTokenServlet.java +++ b/org.argeo.cms.ee/src/org/argeo/cms/integration/CmsTokenServlet.java @@ -17,7 +17,7 @@ import javax.servlet.http.HttpServletResponse; import org.argeo.api.acr.ldap.NamingUtils; import org.argeo.api.cms.CmsAuth; -import org.argeo.cms.CmsUserManager; +import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.cms.auth.RemoteAuthCallback; import org.argeo.cms.auth.RemoteAuthCallbackHandler; import org.argeo.cms.servlet.ServletHttpRequest; diff --git a/org.argeo.cms/OSGI-INF/cmsContentRepository.xml b/org.argeo.cms/OSGI-INF/cmsContentRepository.xml index b7a13b4d1..306717b1c 100644 --- a/org.argeo.cms/OSGI-INF/cmsContentRepository.xml +++ b/org.argeo.cms/OSGI-INF/cmsContentRepository.xml @@ -8,5 +8,5 @@ - + diff --git a/org.argeo.cms/OSGI-INF/cmsUserManager.xml b/org.argeo.cms/OSGI-INF/cmsUserManager.xml index 1f0033171..d76c89a1b 100644 --- a/org.argeo.cms/OSGI-INF/cmsUserManager.xml +++ b/org.argeo.cms/OSGI-INF/cmsUserManager.xml @@ -1,8 +1,8 @@ - + - + diff --git a/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java b/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java index ed27ce8e8..d324ac475 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java @@ -16,9 +16,9 @@ import org.argeo.api.acr.ContentSession; import org.argeo.api.acr.DName; import org.argeo.api.cms.CmsAuth; import org.argeo.api.cms.directory.CmsDirectory; +import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.api.cms.directory.HierarchyUnit; import org.argeo.api.cms.directory.UserDirectory; -import org.argeo.cms.CmsUserManager; import org.argeo.cms.util.CurrentSubject; import org.osgi.service.useradmin.Role; diff --git a/org.argeo.cms/src/org/argeo/cms/acr/directory/DirectoryContentProvider.java b/org.argeo.cms/src/org/argeo/cms/acr/directory/DirectoryContentProvider.java index 9af83a330..68314b912 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/directory/DirectoryContentProvider.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/directory/DirectoryContentProvider.java @@ -14,9 +14,9 @@ import org.argeo.api.acr.ContentNotFoundException; import org.argeo.api.acr.spi.ContentProvider; import org.argeo.api.acr.spi.ProvidedContent; import org.argeo.api.acr.spi.ProvidedSession; +import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.api.cms.directory.HierarchyUnit; import org.argeo.api.cms.directory.UserDirectory; -import org.argeo.cms.CmsUserManager; import org.argeo.cms.acr.AbstractContent; import org.argeo.cms.acr.ContentUtils; import org.osgi.service.useradmin.User; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsUserManagerImpl.java similarity index 98% rename from org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java rename to org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsUserManagerImpl.java index 94262a521..6c6001563 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsUserManagerImpl.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal.auth; +package org.argeo.cms.internal.runtime; import static org.argeo.api.acr.ldap.LdapAttrs.cn; import static org.argeo.api.acr.ldap.LdapAttrs.description; @@ -32,10 +32,10 @@ import org.argeo.api.cms.CmsConstants; import org.argeo.api.cms.CmsLog; import org.argeo.api.cms.directory.CmsGroup; import org.argeo.api.cms.directory.CmsUser; +import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.api.cms.directory.HierarchyUnit; import org.argeo.api.cms.directory.UserDirectory; import org.argeo.api.cms.transaction.WorkTransaction; -import org.argeo.cms.CmsUserManager; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.UserAdminUtils; import org.argeo.cms.directory.ldap.LdapEntry; @@ -91,8 +91,12 @@ public class CmsUserManagerImpl implements CmsUserManager { } @Override - public Role[] getRoles(String filter) throws InvalidSyntaxException { - return userAdmin.getRoles(filter); + public Role[] getRoles(String filter) { + try { + return userAdmin.getRoles(filter); + } catch (InvalidSyntaxException e) { + throw new IllegalArgumentException("Invalid filter " + filter, e); + } } // ALL USER: WARNING access to this will be later reduced @@ -287,8 +291,7 @@ public class CmsUserManagerImpl implements CmsUserManager { @Override public CmsGroup getOrCreateSystemRole(HierarchyUnit roles, QName systemRole) { try { - String dn = LdapAttrs.cn.name() + "=" + NamespaceUtils.toPrefixedName(systemRole) + "," - + roles.getBase(); + String dn = LdapAttrs.cn.name() + "=" + NamespaceUtils.toPrefixedName(systemRole) + "," + roles.getBase(); CmsGroup group = (CmsGroup) getUserAdmin().getRole(dn); if (group != null) return group; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/runtime/DeployedContentRepository.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/DeployedContentRepository.java index 8358105e2..0fd0a63ed 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/runtime/DeployedContentRepository.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/runtime/DeployedContentRepository.java @@ -5,7 +5,7 @@ import java.nio.file.Files; import java.nio.file.Path; import org.argeo.api.cms.CmsLog; -import org.argeo.cms.CmsUserManager; +import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.cms.acr.CmsContentRepository; import org.argeo.cms.acr.directory.DirectoryContentProvider; import org.argeo.cms.acr.fs.FsContentProvider; diff --git a/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java b/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java index 0034e3f7b..76775fed8 100644 --- a/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java +++ b/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java @@ -9,6 +9,7 @@ import org.argeo.api.acr.spi.ProvidedRepository; import org.argeo.api.cms.CmsContext; import org.argeo.api.cms.CmsDeployment; import org.argeo.api.cms.CmsState; +import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.api.cms.transaction.SimpleTransactionManager; import org.argeo.api.cms.transaction.WorkControl; import org.argeo.api.cms.transaction.WorkTransaction; @@ -16,13 +17,12 @@ import org.argeo.api.register.Component; import org.argeo.api.register.ComponentRegister; import org.argeo.api.register.SimpleRegister; import org.argeo.api.uuid.UuidFactory; -import org.argeo.cms.CmsUserManager; import org.argeo.cms.acr.CmsUuidFactory; -import org.argeo.cms.internal.auth.CmsUserManagerImpl; import org.argeo.cms.internal.runtime.CmsContextImpl; import org.argeo.cms.internal.runtime.CmsDeploymentImpl; import org.argeo.cms.internal.runtime.CmsStateImpl; import org.argeo.cms.internal.runtime.CmsUserAdmin; +import org.argeo.cms.internal.runtime.CmsUserManagerImpl; import org.argeo.cms.internal.runtime.DeployedContentRepository; import org.osgi.service.useradmin.UserAdmin; diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/dialogs/ChangePasswordDialog.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/dialogs/ChangePasswordDialog.java index dedf61dea..296247094 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/dialogs/ChangePasswordDialog.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/dialogs/ChangePasswordDialog.java @@ -4,9 +4,9 @@ import java.util.Arrays; import java.util.concurrent.Callable; import org.argeo.api.cms.CmsLog; +import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.api.cms.ux.CmsView; import org.argeo.cms.CmsMsg; -import org.argeo.cms.CmsUserManager; import org.argeo.cms.swt.CmsSwtUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; -- 2.30.2