diff options
| author | Paul-Christian Volkmer | 2023-05-26 11:49:56 +0200 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-05-26 11:49:56 +0200 |
| commit | 4380e773097eb5dae4589a0618d6930be229fe2c (patch) | |
| tree | 1cea18ad15871e7cc8b9d0864df1d35730126959 /src/main/java | |
| parent | 98f7edac9cd1b2bc4745d3fafaac3ab0e92d2f3f (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')
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(); |
