ref #5873: authentication as parameter for service method
authorKatja Luther <k.luther@bgbm.org>
Tue, 1 Oct 2019 13:02:30 +0000 (15:02 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 1 Oct 2019 13:02:30 +0000 (15:02 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditorPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/handler/OpenChecklistEditorHandlerE4.java

index 2e3636e2502f7b40fb27a842bc0c2c92cd109d89..660e877064fad14e808d9d3e7c7531a36c4efa06 100755 (executable)
@@ -113,7 +113,9 @@ ICdmEntitySessionEnabled, IPartContentHasSupplementalData, IPartContentHasDetail
     }
 
     public void init(UUID parentTaxonUuid) {
-        this.taxonList = CdmStore.getService(ITaxonNodeService.class).getTaxonDistributionDTOForSubtree(parentTaxonUuid, TAXONNODE_PROPERTY_PATH);
+        this.taxonList = CdmStore.getService(ITaxonNodeService.class).getTaxonDistributionDTOForSubtree(parentTaxonUuid, TAXONNODE_PROPERTY_PATH, CdmStore.getCurrentAuthentiation());
+       // taxonList.stream().filter(taxonDistribution ->  CdmStore.currentAuthentiationHasPermission(taxonDistribution.getTaxonUuid(), RequiredPermissions.TAXONNODE_EDIT));
+
 
         if(taxonList!=null){
             editor.loadDistributions(taxonList);
index dea5521395fbf045097c0f2fe0d1558cbfb46fbf..5d595c2c0cbb3246b7312c6125c320d32d5764c0 100644 (file)
@@ -11,6 +11,8 @@ import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@@ -89,8 +91,11 @@ public class OpenChecklistEditorHandlerE4 extends DefaultOpenHandlerBaseE4<ITaxo
      */
     @Override
     protected boolean canExecute(ITaxonTreeNode entity) {
-
-        boolean hasPermission = ((TaxonNode)entity).hasChildNodes()? checkPermission(((TaxonNode)entity).getChildNodes(), false) || CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT):CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT);
+        DescriptionBase instance = TaxonDescription.NewInstance();
+        boolean hasPermission = CdmStore.currentAuthentiationHasPermission(instance, RequiredPermissions.DESCRIPTION_EDIT);
+        if (!hasPermission){
+            hasPermission = hasPermission || ((TaxonNode)entity).hasChildNodes()? checkPermission(((TaxonNode)entity).getChildNodes(), false) || CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT):CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT);
+        }
         return hasPermission &&  PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
     }
 
@@ -102,7 +107,7 @@ public class OpenChecklistEditorHandlerE4 extends DefaultOpenHandlerBaseE4<ITaxo
     private boolean checkPermission(List<TaxonNode> nodes, boolean result){
 
         for (TaxonNode node:nodes){
-            if (node.hasChildNodes()){
+            if (node.hasChildNodes() && !result){
                 result = result ||checkPermission(node.getChildNodes(), result);
             }
             result = result || CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXONNODE_EDIT);