Merge branch 'RED-6821-9210' into 'master'

RED-6821: Dossier templates only soft-deleted, cannot create new template with same name && RED-9210: RED_USER and RED_MANAGER can bulk-delete dossier-templates - should return 403

Closes RED-6821

See merge request redactmanager/persistence-service!509
This commit is contained in:
Maverick Studer 2024-05-29 11:58:53 +02:00
commit c2d02b3faa
3 changed files with 28 additions and 1 deletions

View File

@ -136,7 +136,7 @@ public class DossierTemplateController implements DossierTemplateResource {
@Override
@PreAuthorize("hasAuthority('" + READ_DOSSIER_TEMPLATES + "')")
@PreAuthorize("hasAuthority('" + WRITE_DOSSIER_TEMPLATES + "')")
public void deleteDossierTemplates(@RequestBody List<String> dossierTemplateIds) {
String userId = KeycloakSecurity.getUserId();

View File

@ -211,9 +211,11 @@ public class DossierTemplatePersistenceService {
if (hasNonDeletedDossiers) {
throw new BadRequestException("Cannot delete dossier template with active dossiers!");
} else {
dossierTemplate.setModifiedBy(deletingUserId);
dossierTemplate.setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossierTemplate.setSoftDeleteTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossierTemplate.setName(dossierTemplate.getName() + "_" + OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}
}, () -> {
throw new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId));

View File

@ -188,6 +188,31 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
}
@Test
public void testDossierTemplateNameChangedOnDelete() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
assertThat(allTemplates.size()).isEqualTo(1);
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
assertThat(dossierTemplate.isApplyDictionaryUpdatesToAllDossiersByDefault()).isFalse();
var testDossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
dossierClient.hardDeleteDossiers(Collections.singleton(testDossier.getId()));
dossierTemplateClient.deleteDossierTemplate(dossierTemplate.getId());
assertThat(dossierTemplateClient.getAllDossierTemplates().isEmpty()).isTrue();
dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var loadedTemplate = dossierTemplateClient.getDossierTemplate(dossierTemplate.getId());
assertThat(loadedTemplate).isEqualTo(dossierTemplate);
}
@Test
public void testDossierTemplateUniqueNameConflict() {