Make the admin group member of the userAdmin group by default
authormbaudier <mbaudier@europe>
Sun, 15 Jul 2018 10:31:37 +0000 (12:31 +0200)
committermbaudier <mbaudier@europe>
Sun, 15 Jul 2018 10:31:37 +0000 (12:31 +0200)
org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java

index c4dee903fb4513946a6dee37ce0fb07d67808330..67abe90fa65911006881752e476396e5ffa25246 100644 (file)
@@ -45,6 +45,7 @@ import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ManagedService;
+import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.UserAdmin;
 import org.osgi.util.tracker.ServiceTracker;
@@ -160,10 +161,14 @@ public class CmsDeployment implements NodeDeployment {
                UserTransaction userTransaction = bc.getService(bc.getServiceReference(UserTransaction.class));
                try {
                        userTransaction.begin();
-                       if (userAdmin.getRole(NodeConstants.ROLE_ADMIN) == null)
-                               userAdmin.createRole(NodeConstants.ROLE_ADMIN, Role.GROUP);
-                       if (userAdmin.getRole(NodeConstants.ROLE_USER_ADMIN) == null)
-                               userAdmin.createRole(NodeConstants.ROLE_USER_ADMIN, Role.GROUP);
+                       Role adminRole = userAdmin.getRole(NodeConstants.ROLE_ADMIN);
+                       if (adminRole == null) {
+                               adminRole = userAdmin.createRole(NodeConstants.ROLE_ADMIN, Role.GROUP);
+                       }
+                       if (userAdmin.getRole(NodeConstants.ROLE_USER_ADMIN) == null) {
+                               Group userAdminRole = (Group) userAdmin.createRole(NodeConstants.ROLE_USER_ADMIN, Role.GROUP);
+                               userAdminRole.addMember(adminRole);
+                       }
                        userTransaction.commit();
                } catch (Exception e) {
                        try {