summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2023-05-26 11:49:56 +0200
committerPaul-Christian Volkmer2023-05-26 11:49:56 +0200
commit4380e773097eb5dae4589a0618d6930be229fe2c (patch)
tree1cea18ad15871e7cc8b9d0864df1d35730126959 /src/main/java
parent98f7edac9cd1b2bc4745d3fafaac3ab0e92d2f3f (diff)
Verwende programmatische Berechtigungsprüfung
Bei Verwendung des Plugins in einer alten Onkostar-Installation kam es bei verwendung von AOP zu Problemen, daher wird die verwendung von AOP vorerst deaktiviert und grundsätzlich eine programmatische Berechtigungsprüfung durchgeführt.
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java17
-rw-r--r--src/main/java/DNPM/security/FormBasedSecurityAspects.java4
-rw-r--r--src/main/java/DNPM/services/molekulargenetik/OsMolekulargenetikFormService.java2
3 files changed, 11 insertions, 12 deletions
diff --git a/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java b/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
index efcc0a7..1bf56df 100644
--- a/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
+++ b/src/main/java/DNPM/analyzer/EinzelempfehlungAnalyzer.java
@@ -1,8 +1,8 @@
package DNPM.analyzer;
import DNPM.dto.Variant;
-import DNPM.security.DelegatingDataBasedPermissionEvaluator;
-import DNPM.security.IllegalSecuredObjectAccessException;
+import DNPM.security.PermissionType;
+import DNPM.security.PersonPoolBasedPermissionEvaluator;
import DNPM.services.molekulargenetik.MolekulargenetikFormService;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
@@ -12,13 +12,14 @@ import de.itc.onkostar.api.analysis.IProcedureAnalyzer;
import de.itc.onkostar.api.analysis.OnkostarPluginType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
- * Diese Klasse implementiert ein Plugin, welches Funktionen für DNPM UF Einzelempfehlung bereit stellt.
+ * Diese Klasse implementiert ein Plugin, welches Funktionen für DNPM UF Einzelempfehlung bereitstellt.
*
* @since 0.2.0
*/
@@ -31,12 +32,12 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
private final MolekulargenetikFormService molekulargenetikFormService;
- private final DelegatingDataBasedPermissionEvaluator permissionEvaluator;
+ private final PersonPoolBasedPermissionEvaluator permissionEvaluator;
public EinzelempfehlungAnalyzer(
final IOnkostarApi onkostarApi,
final MolekulargenetikFormService molekulargenetikFormService,
- final DelegatingDataBasedPermissionEvaluator permissionEvaluator
+ final PersonPoolBasedPermissionEvaluator permissionEvaluator
) {
this.onkostarApi = onkostarApi;
this.molekulargenetikFormService = molekulargenetikFormService;
@@ -103,10 +104,10 @@ public class EinzelempfehlungAnalyzer implements IProcedureAnalyzer {
return List.of();
}
- try {
+ if (permissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), procedure, PermissionType.READ)) {
return molekulargenetikFormService.getVariants(procedure);
- } catch (IllegalSecuredObjectAccessException e) {
- logger.error("Security", e);
+ } else {
+ logger.error("Security: No permission to access procedure '{}'", procedure.getId());
return List.of();
}
}
diff --git a/src/main/java/DNPM/security/FormBasedSecurityAspects.java b/src/main/java/DNPM/security/FormBasedSecurityAspects.java
index 3dea944..306c062 100644
--- a/src/main/java/DNPM/security/FormBasedSecurityAspects.java
+++ b/src/main/java/DNPM/security/FormBasedSecurityAspects.java
@@ -8,11 +8,11 @@ import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Component;
import java.util.Arrays;
-@Component
+// TODO Disabled for now - check bytecode reported incompatibility for older OS installations
+//@Component
@Aspect
public class FormBasedSecurityAspects {
diff --git a/src/main/java/DNPM/services/molekulargenetik/OsMolekulargenetikFormService.java b/src/main/java/DNPM/services/molekulargenetik/OsMolekulargenetikFormService.java
index 06ab9d2..e3d057f 100644
--- a/src/main/java/DNPM/services/molekulargenetik/OsMolekulargenetikFormService.java
+++ b/src/main/java/DNPM/services/molekulargenetik/OsMolekulargenetikFormService.java
@@ -1,7 +1,6 @@
package DNPM.services.molekulargenetik;
import DNPM.dto.Variant;
-import DNPM.security.PersonPoolSecured;
import de.itc.onkostar.api.Procedure;
import java.util.List;
@@ -21,7 +20,6 @@ public class OsMolekulargenetikFormService implements MolekulargenetikFormServic
* @return Die unterstützten Varianten oder eine leere Liste, wenn keine Varianten gefunden wurden.
*/
@Override
- @PersonPoolSecured
public List<Variant> getVariants(Procedure procedure) {
if (! "OS.Molekulargenetik".equals(procedure.getFormName())) {
return List.of();