Skip to content

Commit

Permalink
chore: reverting to blocking instead of non-blocking
Browse files Browse the repository at this point in the history
Co-authored-by: Andreas <[email protected]>
  • Loading branch information
jaflaten and andreasDev committed Dec 2, 2024
1 parent 9da4231 commit 85e6a06
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 56 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ class FerdigstillingService(
}

//TODO() implement this - lage eigen service?
suspend fun ferdigstillNasjonalAvvistJournalpost(
fun ferdigstillNasjonalAvvistJournalpost(
enhet: String,
oppgave: NasjonalManuellOppgaveDAO,
sykmeldt: Person,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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")
Expand All @@ -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<NasjonalManuellOppgaveDAO> = withContext(
Dispatchers.IO) {
): ResponseEntity<NasjonalManuellOppgaveDAO> {
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,
Expand All @@ -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?,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -238,7 +216,7 @@ suspend fun ferdigstillNasjonalAvvistOppgave(
}

// kom fra sykdig
suspend fun ferdigstillAvvistJpOgOppgave(
fun ferdigstillAvvistJpOgOppgave(
oppgave: NasjonalManuellOppgaveDAO,
navEpost: String,
enhetId: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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<PapirManuellOppgave> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class OppgaveSecurityService(
return tilgang
}

suspend fun hasAccessToNasjonalOppgave(oppgaveId: String): Boolean = withContext(
suspend fun hasAccessToNasjonalOppgave(authorization: String, oppgaveId: String): Boolean = withContext(
Dispatchers.IO) {
securelog.info("sjekker om bruker har tilgang på oppgave $oppgaveId")
val oppgave = nasjonalOppgaveRepository.findByOppgaveId(oppgaveId.toInt())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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))

Expand Down

0 comments on commit 85e6a06

Please sign in to comment.