From 55ffdd9fb002182c87efbc24e4e8d26b08cb4cc9 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 12 Feb 2019 13:51:06 +0100 Subject: [PATCH] Ensures that created sailing_viewer RoleDefinition has a proper ownership set initially --- .../src/com/sap/sse/security/impl/Activator.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/impl/Activator.java b/java/com.sap.sse.security/src/com/sap/sse/security/impl/Activator.java index 2eadf51c91b..fb556f180a1 100644 --- a/java/com.sap.sse.security/src/com/sap/sse/security/impl/Activator.java +++ b/java/com.sap.sse.security/src/com/sap/sse/security/impl/Activator.java @@ -126,10 +126,10 @@ public class Activator implements BundleActivator { AccessControlStore accessControlStore = accessControlStoreTracker.waitForService(0); userStore.clear(); accessControlStore.clear(); - createRoleDefinitionsFromPrototypes(userStore); userStore.ensureDefaultRolesExist(); userStore.ensureDefaultTenantExists(); getSecurityService().initialize(); + createRoleDefinitionsFromPrototypes(userStore); applyCustomizations(); } @@ -149,7 +149,6 @@ public class Activator implements BundleActivator { context.registerService(Replicable.class.getName(), initialSecurityService, replicableServiceProperties); context.registerService(ClearStateTestSupport.class.getName(), initialSecurityService, null); Logger.getLogger(Activator.class.getName()).info("Security Service registered."); - applyCustomizations(); } private void createRoleDefinitionsFromPrototypes(UserStore userStore) { @@ -166,7 +165,10 @@ public class Activator implements BundleActivator { final RolePrototype rolePrototype = service.getRolePrototype(); final RoleDefinition potentiallyExistingRoleDefinition = userStore.getRoleDefinition(rolePrototype.getId()); if (potentiallyExistingRoleDefinition == null) { - userStore.createRoleDefinition(rolePrototype.getId(), rolePrototype.getName(), rolePrototype.getPermissions()); + final RoleDefinition createdRoleDefinition = userStore.createRoleDefinition( + rolePrototype.getId(), rolePrototype.getName(), rolePrototype.getPermissions()); + getSecurityService().setOwnership(createdRoleDefinition.getIdentifier(), null, + getSecurityService().getDefaultTenant()); } return service; } @@ -228,7 +230,6 @@ public class Activator implements BundleActivator { final UserStore userStore = userStoreTracker.waitForService(0); final AccessControlStore accessControlStore = accessControlStoreTracker.waitForService(0); logger.info("Obtained UserStore service "+userStore); - createRoleDefinitionsFromPrototypes(userStore); // must be called after the definition of the prototypes and after loading actual roles, but before // loading users userStore.ensureDefaultRolesExist(); @@ -238,6 +239,9 @@ public class Activator implements BundleActivator { accessControlStore.loadACLsAndOwnerships(); // create security service, it will also create a default admin user if no users exist createAndRegisterSecurityService(bundleContext, userStore, accessControlStore); + + createRoleDefinitionsFromPrototypes(userStore); + applyCustomizations(); migrate(userStore, securityService.get()); } catch (InterruptedException | UserGroupManagementException | UserManagementException | ExecutionException e) {