From 49d400662bfa04b12ecf15d37019d6552c17c03f Mon Sep 17 00:00:00 2001 From: amentis Date: Mon, 30 Oct 2023 10:57:24 +0200 Subject: [PATCH] add reference definition censor --- .../model/censorship/ReferenceCensor.java | 3 ++ .../referencedefinition/DefinitionCensor.java | 46 +++++++++++++++++++ .../referencedefinition/FieldCensor.java | 39 ++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/DefinitionCensor.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/FieldCensor.java diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/ReferenceCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/ReferenceCensor.java index f8b54a291..2cc4f72a3 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/ReferenceCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/ReferenceCensor.java @@ -3,6 +3,7 @@ package eu.eudat.model.censorship; import eu.eudat.authorization.Permission; import eu.eudat.convention.ConventionService; import eu.eudat.model.Reference; +import eu.eudat.model.censorship.referencedefinition.DefinitionCensor; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.censor.CensorFactory; import gr.cite.tools.fieldset.FieldSet; @@ -38,6 +39,8 @@ public class ReferenceCensor extends BaseCensor { return; this.authService.authorizeForce(Permission.BrowseReference); + FieldSet definitionFields = fields.extractPrefixed(this.asIndexerPrefix(Reference._definition)); + this.censorFactory.censor(DefinitionCensor.class).censor(definitionFields, userId); FieldSet dmpReferencesFields = fields.extractPrefixed(this.asIndexerPrefix(Reference._dmpReferences)); this.censorFactory.censor(DmpReferenceCensor.class).censor(dmpReferencesFields, userId); //ToDo diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/DefinitionCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/DefinitionCensor.java new file mode 100644 index 000000000..399c5e4c4 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/DefinitionCensor.java @@ -0,0 +1,46 @@ +package eu.eudat.model.censorship.referencedefinition; + +import eu.eudat.authorization.Permission; +import eu.eudat.convention.ConventionService; +import eu.eudat.model.censorship.BaseCensor; +import eu.eudat.model.referencedefinition.Definition; +import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.data.censor.CensorFactory; +import gr.cite.tools.fieldset.FieldSet; +import gr.cite.tools.logging.DataLogEntry; +import gr.cite.tools.logging.LoggerService; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +@Component("referencedefinitioncensor") +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class DefinitionCensor extends BaseCensor { + + private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(DefinitionCensor.class)); + + protected final AuthorizationService authService; + protected final CensorFactory censorFactory; + + public DefinitionCensor(ConventionService conventionService, + AuthorizationService authService, + CensorFactory censorFactory) { + super(conventionService); + this.authService = authService; + this.censorFactory = censorFactory; + } + + public void censor(FieldSet fields, UUID userId) { + logger.debug(new DataLogEntry("censoring fields", fields)); + if (fields == null || fields.isEmpty()) + return; + + this.authService.authorizeForce(Permission.BrowseReference); + FieldSet fieldsFields = fields.extractPrefixed(this.asIndexerPrefix(Definition._fields)); + this.censorFactory.censor(FieldCensor.class).censor(fieldsFields, userId); + } + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/FieldCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/FieldCensor.java new file mode 100644 index 000000000..bf832be9a --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/referencedefinition/FieldCensor.java @@ -0,0 +1,39 @@ +package eu.eudat.model.censorship.referencedefinition; + +import eu.eudat.authorization.Permission; +import eu.eudat.convention.ConventionService; +import eu.eudat.model.censorship.BaseCensor; +import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.fieldset.FieldSet; +import gr.cite.tools.logging.DataLogEntry; +import gr.cite.tools.logging.LoggerService; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +@Component("referencedefinitionfieldcensor") +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class FieldCensor extends BaseCensor { + + private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(FieldCensor.class)); + + protected final AuthorizationService authService; + + public FieldCensor(ConventionService conventionService, + AuthorizationService authService) { + super(conventionService); + this.authService = authService; + } + + public void censor(FieldSet fields, UUID userId) { + logger.debug(new DataLogEntry("censoring fields", fields)); + if (fields == null || fields.isEmpty()) + return; + + this.authService.authorizeForce(Permission.BrowseReference); + } + +}