diff --git a/laboratory/src/org/labkey/laboratory/AdditionalDataSource.java b/laboratory/src/org/labkey/laboratory/AdditionalDataSource.java index 97163d4f..676a0dbd 100644 --- a/laboratory/src/org/labkey/laboratory/AdditionalDataSource.java +++ b/laboratory/src/org/labkey/laboratory/AdditionalDataSource.java @@ -1,8 +1,8 @@ package org.labkey.laboratory; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.Nullable; import org.json.JSONException; import org.json.JSONObject; @@ -46,7 +46,7 @@ public static AdditionalDataSource getFromParts(Container c, User u, String item return new AdditionalDataSource(cat, label, containerId, schemaName, queryName, reportCategory, importIntoWorkbooks, subjectFieldKey, sampleDateFieldKey); } - public static AdditionalDataSource getFromPropertyManager(Container c, User u, String key, String value) throws IllegalArgumentException + public static @Nullable AdditionalDataSource getFromPropertyManager(Container c, User u, String key, String value) throws IllegalArgumentException { if (value == null) return null; diff --git a/laboratory/src/org/labkey/laboratory/DemographicsSource.java b/laboratory/src/org/labkey/laboratory/DemographicsSource.java index 3d5e0847..41fc2e51 100644 --- a/laboratory/src/org/labkey/laboratory/DemographicsSource.java +++ b/laboratory/src/org/labkey/laboratory/DemographicsSource.java @@ -44,10 +44,12 @@ public static DemographicsSource getFromParts(Container c, User u, String label, return new DemographicsSource(label, containerId, schemaName, queryName, targetColumn); } - public static DemographicsSource getFromPropertyManager(Container c, User u, String key, String value) throws IllegalArgumentException + public static @Nullable DemographicsSource getFromPropertyManager(Container c, User u, String key, String value) throws IllegalArgumentException { if (value == null) + { return null; + } try { diff --git a/laboratory/src/org/labkey/laboratory/LaboratoryServiceImpl.java b/laboratory/src/org/labkey/laboratory/LaboratoryServiceImpl.java index 3d7eb74f..02afef97 100644 --- a/laboratory/src/org/labkey/laboratory/LaboratoryServiceImpl.java +++ b/laboratory/src/org/labkey/laboratory/LaboratoryServiceImpl.java @@ -431,11 +431,19 @@ public Map> getAllAdditionalDataSources(Use set = new HashSet<>(); AdditionalDataSource source = AdditionalDataSource.getFromPropertyManager(c, u, entry.getKey(), entry.getValue()); - if (source != null) - set.add(source); + if (source == null) + { + continue; + } + + Container targetContainer = source.getTargetContainer(c); + if (targetContainer == null || !targetContainer.hasPermission(u, ReadPermission.class)) + { + continue; + } - if (set.size() > 0) - map.put(c, set); + set.add(source); + map.put(c, set); } return Collections.unmodifiableMap(map); @@ -457,11 +465,19 @@ public Map> getAllDemographicsSources(User u) set = new HashSet<>(); DemographicsSource source = DemographicsSource.getFromPropertyManager(c, u, entry.getKey(), entry.getValue()); - if (source != null) - set.add(source); + if (source == null) + { + continue; + } + + Container targetContainer = source.getTargetContainer(c); + if (targetContainer == null || !targetContainer.hasPermission(u, ReadPermission.class)) + { + continue; + } - if (set.size() > 0) - map.put(c, set); + set.add(source); + map.put(c, set); } return Collections.unmodifiableMap(map);