RED-2525: Only accept png, jpg, jpeg for image dossier attributes
This commit is contained in:
parent
7fe73674d2
commit
6145ac114c
@ -2,17 +2,22 @@ package com.iqser.red.service.peristence.v1.server.controller;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.service.DossierService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttribute;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesResource;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
|
||||
@ -31,10 +36,10 @@ public class DossierAttributesController implements DossierAttributesResource {
|
||||
|
||||
var dossier = dossierService.getDossierById(dossierId);
|
||||
var config = dossierAttributeConfigPersistenceService.getDossierAttributes(dossier.getDossierTemplateId());
|
||||
|
||||
var typeById = config.stream().collect(Collectors.toMap(entry -> entry.getId(), entry -> entry.getType()));
|
||||
for (DossierAttribute dossierAttribute : dossierAttributes) {
|
||||
if (config.stream().map(DossierAttributeConfigEntity::getId).noneMatch(id -> id.equals(dossierAttribute.getDossierAttributeConfigId()))) {
|
||||
throw new ConflictException("Dossier attribute configuration does not exist.");
|
||||
}
|
||||
validateDossierAttribute(typeById, dossierAttribute);
|
||||
}
|
||||
|
||||
dossierAttributePersistenceService.deleteDossierAttribute(dossierId);
|
||||
@ -54,10 +59,8 @@ public class DossierAttributesController implements DossierAttributesResource {
|
||||
var dossierAttributes = dossierAttributePersistenceService.getDossierAttributes(dossierId);
|
||||
var config = dossierAttributeConfigPersistenceService.getDossierAttributes(dossier.getDossierTemplateId());
|
||||
|
||||
|
||||
if (config.stream().map(DossierAttributeConfigEntity::getId).noneMatch(id -> id.equals(dossierAttribute.getDossierAttributeConfigId()))) {
|
||||
throw new ConflictException("Dossier attribute configuration does not exist.");
|
||||
}
|
||||
var typeById = config.stream().collect(Collectors.toMap(entry -> entry.getId(), entry -> entry.getType()));
|
||||
validateDossierAttribute(typeById, dossierAttribute);
|
||||
|
||||
if (dossierAttributes.stream().anyMatch(d -> d.getId().getDossierId().equals(dossierAttribute.getDossierId())
|
||||
&& d.getId().getDossierAttributeConfigId().equals(dossierAttribute.getDossierAttributeConfigId()))) {
|
||||
@ -83,5 +86,17 @@ public class DossierAttributesController implements DossierAttributesResource {
|
||||
}
|
||||
|
||||
|
||||
private void validateDossierAttribute(Map<String, DossierAttributeType> typeById, DossierAttribute dossierAttribute ){
|
||||
|
||||
if (!typeById.containsKey(dossierAttribute.getDossierAttributeConfigId())) {
|
||||
throw new ConflictException("Dossier attribute configuration does not exist.");
|
||||
}
|
||||
|
||||
DossierAttributeType type = typeById.get(dossierAttribute.getDossierAttributeConfigId());
|
||||
if(type.equals(DossierAttributeType.IMAGE) && !(dossierAttribute.getValue().startsWith("data:image/png;base64") || dossierAttribute.getValue().startsWith("data:image/jpg;base64") || dossierAttribute.getValue().startsWith("data:image/jpeg;base64"))){
|
||||
throw new BadRequestException("Only png, jpg and jpeg files are allowed for image dossier attributes");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user