diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index 02dab0584b030c6cc422591e573e36aff769a58a..f5bc1c909582592a46481adce3ecca1350418662 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -450,12 +450,21 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt @Override @RolesAllowed(RoleWithHierarchy.INSTANCE_ADMIN) + @Capability("REGISTER_SPACE") public void registerSpace(String sessionToken, String spaceCode, String descriptionOrNull) { final Session session = getSession(sessionToken); - final ISpaceBO groupBO = businessObjectFactory.createSpaceBO(session); - groupBO.define(spaceCode, descriptionOrNull); - groupBO.save(); + final ISpaceBO spaceBO = businessObjectFactory.createSpaceBO(session); + spaceBO.define(spaceCode, descriptionOrNull); + spaceBO.save(); + // If the user who registers this space is _not_ instance admin, make him space admin for + // the freshly created space. + if (new AuthorizationServiceUtils(getDAOFactory(), session.getUserName()).doesUserHaveRole( + RoleCode.ADMIN.toString(), null) == false) + { + registerSpaceRole(sessionToken, RoleCode.ADMIN, new SpaceIdentifier(spaceCode), + Grantee.createPerson(session.getUserName())); + } } @Override @@ -515,7 +524,6 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt final IRoleAssignmentTable table = businessObjectFactory.createRoleAssignmentTable(session); table.add(newRoleAssignment); table.save(); - } @Override