From 6ea53905061e2cde5b56b072c0ed0624cab4cb73 Mon Sep 17 00:00:00 2001 From: brinn <brinn> Date: Sat, 16 Mar 2013 16:13:16 +0000 Subject: [PATCH] Add capability REGISTER_SPACE for registering a new space and make the user of the session space admin of the new space except if he is already instance admin. SVN: 28620 --- .../openbis/generic/server/CommonServer.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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 02dab0584b0..f5bc1c90958 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 -- GitLab