diff --git a/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsController.java b/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsController.java index b91914e3..fef10830 100644 --- a/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsController.java +++ b/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsController.java @@ -5,6 +5,7 @@ import java.util.UUID; import io.micrometer.core.annotation.Timed; import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import net.hostsharing.hsadminng.config.MessageTranslator; import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.credentials.generated.api.v1.api.CredentialsApi; import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsInsertResource; @@ -17,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; +import jakarta.persistence.EntityNotFoundException; + @RestController @SecurityRequirement(name = "casTicket") public class HsCredentialsController implements CredentialsApi { @@ -30,6 +33,9 @@ public class HsCredentialsController implements CredentialsApi { @Autowired private StrictMapper mapper; + @Autowired + private MessageTranslator messageTranslator; + @Autowired private HsOfficePersonRbacRepository personRepo; @@ -56,7 +62,12 @@ public class HsCredentialsController implements CredentialsApi { ) { context.assumeRoles(assumedRoles); - final var person = personRepo.findByUuid(personUuid).orElseThrow(); // FIXME: use proper exception + final var person = personRepo.findByUuid(personUuid).orElseThrow( + () -> new EntityNotFoundException( + messageTranslator.translate("{0} \"{1}\" not found or not accessible", "personUuid", personUuid) + ) + + ); // FIXME: use proper exception final var credentials = credentialsRepo.findByPerson(person); final var result = mapper.mapList(credentials, CredentialsResource.class); return ResponseEntity.ok(result); @@ -96,7 +107,7 @@ public class HsCredentialsController implements CredentialsApi { final var current = credentialsRepo.findByUuid(credentialsUuid).orElseThrow(); - new HsCredentialsEntityPatcher(em, current).apply(body); + new HsCredentialsEntityPatcher(em, messageTranslator, current).apply(body); final var saved = credentialsRepo.save(current); final var mapped = mapper.map(saved, CredentialsResource.class); diff --git a/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsEntityPatcher.java b/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsEntityPatcher.java index 164fcc12..44f1ccd2 100644 --- a/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsEntityPatcher.java +++ b/src/main/java/net/hostsharing/hsadminng/credentials/HsCredentialsEntityPatcher.java @@ -1,5 +1,6 @@ package net.hostsharing.hsadminng.credentials; +import net.hostsharing.hsadminng.config.MessageTranslator; import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource; import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource; import net.hostsharing.hsadminng.mapper.EntityPatcher; @@ -14,10 +15,12 @@ import java.util.stream.Collectors; public class HsCredentialsEntityPatcher implements EntityPatcher { private final EntityManager em; + private MessageTranslator messageTranslator; private final HsCredentialsEntity entity; - public HsCredentialsEntityPatcher(final EntityManager em, final HsCredentialsEntity entity) { + public HsCredentialsEntityPatcher(final EntityManager em, MessageTranslator messageTranslator, final HsCredentialsEntity entity) { this.em = em; + this.messageTranslator = messageTranslator; this.entity = entity; } @@ -57,14 +60,15 @@ public class HsCredentialsEntityPatcher implements EntityPatcher