Project

General

Profile

« Previous | Next » 

Revision a8284340

Added by Katja Luther over 4 years ago

ref #8239: disable details, facts and supplemental data for insufficient rights

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsViewerE4.java
9 9

  
10 10
package eu.etaxonomy.taxeditor.view.e4.details;
11 11

  
12
import java.util.EnumSet;
12 13
import java.util.HashSet;
13 14
import java.util.Set;
14 15

  
......
46 47
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
47 48
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
48 49
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
50
import eu.etaxonomy.cdm.model.permission.CRUD;
49 51
import eu.etaxonomy.cdm.model.permission.Group;
50 52
import eu.etaxonomy.cdm.model.permission.User;
51 53
import eu.etaxonomy.cdm.model.reference.Reference;
54
import eu.etaxonomy.cdm.model.taxon.Synonym;
55
import eu.etaxonomy.cdm.model.taxon.Taxon;
52 56
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
57
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
53 58
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
54 59
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
55 60
import eu.etaxonomy.cdm.model.term.TermNode;
......
67 72
import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
68 73
import eu.etaxonomy.taxeditor.preference.NameDetailsConfigurator;
69 74
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
75
import eu.etaxonomy.taxeditor.store.CdmStore;
70 76
import eu.etaxonomy.taxeditor.store.StoreUtil;
71 77
import eu.etaxonomy.taxeditor.store.UsageTermCollection;
72 78
import eu.etaxonomy.taxeditor.ui.element.RootElement;
......
429 435

  
430 436
    private void createTaxonSections(RootElement parent) {
431 437
        NameDetailsConfigurator config = PreferencesUtil.getPreferredNameDetailsConfiguration();
432
//        EnumSet<CRUD> requiredCrud;
433
//        if(getInput() == null || StoreUtil.getCdmEntity(getInput()).getId() == 0) {
434
//            // new entity, not yet saved
435
//            requiredCrud = EnumSet.of(CRUD.CREATE);
436
//        } else {
437
//            requiredCrud = EnumSet.of(CRUD.UPDATE);
438
//        }
439
//        boolean hasPermission = CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getInput()), requiredCrud);
440
       // detailsEnabled = hasPermission;
438
        EnumSet<CRUD> requiredCrud;
439
        if(getInput() == null || StoreUtil.getCdmEntity(getInput()).getId() == 0) {
440
            // new entity, not yet saved
441
            requiredCrud = EnumSet.of(CRUD.CREATE);
442
        } else {
443
            requiredCrud = EnumSet.of(CRUD.UPDATE);
444
        }
445
        boolean hasPermission = CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getInput()), requiredCrud);
446
        TaxonBase taxonBase = (TaxonBase)getInput();
447
        Taxon acceptedTaxon = null;
448
        if (taxonBase instanceof Taxon){
449
            acceptedTaxon = (Taxon)taxonBase;
450
        }else{
451
           acceptedTaxon = ((Synonym)taxonBase).getAcceptedTaxon();
452
        }
453
        Set<TaxonNode> nodes = acceptedTaxon.getTaxonNodes();
454
        // check for subtree permissions as well.
455
        if (hasPermission){
456
            for (TaxonNode node: nodes){
457
                hasPermission &= CdmStore.currentAuthentiationHasPermission(node, requiredCrud);
458
            }
459
        }
460
        detailsEnabled = hasPermission;
441 461
        ParsingMessagesSection parsingMessagesSection = formFactory.createParsingMessagesSection(getConversationHolder(), parent, this,
442 462
                StoreUtil.getSectionStyle(ParsingMessagesSection.class, getInput().getClass().getCanonicalName(), true));
443 463
        if (config == null){

Also available in: Unified diff