diff --git a/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt b/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt index 01d6218c..577d8eec 100644 --- a/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt +++ b/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt @@ -9,7 +9,6 @@ import no.nav.arbeidsgiver.min_side.models.Organisasjon import no.nav.arbeidsgiver.min_side.services.tokenExchange.TokenExchangeClient import org.springframework.beans.factory.annotation.Value import org.springframework.boot.web.client.RestTemplateBuilder -import org.springframework.cache.annotation.Cacheable import org.springframework.http.HttpMethod import org.springframework.http.MediaType import org.springframework.http.RequestEntity @@ -29,7 +28,7 @@ class AltinnService( private val cache: Cache = Caffeine.newBuilder() .maximumSize(10000) - .expireAfterWrite(30, TimeUnit.MINUTES) + .expireAfterWrite(10, TimeUnit.MINUTES) .recordStats() .build() diff --git a/src/main/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoController.kt b/src/main/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoController.kt index 78a9c418..3de67021 100644 --- a/src/main/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoController.kt +++ b/src/main/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoController.kt @@ -50,38 +50,39 @@ class UserInfoController( suspend fun getUserInfo(): UserInfoRespons { val (tilganger, organisasjoner, syfoVirksomheter, refusjoner) = supervisorScope { val tilganger = async { - altinnService.hentAltinnTilganger().tilgangTilOrgNr.map { (tilgang, value) -> - if (tilgang.contains(":")) { - /** - * I frontend mappes tilganger til en record fra tjeneste "id" til et set med orgnr - * dette blir dobbeltarbeid. Endre frontend til å motta map direkte på form: - * { - * "tjenestekode:tjenesteversjon": ["orgnr1", "orgnr2"] - * } - */ - val (tjenestekode, tjenesteversjon) = tilgang.split(":") - UserInfoRespons.Tilgang( - id = idLookup[tilgang] ?: tilgang, - tjenestekode = tjenestekode, - tjenesteversjon = tjenesteversjon, - organisasjoner = value.toList(), - altinnError = false, - ) - } else { - /** - * altinn3 ressurser har ingen tjenesteversjon - * her burde vi på sikt ha en bedre måte å skille på - * altinn2 tjeneste tilgang vs altinn3 ressurs tilgang - */ - UserInfoRespons.Tilgang( - id = tilgang, - tjenestekode = tilgang, - tjenesteversjon = "", - organisasjoner = value.toList(), - altinnError = false, - ) + altinnService.hentAltinnTilganger().let { + it.tilgangTilOrgNr.map { (tilgang, value) -> + if (tilgang.contains(":")) { + /** + * I frontend mappes tilganger til en record fra tjeneste "id" til et set med orgnr + * dette blir dobbeltarbeid. Endre frontend til å motta map direkte på form: + * { + * "tjenestekode:tjenesteversjon": ["orgnr1", "orgnr2"] + * } + */ + val (tjenestekode, tjenesteversjon) = tilgang.split(":") + UserInfoRespons.Tilgang( + id = idLookup[tilgang] ?: tilgang, + tjenestekode = tjenestekode, + tjenesteversjon = tjenesteversjon, + organisasjoner = value.toList(), + altinnError = it.isError, + ) + } else { + /** + * altinn3 ressurser har ingen tjenesteversjon + * her burde vi på sikt ha en bedre måte å skille på + * altinn2 tjeneste tilgang vs altinn3 ressurs tilgang + */ + UserInfoRespons.Tilgang( + id = tilgang, + tjenestekode = tilgang, + tjenesteversjon = "", + organisasjoner = value.toList(), + altinnError = it.isError, + ) + } } - } } diff --git a/src/main/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusController.kt b/src/main/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusController.kt index a64b4bb7..cd9e4161 100644 --- a/src/main/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusController.kt +++ b/src/main/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusController.kt @@ -1,6 +1,5 @@ package no.nav.arbeidsgiver.min_side.varslingstatus -import no.nav.arbeidsgiver.min_side.controller.AuthenticatedUserHolder import no.nav.arbeidsgiver.min_side.services.altinn.AltinnService import no.nav.arbeidsgiver.min_side.varslingstatus.VarslingStatusDto.Status import org.springframework.web.bind.annotation.PostMapping @@ -17,10 +16,7 @@ class VarslingStatusController( @PostMapping("/api/varslingStatus/v1") fun getVarslingStatus(@RequestBody requestBody: VarslingStatusRequest): VarslingStatus { - val virksomhetsnummer = requestBody.virksomhetsnummer - val harTilgang = altinnService.hentOrganisasjoner() - .any { it.organizationNumber == virksomhetsnummer } - + val harTilgang = altinnService.harOrganisasjon(requestBody.virksomhetsnummer) if (!harTilgang) { return VarslingStatus( status = Status.OK, @@ -29,7 +25,7 @@ class VarslingStatusController( ) } - return repository.varslingStatus(virksomhetsnummer = virksomhetsnummer) + return repository.varslingStatus(virksomhetsnummer = requestBody.virksomhetsnummer) } data class VarslingStatusRequest( diff --git a/src/test/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusIntegrationTest.kt b/src/test/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusIntegrationTest.kt index d89ac1ee..a242505b 100644 --- a/src/test/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusIntegrationTest.kt +++ b/src/test/kotlin/no/nav/arbeidsgiver/min_side/varslingstatus/VarslingStatusIntegrationTest.kt @@ -66,9 +66,7 @@ class VarslingStatusIntegrationTest { @Test fun `bruker som ikke har tilgang får status ok som default`() { - `when`( - altinnService.hentOrganisasjoner() - ).thenReturn(emptyList()) + `when`(altinnService.harOrganisasjon("314")).thenReturn(false) processVarslingStatus( """ @@ -96,9 +94,7 @@ class VarslingStatusIntegrationTest { @Test fun `bruker med tilgang men ingen status i databasen får OK som default`() { - `when`( - altinnService.hentOrganisasjoner() - ).thenReturn(listOf(Organisasjon(organizationNumber = "314", name = "Foo & Co", organizationForm = "BEDR"))) + `when`(altinnService.harOrganisasjon("314")).thenReturn(true) processVarslingStatus( """ @@ -126,9 +122,7 @@ class VarslingStatusIntegrationTest { @Test fun `returnerer siste status for virksomhet`() { - `when`( - altinnService.hentOrganisasjoner() - ).thenReturn(listOf(Organisasjon(organizationNumber = "314", name = "Foo & Co", organizationForm = "BEDR"))) + `when`(altinnService.harOrganisasjon("314")).thenReturn(true) listOf( "MANGLER_KOFUVI" to "2021-01-02T00:00:00Z", @@ -172,9 +166,7 @@ class VarslingStatusIntegrationTest { @Test fun `returnerer siste status for virksomhet OK`() { - `when`( - altinnService.hentOrganisasjoner() - ).thenReturn(listOf(Organisasjon(organizationNumber = "314", name = "Foo & Co", organizationForm = "BEDR"))) + `when`(altinnService.harOrganisasjon("314")).thenReturn(true) listOf( "MANGLER_KOFUVI" to "2021-01-01T00:00:00Z", @@ -218,9 +210,7 @@ class VarslingStatusIntegrationTest { @Test fun `får ok dersom kontaktinfo er pollet og funnet`() { - `when`( - altinnService.hentOrganisasjoner() - ).thenReturn(listOf(Organisasjon(organizationNumber = "314", name = "Foo & Co", organizationForm = "BEDR"))) + `when`(altinnService.harOrganisasjon("314")).thenReturn(true) processVarslingStatus( """