ref #8810: check for taxonnode permission and whether the user has taxon node granted...
authork.luther <k.luther@bgbm.org>
Thu, 16 Jan 2020 11:06:34 +0000 (12:06 +0100)
committerk.luther <k.luther@bgbm.org>
Thu, 16 Jan 2020 11:06:34 +0000 (12:06 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/TaxonNameEditorE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/AbstractCdmEditorPartE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsPartE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsViewerE4.java [changed mode: 0755->0644]

index 0bc3bfba1ec3c19d2b89e15545f7d9906846805b..a39c2e584560dbcd45dd1f6cae19a06eed30ef7e 100644 (file)
@@ -67,6 +67,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.AppModelId;
 import eu.etaxonomy.taxeditor.editor.CdmDataTransfer;
@@ -431,7 +432,7 @@ public class TaxonNameEditorE4 implements IConversationEnabled, IDirtyMarkable,
         conversation.commit(true);
 
         dirty.setDirty(false);
-        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, true);
+        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, new TaxonNodeDto(input.getTaxonNode()));
         EventUtility.postEvent(WorkbenchEventConstants.SAVE_TAXON, true);
         // Stop the progress monitor.
         monitor.done();
index afabd55b4e6565ff194985a51d72bfe6ec07f970..d4d9804464d838f6bd4cbae4fae4e6bff3c5ae42 100644 (file)
@@ -18,6 +18,7 @@ import org.eclipse.swt.widgets.Shell;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 import eu.etaxonomy.taxeditor.event.EventUtility;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -43,7 +44,7 @@ public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE
         taxonNodeWizard.setEntity(entity);
         WizardDialog dialog = new WizardDialog(shell, taxonNodeWizard);
         dialog.open();
-        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, true);
+        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, new TaxonNodeDto(entity));
 
     }
 
index 62fce8bd7df6735f2fd60dc11b07dcec3f1ffc2f..6ecbb327259e8802e0360ed595f474f4aefa3c84 100644 (file)
@@ -75,7 +75,7 @@ public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElem
 
 
 
-               selection_secundum = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+               selection_secundum = formFactory.createSelectionElement(Reference.class,
                                 formElement, "Secundum",
                                entity.getSec(), EntitySelectionElement.ALL,
                                style);
index 59f91b1653c62eb2230b0f73f1cf5ff628437806..bb3abcece28b89bc7bef711e5e592c1b9b3bac09 100644 (file)
@@ -8,6 +8,7 @@
 */
 package eu.etaxonomy.taxeditor.view.e4;
 
+import java.util.Collection;
 import java.util.Set;
 
 import javax.annotation.PreDestroy;
@@ -28,6 +29,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWTException;
+import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
@@ -223,6 +225,19 @@ public abstract class AbstractCdmEditorPartE4
                         if (node != null){
                             boolean doEnable = CdmStore.currentAuthentiationHasPermission(node,
                                     RequiredPermissions.TAXON_EDIT);
+                             if (!doEnable){
+                                 //check whether there are explicit TaxonNode rights
+                                 boolean taxonnodePermissionExists = false;
+                                 Collection<? extends GrantedAuthority> authorities = CdmStore.getCurrentAuthentiation().getAuthorities();
+                                 for (GrantedAuthority grantedAuthority: authorities){
+                                     if (grantedAuthority.getAuthority().startsWith("TAXONNODE")){
+                                         taxonnodePermissionExists = true;
+                                     }
+                                 }
+                                 if (!taxonnodePermissionExists){
+                                     doEnable = true;
+                                 }
+                             }
 
                             //TODO: differ between the views
                             this.isEnabled = doEnable;
index 57597159fe743b51be35a7ddeb50cda9e41e5d5c..5b0229b18e977649f74ef6992df53893478360e6 100644 (file)
@@ -107,7 +107,7 @@ public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartConte
             showViewer(structuredSelection, activePart, viewer);
             if (viewer instanceof DetailsViewerE4){
 
-                ((DetailsViewerE4)viewer).setDetailsEnabled(isEnabled());
+//                ((DetailsViewerE4)viewer).setDetailsEnabled(isEnabled());
             }
 
 
old mode 100755 (executable)
new mode 100644 (file)
index 7f27442..4046ab9
@@ -9,6 +9,7 @@
 
 package eu.etaxonomy.taxeditor.view.e4.details;
 
+import java.util.Collection;
 import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.Set;
@@ -22,6 +23,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TreeNode;
 import org.eclipse.swt.SWT;
+import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
@@ -455,6 +457,19 @@ public class DetailsViewerE4 extends AbstractCdmDataViewerE4 {
         if (hasPermission){
             for (TaxonNode node: nodes){
                 hasPermission &= CdmStore.currentAuthentiationHasPermission(node, requiredCrud);
+                if (!hasPermission){
+                    //check whether there are explicit TaxonNode rights
+                    boolean taxonnodePermissionExists = false;
+                    Collection<? extends GrantedAuthority> authorities = CdmStore.getCurrentAuthentiation().getAuthorities();
+                    for (GrantedAuthority grantedAuthority: authorities){
+                        if (grantedAuthority.getAuthority().startsWith("TAXONNODE")){
+                            taxonnodePermissionExists = true;
+                        }
+                    }
+                    if (!taxonnodePermissionExists){
+                        hasPermission = true;
+                    }
+                }
             }
         }
         detailsEnabled = hasPermission;