From 1a0011765fa2d34f7d0075f463beb9e614ec8812 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 10 Mar 2026 09:01:58 +0100 Subject: feat: request update audit (#258) This adds the date and username when a request gets updated. If the request gets updated by an async Kafka response, "SYSTEM" will be used as username.--- .../dnpm/etl/processor/config/AppConfiguration.kt | 5 +++-- .../dnpm/etl/processor/config/AuditConfiguration.kt | 21 +++++++++++++++++++++ .../dev/dnpm/etl/processor/monitoring/Request.kt | 7 ++++++- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/dev/dnpm/etl/processor/config/AuditConfiguration.kt (limited to 'src/main/kotlin/dev/dnpm/etl') diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt index cb04db3..2d520d3 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt @@ -32,8 +32,6 @@ import dev.dnpm.etl.processor.security.TokenService import dev.dnpm.etl.processor.services.ConsentProcessor import dev.dnpm.etl.processor.services.Transformation import dev.dnpm.etl.processor.services.TransformationService -import kotlin.time.Duration.Companion.seconds -import kotlin.time.toJavaDuration import org.apache.cxf.jaxws.JaxWsProxyFactoryBean import org.slf4j.LoggerFactory import org.springframework.boot.autoconfigure.condition.AnyNestedCondition @@ -46,6 +44,7 @@ import org.springframework.context.annotation.Conditional import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.ConfigurationCondition import org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration +import org.springframework.data.jdbc.repository.config.EnableJdbcAuditing import org.springframework.http.converter.StringHttpMessageConverter import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter import org.springframework.retry.RetryCallback @@ -60,6 +59,8 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager import org.springframework.web.client.HttpClientErrorException import org.springframework.web.client.RestTemplate import reactor.core.publisher.Sinks +import kotlin.time.Duration.Companion.seconds +import kotlin.time.toJavaDuration @Configuration @EnableConfigurationProperties( diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AuditConfiguration.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AuditConfiguration.kt new file mode 100644 index 0000000..45763ee --- /dev/null +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AuditConfiguration.kt @@ -0,0 +1,21 @@ +package dev.dnpm.etl.processor.config + +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.data.domain.AuditorAware +import org.springframework.data.jdbc.repository.config.EnableJdbcAuditing +import org.springframework.security.core.context.SecurityContextHolder +import java.util.* + +@Configuration +@EnableJdbcAuditing +class AuditConfiguration { + + @Bean + fun audit(): AuditorAware { + return AuditorAware { + Optional.of(SecurityContextHolder.getContext().authentication?.name ?: "SYSTEM") + } + } + +} diff --git a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt index 4ed071d..5dbba2b 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt @@ -20,10 +20,13 @@ package dev.dnpm.etl.processor.monitoring import dev.dnpm.etl.processor.* +import org.springframework.data.annotation.CreatedDate import java.time.Instant import java.time.temporal.ChronoUnit import java.util.* import org.springframework.data.annotation.Id +import org.springframework.data.annotation.LastModifiedBy +import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jdbc.repository.query.Query @@ -44,7 +47,9 @@ data class Request( @Column("submission_type") val submissionType: SubmissionType, var status: RequestStatus, @Column("tan") val tan: Tan = Tan.empty(), - var processedAt: Instant = Instant.now(), + @CreatedDate var processedAt: Instant = Instant.now(), + @LastModifiedDate var updatedAt: Instant? = null, + @LastModifiedBy var updatedBy: String? = null, @Embedded.Nullable var report: Report? = null, @Column("submission_accepted") var submissionAccepted: Boolean = false, ) { -- cgit v1.2.3