From 90d85c9713f99ad84a9666b4e33fe9e6829d0d45 Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Thu, 14 Nov 2019 11:33:11 +0100
Subject: [PATCH] SSDM-4600: ELN: project creation button in space view removed
 if user has no rights to create a project

---
 .../ProjectForm/ProjectFormController.js      |  5 ++--
 .../js/views/ProjectForm/ProjectFormView.js   |  4 +--
 .../js/views/SpaceForm/SpaceFormController.js | 30 ++++++++++---------
 .../html/js/views/SpaceForm/SpaceFormView.js  | 16 +++++-----
 4 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormController.js
index 9aa712c5c64..880799b791b 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormController.js
@@ -38,8 +38,9 @@ function ProjectFormController(mainController, mode, project) {
 					}, function(roles){
 						_this._projectFormModel.roles = roles;
 						var dummyId = new ExperimentIdentifier("/" + spaceCode + "/" + projectCode + "/DUMMY");
-						mainController.openbisV3.getRights([dummyId], new RightsFetchOptions()).done(function(rightsByIds) {
-							_this._projectFormModel.projectRights = rightsByIds[dummyId];
+						mainController.openbisV3.getRights([id, dummyId], new RightsFetchOptions()).done(function(rightsByIds) {
+							_this._projectFormModel.rights = rightsByIds[id];
+							_this._projectFormModel.experimentRights = rightsByIds[dummyId];
 							_this._projectFormView.repaint(views);
 						});
 					});
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
index 0c0e09fb599..2853784334f 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
@@ -286,12 +286,12 @@ function ProjectFormView(projectFormController, projectFormModel) {
 	
 	this._allowedToCreateExperiments = function() {
 		var project = this._projectFormModel.v3_project;
-		return project.frozenForExperiments == false && this._projectFormModel.projectRights.rights.indexOf("CREATE") >= 0;;
+		return project.frozenForExperiments == false && this._projectFormModel.experimentRights.rights.indexOf("CREATE") >= 0;
 	};
 	
 	this._allowedToEdit = function() {
 		var project = this._projectFormModel.v3_project;
-		return project.frozen == false;
+		return project.frozen == false && this._projectFormModel.rights.rights.indexOf("UPDATE") >= 0;
 	};
 
 	this._allowedToMove = function() {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormController.js
index 215c023a1e7..72ae9c56d75 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormController.js
@@ -22,23 +22,25 @@ function SpaceFormController(mainController, space) {
 	this.init = function(views) {
 		var _this = this;
 		
-		require([ "as/dto/space/id/SpacePermId", "as/dto/space/fetchoptions/SpaceFetchOptions" ],
-			function(SpacePermId, SpaceFetchOptions) {
+		require([ "as/dto/space/id/SpacePermId", "as/dto/space/fetchoptions/SpaceFetchOptions", 
+				"as/dto/project/id/ProjectIdentifier", "as/dto/rights/fetchoptions/RightsFetchOptions" ],
+			function(SpacePermId, SpaceFetchOptions, ProjectIdentifier, RightsFetchOptions) {
 			var id = new SpacePermId(space);
 			mainController.openbisV3.getSpaces([ id ], new SpaceFetchOptions()).done(function(map) {
-                _this._spaceFormModel.v3_space = map[id];
-                _this._mainController.getUserRole({
-        			space: _this._spaceFormModel.space
-        		}, function(roles){
-        			_this._spaceFormModel.roles = roles;
-        			_this._spaceFormView.repaint(views);
-        		});
-            });
-			
-			
+				_this._spaceFormModel.v3_space = map[id];
+				var space = _this._spaceFormModel.space;
+				_this._mainController.getUserRole({
+					space: space
+				}, function(roles){
+					_this._spaceFormModel.roles = roles;
+					var dummyId = new ProjectIdentifier("/" + space + "/DUMMY");
+					mainController.openbisV3.getRights([id, dummyId], new RightsFetchOptions()).done(function(rightsByIds) {
+						_this._spaceFormModel.projectRights = rightsByIds[dummyId];
+						_this._spaceFormView.repaint(views);
+					});
+				});
+			});
 		});
-		
-		
 	}
 
 	this.createProject = function() {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js
index ca91751a977..48b1ed0b4ca 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js
@@ -68,13 +68,13 @@ function SpaceFormView(spaceFormController, spaceFormModel) {
 			toolbarModel.push({ component : $share, tooltip: "Manage access" });
 		}
 
-        //Freeze
-        if(_this._spaceFormModel.v3_space && _this._spaceFormModel.v3_space.frozen !== undefined) { //Freezing available on the API
-            var isEntityFrozen = _this._spaceFormModel.v3_space.frozen;
-            var isEntityFrozenTooltip = (isEntityFrozen)?"Entity Frozen":"Freeze Entity (Disable further modifications)";
-            var $freezeButton = FormUtil.getFreezeButton("SPACE", _this._spaceFormModel.v3_space.permId.permId, isEntityFrozen);
-            toolbarModel.push({ component : $freezeButton, tooltip: isEntityFrozenTooltip });
-        }
+		//Freeze
+		if(_this._spaceFormModel.v3_space && _this._spaceFormModel.v3_space.frozen !== undefined) { //Freezing available on the API
+			var isEntityFrozen = _this._spaceFormModel.v3_space.frozen;
+			var isEntityFrozenTooltip = (isEntityFrozen)?"Entity Frozen":"Freeze Entity (Disable further modifications)";
+			var $freezeButton = FormUtil.getFreezeButton("SPACE", _this._spaceFormModel.v3_space.permId.permId, isEntityFrozen);
+			toolbarModel.push({ component : $freezeButton, tooltip: isEntityFrozenTooltip });
+		}
 
 		var $header = views.header;
 		$header.append($formTitle);
@@ -85,7 +85,7 @@ function SpaceFormView(spaceFormController, spaceFormModel) {
 	
 	this._allowedToCreateProject = function() {
 		var space = this._spaceFormModel.v3_space;
-		return space.frozenForProjects == false;
+		return space.frozenForProjects == false && this._spaceFormModel.projectRights.rights.indexOf("CREATE") >= 0;
 	}
 	
 }
-- 
GitLab