package eu.etaxonomy.taxeditor.editor.view.checklist.e4.handler;
+import java.util.List;
import java.util.UUID;
import javax.inject.Inject;
import eu.etaxonomy.cdm.api.service.IClassificationService;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.permission.Operation;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.AppModelId;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.handler.defaultHandler.e4.DefaultOpenHandlerBaseE4;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.security.RequiredPermissions;
import eu.etaxonomy.taxeditor.store.CdmStore;
public class OpenChecklistEditorHandlerE4 extends DefaultOpenHandlerBaseE4<ITaxonTreeNode> {
*/
@Override
protected boolean canExecute(ITaxonTreeNode entity) {
- return entity!=null && PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
+
+ Distribution instance = Distribution.NewInstance();
+ boolean hasDescriptionPermission = CdmStore.currentAuthentiationHasPermission(instance, Operation.ALL);
+ if (!hasDescriptionPermission){
+ return false;
+ }
+ return PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
+ //check whether the user has subtree rights
+ // CdmStore.getCurrentAuthentiation().getAuthorities()
+ // boolean 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());
}
@Override
protected String getPartId() {
return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_DISTRIBUTIONEDITORPART;
}
+
+ private boolean checkPermission(List<TaxonNode> nodes, boolean result){
+
+ for (TaxonNode node:nodes){
+ if (node.hasChildNodes() && !result){
+ result = result ||checkPermission(node.getChildNodes(), result);
+
+ }
+ result = result || CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXONNODE_EDIT);
+ if (result){
+ return result;
+ }
+ }
+ return result;
+ }
}