From eaf0d97b85722e39712ce52999e9633fcda2f69a Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Wed, 10 Dec 2014 07:56:50 +0000
Subject: [PATCH] SSDM-1321 : PAPER - UI to create Users (Server Side)

SVN: 33003
---
 .../v1/GeneralInformationChangingService.java | 16 ++++++++++
 ...neralInformationChangingServiceLogger.java | 15 +++++++--
 .../openbis/public/resources/js/openbis.js    | 31 +++++++++++++++++++
 .../IGeneralInformationChangingService.java   | 19 ++++++++++++
 4 files changed, 79 insertions(+), 2 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java
index 92a925e12c8..5d7a25b6dca 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingService.java
@@ -45,10 +45,13 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.IMetapr
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BatchRegistrationResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Grantee;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientService;
 
@@ -339,4 +342,17 @@ public class GeneralInformationChangingService extends
         server.registerPerson(sessionToken, userID);
     }
     
+    @Override
+    public void registerSpace(String sessionToken, String spaceCode, String spaceDescription) {
+        server.registerSpace(sessionToken,spaceCode, spaceDescription);
+    }
+    
+    @Override
+    public void registerPersonSpaceRole(String sessionToken, String spaceCode, String userID, String roleCode)
+    {
+        Grantee grantee = Grantee.createPerson(userID);
+        SpaceIdentifier spaceIdentifier = new SpaceIdentifier(spaceCode);
+        server.registerSpaceRole(sessionToken, RoleCode.valueOf(roleCode), spaceIdentifier, grantee);
+    }
+    
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java
index ab10dc8615b..1bf5d91e8bd 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationChangingServiceLogger.java
@@ -23,7 +23,6 @@ import ch.systemsx.cisd.authentication.ISessionManager;
 import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext;
 import ch.systemsx.cisd.openbis.generic.shared.AbstractServerLogger;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationChangingService;
-import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Deletion;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DeletionType;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.MetaprojectAssignmentsIds;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.NewVocabularyTerm;
@@ -235,7 +234,19 @@ class GeneralInformationChangingServiceLogger extends AbstractServerLogger imple
     @Override
     public void registerPerson(String sessionToken, String userID)
     {
-        logAccess(sessionToken, "userID", userID);
+        logAccess(sessionToken, "registerPerson", "userID(%s)", userID);
+    }
+
+    @Override
+    public void registerSpace(String sessionToken, String spaceCode, String spaceDescription)
+    {
+        logAccess(sessionToken, "registerSpace", "spaceCode(%s), spaceDescription(%s)", spaceCode, spaceDescription);
+    }
+
+    @Override
+    public void registerPersonSpaceRole(String sessionToken, String spaceCode, String userID, String roleCode)
+    {
+        logAccess(sessionToken, "registerPersonSpaceRole", "spaceCode(%s), userID(%s), roleCode(%s)", spaceCode, userID, roleCode);
     }
     
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
index 2291cfe8406..e68f7fffd39 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
@@ -1433,6 +1433,37 @@ openbis.prototype.registerPerson = function(userId, action) {
 	});
 }
 
+/**
+ * @see IGeneralInformationChangingService.registerSpace(String, String, String)
+ * @method
+ */
+openbis.prototype.registerSpace = function(spaceCode, spaceDescription, action) {
+	this._internal.ajaxRequest({
+		url: this._internal.generalInfoChangingServiceUrl,
+		data: { "method" : "registerSpace",
+				"params" : [ this.getSession(),
+				             spaceCode,
+				             spaceDescription ] },
+		success: action
+	});
+}
+
+/**
+ * @see IGeneralInformationChangingService.registerPersonSpaceRole(String, String, String, String)
+ * @method
+ */
+openbis.prototype.registerPersonSpaceRole = function(spaceCode, userID, roleCode, action) {
+	this._internal.ajaxRequest({
+		url: this._internal.generalInfoChangingServiceUrl,
+		data: { "method" : "registerPersonSpaceRole",
+				"params" : [ this.getSession(),
+				             spaceCode,
+				             userID,
+				             roleCode ] },
+		success: action
+	});
+}
+
 /**
  * ============================================================================
  * ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.IQueryApiServer methods
diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java
index 9a12ddf73e4..a6ae70dd842 100644
--- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java
+++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationChangingService.java
@@ -270,4 +270,23 @@ public interface IGeneralInformationChangingService extends IRpcService
      */
     public void registerPerson(String sessionToken, String userID);
 
+    /**
+     * Registers a space.
+     * 
+     * @param spaceCode space code
+     * @param spaceDescription space description
+     * @since 1.7
+     */
+    void registerSpace(String sessionToken, String spaceCode, String spaceDescription);
+
+    /**
+     * Registers a space role for a given person.
+     * 
+     * @param spaceCode space code
+     * @param userID user id
+     * @param roleCode openBIS role
+     * @since 1.7
+     */
+    void registerPersonSpaceRole(String sessionToken, String spaceCode, String userID, String roleCode);
+
 }
-- 
GitLab