From 0435920b5f0246af061fc68e5f3814d978686f23 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 21 May 2018 18:58:18 +0200 Subject: [PATCH] Fix initialisation of user admin --- .../cms/internal/kernel/NodeUserAdmin.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java index dc9d33a3b..e8977fa37 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeUserAdmin.java @@ -86,6 +86,7 @@ class NodeUserAdmin extends AggregatingUserAdmin implements ManagedServiceFactor private GSSCredential acceptorCredentials; private boolean singleUser = false; + private boolean systemRolesAvailable = false; public NodeUserAdmin(String systemRolesBaseDn) { super(systemRolesBaseDn); @@ -137,15 +138,21 @@ class NodeUserAdmin extends AggregatingUserAdmin implements ManagedServiceFactor log.debug("User directory " + userDirectory.getBaseDn() + " [" + u.getScheme() + "] enabled." + (realm != null ? " " + realm + " realm." : "")); - // if (isSystemRolesBaseDn(baseDn)) { - if (userAdminReg != null) - userAdminReg.unregister(); - // register self as main user admin - Dictionary userAdminregProps = currentState(); - userAdminregProps.put(NodeConstants.CN, NodeConstants.DEFAULT); - userAdminregProps.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE); - userAdminReg = bc.registerService(UserAdmin.class, this, userAdminregProps); - // } + if (isSystemRolesBaseDn(baseDn)) + systemRolesAvailable = true; + + // start publishing only when system roles are available + if (systemRolesAvailable) { + // The list of baseDns is published as properties + // TODO clients should rather reference USerDirectory services + if (userAdminReg != null) + userAdminReg.unregister(); + // register self as main user admin + Dictionary userAdminregProps = currentState(); + userAdminregProps.put(NodeConstants.CN, NodeConstants.DEFAULT); + userAdminregProps.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE); + userAdminReg = bc.registerService(UserAdmin.class, this, userAdminregProps); + } } @Override -- 2.30.2