Skip to content

Commit bbb7767

Browse files
authored
🎨 [Frontend] Hide some pages in Study/Template details when user has no write access (#8331)
1 parent 59febda commit bbb7767

File tree

10 files changed

+36
-182
lines changed

10 files changed

+36
-182
lines changed

services/static-webserver/client/source/class/osparc/dashboard/ResourceDetails.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,9 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
526526
if (!osparc.desktop.credits.Utils.areWalletsEnabled()) {
527527
return;
528528
}
529+
if (osparc.utils.Resources.isStudyLike(this.__resourceData) && !osparc.data.model.Study.canIWrite(this.__resourceData["accessRights"])) {
530+
return;
531+
}
529532

530533
const resourceData = this.__resourceData;
531534
if (osparc.utils.Resources.isStudy(resourceData)) {
@@ -634,6 +637,13 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
634637
},
635638

636639
__addPermissionsPage: function() {
640+
if (osparc.utils.Resources.isStudyLike(this.__resourceData) && !osparc.data.model.Study.canIWrite(this.__resourceData["accessRights"])) {
641+
return;
642+
}
643+
if (osparc.utils.Resources.isService(this.__resourceData) && !osparc.data.model.Service.canIWrite(this.__resourceData["accessRights"])) {
644+
return;
645+
}
646+
637647
const id = "Permissions";
638648
const title = this.tr("Sharing");
639649
const iconSrc = "@FontAwesome5Solid/share-alt/22";
@@ -695,7 +705,7 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
695705
let classifiers = null;
696706
if (
697707
(osparc.utils.Resources.isStudy(resourceData) || osparc.utils.Resources.isTemplate(resourceData)) && osparc.data.model.Study.canIWrite(resourceData["accessRights"]) ||
698-
osparc.utils.Resources.isService(resourceData) && osparc.service.Utils.canIWrite(resourceData["accessRights"])
708+
osparc.utils.Resources.isService(resourceData) && osparc.data.model.Service.canIWrite(resourceData["accessRights"])
699709
) {
700710
classifiers = new osparc.metadata.ClassifiersEditor(resourceData);
701711
classifiers.addListener("updateClassifiers", e => {
@@ -779,6 +789,9 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
779789
if (osparc.utils.Resources.isService(resourceData)) {
780790
return;
781791
}
792+
if (osparc.utils.Resources.isStudyLike(this.__resourceData) && !osparc.data.model.Study.canIWrite(this.__resourceData["accessRights"])) {
793+
return;
794+
}
782795

783796
const id = "ServicesUpdate";
784797
const title = this.tr("Services Updates");
@@ -813,6 +826,9 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
813826
) {
814827
return;
815828
}
829+
if (osparc.utils.Resources.isStudyLike(this.__resourceData) && !osparc.data.model.Study.canIWrite(this.__resourceData["accessRights"])) {
830+
return;
831+
}
816832

817833
const id = "ServicesBootOptions";
818834
const title = this.tr("Boot Options");

services/static-webserver/client/source/class/osparc/data/model/Service.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,13 @@ qx.Class.define("osparc.data.model.Service", {
161161
nullable: false
162162
},
163163
},
164+
165+
statics: {
166+
canIWrite: function(serviceAccessRights) {
167+
const groupsStore = osparc.store.Groups.getInstance();
168+
const orgIDs = groupsStore.getOrganizationIds();
169+
orgIDs.push(groupsStore.getMyGroupId());
170+
return osparc.share.CollaboratorsService.canGroupsWrite(serviceAccessRights, orgIDs);
171+
},
172+
},
164173
});

services/static-webserver/client/source/class/osparc/editor/HtmlEditor.js

Lines changed: 0 additions & 61 deletions
This file was deleted.

services/static-webserver/client/source/class/osparc/info/ServiceLarge.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ qx.Class.define("osparc.info.ServiceLarge", {
110110

111111
if (
112112
this.getService()["descriptionUi"] &&
113-
!osparc.service.Utils.canIWrite(this.getService()["accessRights"])
113+
!osparc.data.model.Service.canIWrite(this.getService()["accessRights"])
114114
) {
115115
// In case of service instance, show also the copy Id buttons too
116116
const buttonsLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));
@@ -177,7 +177,7 @@ qx.Class.define("osparc.info.ServiceLarge", {
177177
alignY: "middle"
178178
}));
179179
layout.add(view);
180-
if (osparc.service.Utils.canIWrite(this.getService()["accessRights"])) {
180+
if (osparc.data.model.Service.canIWrite(this.getService()["accessRights"])) {
181181
const editBtn = osparc.utils.Utils.getEditButton();
182182
editBtn.addListener("execute", () => cb.call(this), this);
183183
layout.add(editBtn);
@@ -221,7 +221,7 @@ qx.Class.define("osparc.info.ServiceLarge", {
221221
},
222222

223223
__infoElements: function() {
224-
const canIWrite = osparc.service.Utils.canIWrite(this.getService()["accessRights"]);
224+
const canIWrite = osparc.data.model.Service.canIWrite(this.getService()["accessRights"]);
225225

226226
const infoLayout = {
227227
"THUMBNAIL": {

services/static-webserver/client/source/class/osparc/metadata/QualityEditor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ qx.Class.define("osparc.metadata.QualityEditor", {
484484
const myGid = osparc.auth.Data.getInstance().getGroupId();
485485
if (myGid) {
486486
if (osparc.utils.Resources.isService(this.__resourceData)) {
487-
return osparc.service.Utils.canIWrite(this.__resourceData["accessRights"]);
487+
return osparc.data.model.Service.canIWrite(this.__resourceData["accessRights"]);
488488
}
489489
return osparc.data.model.Study.canIWrite(this.__resourceData["accessRights"]);
490490
}

services/static-webserver/client/source/class/osparc/po/MessageTemplates.js

Lines changed: 0 additions & 99 deletions
This file was deleted.

services/static-webserver/client/source/class/osparc/po/POCenter.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ qx.Class.define("osparc.po.POCenter", {
3131
this.__addPreRegistrationPage();
3232
this.__addInvitationsPage();
3333
this.__addProductPage();
34-
this.__addMsgTemplatesPage();
3534
},
3635

3736
members: {
@@ -69,12 +68,5 @@ qx.Class.define("osparc.po.POCenter", {
6968
const productInfo = new osparc.po.ProductInfo();
7069
this.addTab(title, iconSrc, productInfo);
7170
},
72-
73-
__addMsgTemplatesPage: function() {
74-
const title = this.tr("Message Templates");
75-
const iconSrc = "@FontAwesome5Solid/envelope-open/22";
76-
const productInfo = new osparc.po.MessageTemplates();
77-
this.addTab(title, iconSrc, productInfo);
78-
}
7971
}
8072
});

services/static-webserver/client/source/class/osparc/service/Utils.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,6 @@ qx.Class.define("osparc.service.Utils", {
140140
return "";
141141
},
142142

143-
canIWrite: function(serviceAccessRights) {
144-
const groupsStore = osparc.store.Groups.getInstance();
145-
const orgIDs = groupsStore.getOrganizationIds();
146-
orgIDs.push(groupsStore.getMyGroupId());
147-
return osparc.share.CollaboratorsService.canGroupsWrite(serviceAccessRights, orgIDs);
148-
},
149-
150143
DEPRECATED_SERVICE_TEXT: qx.locale.Manager.tr("Service deprecated"),
151144
DEPRECATED_DYNAMIC_INSTRUCTIONS: qx.locale.Manager.tr("Please go back to the dashboard and Update the Service or download its data and upload it to an updated version"),
152145
DEPRECATED_COMPUTATIONAL_INSTRUCTIONS: qx.locale.Manager.tr("Please instantiate an updated version"),

services/static-webserver/client/source/class/osparc/share/Collaborators.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ qx.Class.define("osparc.share.Collaborators", {
202202
canIShare = osparc.data.model.Function.canIWrite(this._serializedDataCopy["accessRights"]);
203203
break;
204204
case "service":
205-
canIShare = osparc.service.Utils.canIWrite(this._serializedDataCopy["accessRights"]);
205+
canIShare = osparc.data.model.Service.canIWrite(this._serializedDataCopy["accessRights"]);
206206
break;
207207
case "workspace":
208208
canIShare = osparc.share.CollaboratorsWorkspace.canIDelete(this._serializedDataCopy["myAccessRights"]);
@@ -231,7 +231,7 @@ qx.Class.define("osparc.share.Collaborators", {
231231
fullOptions = osparc.data.model.Function.canIWrite(this._serializedDataCopy["accessRights"]);
232232
break;
233233
case "service":
234-
fullOptions = osparc.service.Utils.canIWrite(this._serializedDataCopy["accessRights"]);
234+
fullOptions = osparc.data.model.Service.canIWrite(this._serializedDataCopy["accessRights"]);
235235
break;
236236
case "workspace":
237237
fullOptions = osparc.share.CollaboratorsWorkspace.canIDelete(this._serializedDataCopy["myAccessRights"]);

services/static-webserver/client/source/class/osparc/utils/Resources.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ qx.Class.define("osparc.utils.Resources", {
3939
return ((hypertoolData["resourceType"] === "hypertool") && ("uuid" in hypertoolData));
4040
},
4141

42+
isStudyLike: function(resourceData) {
43+
return this.isStudy(resourceData) || this.isTemplate(resourceData) || this.isTutorial(resourceData) || this.isHypertool(resourceData);
44+
},
45+
4246
isFunction: function(functionData) {
4347
return ((functionData["resourceType"] === "function") && ("uuid" in functionData));
4448
},

0 commit comments

Comments
 (0)