diff --git a/build.gradle.kts b/build.gradle.kts index 352ffd95..17b42fcb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -59,7 +59,7 @@ dependencies { implementation("com.graphql-java:graphql-java:$graphqlVersion") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:$coroutinesVersion") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$coroutineReactorVersion") - implementation("org.springframework.boot:spring-boot-starter-web") +// implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("com.fasterxml.jackson.module:jackson-module-jaxb-annotations") implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jacksonDatatypeJsr310Version") diff --git a/src/main/kotlin/no/nav/sykdig/config/AadRestTemplateConfiguration.kt b/src/main/kotlin/no/nav/sykdig/config/AadRestTemplateConfiguration.kt index a81e3b88..d7d3c8d5 100644 --- a/src/main/kotlin/no/nav/sykdig/config/AadRestTemplateConfiguration.kt +++ b/src/main/kotlin/no/nav/sykdig/config/AadRestTemplateConfiguration.kt @@ -1,7 +1,5 @@ package no.nav.sykdig.config -import kotlinx.coroutines.reactive.awaitFirstOrNull -import kotlinx.coroutines.runBlocking import no.nav.security.token.support.client.core.ClientProperties import no.nav.security.token.support.client.core.context.JwtBearerTokenResolver import no.nav.security.token.support.client.core.oauth2.OAuth2AccessTokenService @@ -20,7 +18,7 @@ import org.springframework.http.HttpRequest import org.springframework.http.client.ClientHttpRequestExecution import org.springframework.http.client.ClientHttpRequestInterceptor import org.springframework.http.client.HttpComponentsClientHttpRequestFactory -import org.springframework.security.core.context.ReactiveSecurityContextHolder +import org.springframework.security.core.context.SecurityContextHolder import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken import org.springframework.stereotype.Component import org.springframework.web.client.RestTemplate @@ -31,13 +29,8 @@ class SykDigTokenResolver : JwtBearerTokenResolver { val log = applog() override fun token(): String? { - return runBlocking { - log.info("Current thread: ${Thread.currentThread().name}") - log.info("sec context ${ReactiveSecurityContextHolder.getContext().awaitFirstOrNull()}") - val authentication = ReactiveSecurityContextHolder.getContext().awaitFirstOrNull()?.authentication as? JwtAuthenticationToken - log.info("Token: ${authentication?.token?.tokenValue}") - authentication?.token?.tokenValue - } + val autentication = SecurityContextHolder.getContext().authentication as JwtAuthenticationToken + return autentication.token.tokenValue } } diff --git a/src/main/kotlin/no/nav/sykdig/config/SecurityConfiguration.kt b/src/main/kotlin/no/nav/sykdig/config/SecurityConfiguration.kt index b5448b1a..2558ca62 100644 --- a/src/main/kotlin/no/nav/sykdig/config/SecurityConfiguration.kt +++ b/src/main/kotlin/no/nav/sykdig/config/SecurityConfiguration.kt @@ -5,6 +5,7 @@ import org.springframework.context.annotation.Configuration import org.springframework.http.HttpMethod import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity import org.springframework.security.config.annotation.web.builders.HttpSecurity +import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity import org.springframework.security.web.SecurityFilterChain @Configuration diff --git a/src/main/kotlin/no/nav/sykdig/digitalisering/ferdigstilling/FerdigstillingService.kt b/src/main/kotlin/no/nav/sykdig/digitalisering/ferdigstilling/FerdigstillingService.kt index 9322be0a..6806809e 100644 --- a/src/main/kotlin/no/nav/sykdig/digitalisering/ferdigstilling/FerdigstillingService.kt +++ b/src/main/kotlin/no/nav/sykdig/digitalisering/ferdigstilling/FerdigstillingService.kt @@ -176,7 +176,7 @@ class FerdigstillingService( } //TODO() implement this - lage eigen service? - suspend fun ferdigstillNasjonalAvvistJournalpost( + fun ferdigstillNasjonalAvvistJournalpost( enhet: String, oppgave: NasjonalManuellOppgaveDAO, sykmeldt: Person, diff --git a/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveService.kt b/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveService.kt index 4b403de7..a16a09c4 100644 --- a/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveService.kt +++ b/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveService.kt @@ -41,19 +41,19 @@ class NasjonalOppgaveService( val securelog = securelog() val mapper = jacksonObjectMapper() - suspend fun lagreOppgave(papirManuellOppgave: PapirManuellOppgave): NasjonalManuellOppgaveDAO = withContext(Dispatchers.IO) { + fun lagreOppgave(papirManuellOppgave: PapirManuellOppgave): NasjonalManuellOppgaveDAO { val eksisterendeOppgave = nasjonalOppgaveRepository.findBySykmeldingId(papirManuellOppgave.sykmeldingId) if (eksisterendeOppgave != null) { log.info("Fant eksisterende oppgave med sykmeldingId ${papirManuellOppgave.sykmeldingId} , oppdaterer oppgave med database id ${eksisterendeOppgave.id}") - nasjonalOppgaveRepository.save(mapToDao(papirManuellOppgave, eksisterendeOppgave.id)) + return nasjonalOppgaveRepository.save(mapToDao(papirManuellOppgave, eksisterendeOppgave.id)) } val res = nasjonalOppgaveRepository.save(mapToDao(papirManuellOppgave, null)) log.info("Lagret oppgave med sykmeldingId ${res.sykmeldingId} og med database id ${eksisterendeOppgave?.id}") - res + return res } - suspend fun oppdaterOppgave(sykmeldingId: String, utfall: String, ferdigstiltAv: String, avvisningsgrunn: String?): NasjonalManuellOppgaveDAO? = withContext(Dispatchers.IO){ + fun oppdaterOppgave(sykmeldingId: String, utfall: String, ferdigstiltAv: String, avvisningsgrunn: String?): NasjonalManuellOppgaveDAO? { val updated = nasjonalOppgaveRepository.findBySykmeldingId(sykmeldingId)?.copy( utfall = utfall, ferdigstiltAv = ferdigstiltAv, @@ -65,18 +65,17 @@ class NasjonalOppgaveService( null -> log.info("Sykmelding $sykmeldingId not found ") else -> nasjonalOppgaveRepository.save(updated) } - updated + return updated } - suspend fun findByOppgaveId(oppgaveId: Int): NasjonalManuellOppgaveDAO? { - val oppgave = withContext(Dispatchers.IO) { - nasjonalOppgaveRepository.findByOppgaveId(oppgaveId) - } + fun findByOppgaveId(oppgaveId: Int): NasjonalManuellOppgaveDAO? { + val oppgave = nasjonalOppgaveRepository.findByOppgaveId(oppgaveId) + if (oppgave == null) return null return oppgave } - suspend fun getNasjonalOppgave(oppgaveId: String): NasjonalManuellOppgaveDAO { + fun getNasjonalOppgave(oppgaveId: String): NasjonalManuellOppgaveDAO { val oppgave = findByOppgaveId(oppgaveId.toInt()) if (oppgave == null) { log.warn("Fant ikke oppgave med id $oppgaveId") @@ -95,21 +94,20 @@ class NasjonalOppgaveService( oppgaveClient.ferdigstillNasjonalOppgave(oppgaveId, ferdigstillRegistrering.sykmeldingId, ferdigstillRegistrering, loggingMeta) } - suspend fun avvisOppgave( + fun avvisOppgave( oppgaveId: Int, request: String, authorization: String, navEnhet: String, - ): ResponseEntity = withContext( - Dispatchers.IO) { + ): ResponseEntity { val eksisterendeOppgave = nasjonalOppgaveRepository.findByOppgaveId(oppgaveId) val avvisningsgrunn = mapper.readValue(request, AvvisSykmeldingRequest::class.java).reason if (eksisterendeOppgave != null) { - val navEmail = oppgaveSecurityService.getNavEmailAsync() + val navEmail = oppgaveSecurityService.getNavEmail() log.info("navEmail: $navEmail") -// val veilederIdent = oppgaveSecurityService.getNavIdent().veilederIdent - val veilederIdent = navEmail + val veilederIdent = oppgaveSecurityService.getNavIdent().veilederIdent +// val veilederIdent = navEmail ferdigstillNasjonalAvvistOppgave(oppgaveId, authorization, navEnhet, navEmail, avvisningsgrunn, veilederIdent) val res = oppdaterOppgave( eksisterendeOppgave.sykmeldingId, @@ -119,34 +117,14 @@ class NasjonalOppgaveService( ) log.info("Har avvist oppgave med oppgaveId $oppgaveId") - ResponseEntity(res, HttpStatus.OK) + return ResponseEntity(res, HttpStatus.OK) } else { log.info("fant ikke oppgave som skulle avvises") - ResponseEntity(HttpStatus.NOT_FOUND) + return ResponseEntity(HttpStatus.NOT_FOUND) } } -fun mapToUpdateDao(sykmeldingId: String, utfall: String, ferdigstiltAv: String, avvisningsgrunn: String?, existingEntry: NasjonalManuellOppgaveDAO): NasjonalManuellOppgaveDAO { - return NasjonalManuellOppgaveDAO( - id = existingEntry.id, - sykmeldingId = sykmeldingId, - journalpostId = existingEntry.journalpostId, - fnr = existingEntry.fnr, - aktorId = existingEntry.aktorId, - dokumentInfoId = existingEntry.dokumentInfoId, - datoOpprettet = existingEntry.datoOpprettet, - oppgaveId = existingEntry.oppgaveId, - ferdigstilt = true, - papirSmRegistrering = existingEntry.papirSmRegistrering, - utfall = utfall, - ferdigstiltAv = ferdigstiltAv, - datoFerdigstilt = LocalDateTime.now(), - avvisningsgrunn = avvisningsgrunn, - ) -} - - fun mapToDao( papirManuellOppgave: PapirManuellOppgave, existingId: UUID?, @@ -206,7 +184,7 @@ fun mapToDao( // kom frå jpservice @Transactional -suspend fun ferdigstillNasjonalAvvistOppgave( +fun ferdigstillNasjonalAvvistOppgave( oppgaveId: Int, authorization: String, // skal dette eigentleg brukes til noke? navEnhet: String, @@ -238,7 +216,7 @@ suspend fun ferdigstillNasjonalAvvistOppgave( } // kom fra sykdig -suspend fun ferdigstillAvvistJpOgOppgave( +fun ferdigstillAvvistJpOgOppgave( oppgave: NasjonalManuellOppgaveDAO, navEpost: String, enhetId: String, diff --git a/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalSykmeldingService.kt b/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalSykmeldingService.kt index 44158613..446a1fe7 100644 --- a/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalSykmeldingService.kt +++ b/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalSykmeldingService.kt @@ -93,7 +93,7 @@ class NasjonalSykmeldingService( sykmelder = sykmelder, navEnhet = navEnhet, // veileder = oppgaveSecurityService.getNavIdent(), - veileder = Veileder(oppgaveSecurityService.getNavEmailAsync()), + veileder = Veileder(oppgaveSecurityService.getNavEmail()), avvist = false, oppgave = null, ) diff --git a/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/api/NasjonalOppgaveController.kt b/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/api/NasjonalOppgaveController.kt index fe9a54eb..0c9bda8d 100644 --- a/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/api/NasjonalOppgaveController.kt +++ b/src/main/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/api/NasjonalOppgaveController.kt @@ -39,7 +39,7 @@ class NasjonalOppgaveController( @PostMapping("/oppgave/{oppgaveId}/avvis") @PreAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId)") - suspend fun avvisOppgave( + fun avvisOppgave( @PathVariable oppgaveId: String, @RequestHeader("Authorization") authorization: String, @RequestHeader("X-Nav-Enhet") navEnhet: String, @@ -51,8 +51,9 @@ class NasjonalOppgaveController( } @GetMapping("/oppgave/{oppgaveid}") + @PreAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId)") @ResponseBody - suspend fun getPapirsykmeldingManuellOppgave( + fun getPapirsykmeldingManuellOppgave( @PathVariable oppgaveid: String, @RequestHeader("Authorization") authorization: String, ): ResponseEntity { diff --git a/src/test/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveServiceTest.kt b/src/test/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveServiceTest.kt index b0f29945..1b9963d6 100644 --- a/src/test/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveServiceTest.kt +++ b/src/test/kotlin/no/nav/sykdig/digitalisering/papirsykmelding/NasjonalOppgaveServiceTest.kt @@ -101,6 +101,7 @@ class NasjonalOppgaveServiceTest : IntegrationTest() { Mockito.`when`(sykdigOppgaveService.getOppgave(anyString())).thenReturn(testDataOppgaveDbModel(oppgaveId)) Mockito.`when`(oppgaveSecurityService.getNavIdent()).thenReturn(Veileder("veilederIdent")) + Mockito.`when`(oppgaveSecurityService.getNavEmail()).thenReturn("NavEmail") Mockito.`when`(personService.getPerson(anyString(), anyString())).thenReturn(testDataPerson()) Mockito.`when`(safJournalpostGraphQlClient.getJournalpost(anyString())).thenReturn(SafQueryJournalpost(null))