Project

General

Profile

« Previous | Next » 

Revision 1503d9ad

Added by Katja Luther over 4 years ago

ref #5873: check rights for selected subtree for distribution editor

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/handler/OpenChecklistEditorHandlerE4.java
1 1
package eu.etaxonomy.taxeditor.editor.view.checklist.e4.handler;
2 2

  
3
import java.util.List;
3 4
import java.util.UUID;
4 5

  
5 6
import javax.inject.Inject;
......
12 13
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
13 14
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
14 15
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
16
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
15 17
import eu.etaxonomy.taxeditor.editor.AppModelId;
16 18
import eu.etaxonomy.taxeditor.editor.EditorUtil;
17 19
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
18 20
import eu.etaxonomy.taxeditor.handler.defaultHandler.e4.DefaultOpenHandlerBaseE4;
19 21
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
22
import eu.etaxonomy.taxeditor.security.RequiredPermissions;
20 23
import eu.etaxonomy.taxeditor.store.CdmStore;
21 24

  
22 25
public class OpenChecklistEditorHandlerE4 extends DefaultOpenHandlerBaseE4<ITaxonTreeNode> {
......
86 89
     */
87 90
    @Override
88 91
    protected boolean canExecute(ITaxonTreeNode entity) {
89
        return entity!=null && PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
92

  
93
        boolean hasPermission = ((TaxonNode)entity).hasChildNodes()? checkPermission(((TaxonNode)entity).getChildNodes(), false) || CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT):CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT);
94
        return hasPermission &&  PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
90 95
    }
91 96

  
92 97
    @Override
93 98
    protected String getPartId() {
94 99
        return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_DISTRIBUTIONEDITORPART;
95 100
    }
101

  
102
    private boolean checkPermission(List<TaxonNode> nodes, boolean result){
103

  
104
        for (TaxonNode node:nodes){
105
            if (node.hasChildNodes()){
106
                result = result ||checkPermission(node.getChildNodes(), result);
107
            }
108
            result = result || CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXONNODE_EDIT);
109
        }
110
        return result;
111
    }
96 112
}

Also available in: Unified diff