Skip to content

Commit 4556ae3

Browse files
committed
Fjern annotasjon for tilgangskontroll med fagsystemid og ytelsestype
1 parent 404add9 commit 4556ae3

File tree

4 files changed

+56
-50
lines changed

4 files changed

+56
-50
lines changed

src/main/kotlin/no/nav/familie/tilbake/api/FagsakController.kt

+12-7
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import no.nav.familie.tilbake.sikkerhet.AuditLoggerEvent
1414
import no.nav.familie.tilbake.sikkerhet.Behandlerrolle
1515
import no.nav.familie.tilbake.sikkerhet.HenteParam
1616
import no.nav.familie.tilbake.sikkerhet.Rolletilgangssjekk
17+
import no.nav.familie.tilbake.sikkerhet.TilgangAdvice
1718
import no.nav.security.token.support.core.api.ProtectedWithClaims
1819
import org.springframework.http.MediaType
1920
import org.springframework.validation.annotation.Validated
@@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.RestController
2829
@Validated
2930
class FagsakController(
3031
private val fagsakService: FagsakService,
32+
private val tilgangAdvice: TilgangAdvice,
3133
) {
3234
@Operation(summary = "Hent fagsak informasjon med bruker og behandlinger")
3335
@GetMapping(
@@ -72,16 +74,19 @@ class FagsakController(
7274
path = ["/ytelsestype/{ytelsestype}/fagsak/{eksternFagsakId}/kanBehandlingOpprettesManuelt/v1"],
7375
produces = [MediaType.APPLICATION_JSON_VALUE],
7476
)
75-
@Rolletilgangssjekk(
76-
Behandlerrolle.SAKSBEHANDLER,
77-
"Sjekk om det er mulig å opprette behandling manuelt",
78-
AuditLoggerEvent.ACCESS,
79-
HenteParam.YTELSESTYPE_OG_EKSTERN_FAGSAK_ID,
80-
)
8177
fun kanBehandlingOpprettesManuelt(
8278
@PathVariable ytelsestype: Ytelsestype,
8379
@PathVariable eksternFagsakId: String,
84-
): Ressurs<KanBehandlingOpprettesManueltRespons> = Ressurs.success(fagsakService.kanBehandlingOpprettesManuelt(eksternFagsakId, ytelsestype))
80+
): Ressurs<KanBehandlingOpprettesManueltRespons> {
81+
tilgangAdvice.validerTilgangYtelsetypeOgFagsakId(
82+
ytelsestype = ytelsestype,
83+
eksternFagsakId = eksternFagsakId,
84+
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
85+
auditLoggerEvent = AuditLoggerEvent.ACCESS,
86+
handling = "Sjekk om det er mulig å opprette behandling manuelt",
87+
)
88+
return Ressurs.success(fagsakService.kanBehandlingOpprettesManuelt(eksternFagsakId, ytelsestype))
89+
}
8590

8691
@Operation(summary = "Hent behandlinger, kalles av fagsystem")
8792
@GetMapping(

src/main/kotlin/no/nav/familie/tilbake/api/forvaltning/ForvaltningController.kt

+20-14
Original file line numberDiff line numberDiff line change
@@ -158,32 +158,38 @@ class ForvaltningController(
158158
path = ["/ytelsestype/{ytelsestype}/fagsak/{eksternFagsakId}/v1"],
159159
produces = [MediaType.APPLICATION_JSON_VALUE],
160160
)
161-
@Rolletilgangssjekk(
162-
Behandlerrolle.FORVALTER,
163-
"Henter forvaltningsinformasjon",
164-
AuditLoggerEvent.NONE,
165-
HenteParam.YTELSESTYPE_OG_EKSTERN_FAGSAK_ID,
166-
)
167161
fun hentForvaltningsinfo(
168162
@PathVariable ytelsestype: Ytelsestype,
169163
@PathVariable eksternFagsakId: String,
170-
): Ressurs<List<Behandlingsinfo>> = Ressurs.success(forvaltningService.hentForvaltningsinfo(ytelsestype, eksternFagsakId))
164+
): Ressurs<List<Behandlingsinfo>> {
165+
tilgangAdvice.validerTilgangYtelsetypeOgFagsakId(
166+
ytelsestype = ytelsestype,
167+
eksternFagsakId = eksternFagsakId,
168+
minimumBehandlerrolle = Behandlerrolle.FORVALTER,
169+
auditLoggerEvent = AuditLoggerEvent.NONE,
170+
handling = "Henter forvaltningsinformasjon",
171+
)
172+
return Ressurs.success(forvaltningService.hentForvaltningsinfo(ytelsestype, eksternFagsakId))
173+
}
171174

172175
@Operation(summary = "Hent ikke arkiverte kravgrunnlag")
173176
@GetMapping(
174177
path = ["/ytelsestype/{ytelsestype}/fagsak/{eksternFagsakId}/ikke-arkivert-kravgrunnlag"],
175178
produces = [MediaType.APPLICATION_JSON_VALUE],
176179
)
177-
@Rolletilgangssjekk(
178-
Behandlerrolle.FORVALTER,
179-
"Henter ikke arkiverte kravgrunnlag",
180-
AuditLoggerEvent.NONE,
181-
HenteParam.YTELSESTYPE_OG_EKSTERN_FAGSAK_ID,
182-
)
183180
fun hentKravgrunnlagsinfo(
184181
@PathVariable ytelsestype: Ytelsestype,
185182
@PathVariable eksternFagsakId: String,
186-
): Ressurs<List<Kravgrunnlagsinfo>> = Ressurs.success(forvaltningService.hentIkkeArkiverteKravgrunnlag(ytelsestype, eksternFagsakId))
183+
): Ressurs<List<Kravgrunnlagsinfo>> {
184+
tilgangAdvice.validerTilgangYtelsetypeOgFagsakId(
185+
ytelsestype = ytelsestype,
186+
eksternFagsakId = eksternFagsakId,
187+
minimumBehandlerrolle = Behandlerrolle.FORVALTER,
188+
auditLoggerEvent = AuditLoggerEvent.NONE,
189+
handling = "Henter ikke arkiverte kravgrunnlag",
190+
)
191+
return Ressurs.success(forvaltningService.hentIkkeArkiverteKravgrunnlag(ytelsestype, eksternFagsakId))
192+
}
187193

188194
@Operation(summary = "Oppretter FinnGammelBehandlingUtenOppgaveTask som logger ut gamle behandlinger uten åpen oppgave")
189195
@PostMapping(

src/main/kotlin/no/nav/familie/tilbake/sikkerhet/TilgangAdvice.kt

+22-19
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import kotlin.reflect.KProperty1
3333
import kotlin.reflect.full.declaredMemberProperties
3434

3535
enum class HenteParam {
36-
YTELSESTYPE_OG_EKSTERN_FAGSAK_ID,
3736
FAGSYSTEM_OG_EKSTERN_FAGSAK_ID,
3837
MOTTATT_XML_ID,
3938
EKSTERN_KRAVGRUNNLAG_ID,
@@ -107,31 +106,35 @@ class TilgangAdvice(
107106
)
108107
}
109108

109+
fun validerTilgangYtelsetypeOgFagsakId(
110+
ytelsestype: Ytelsestype,
111+
eksternFagsakId: String,
112+
minimumBehandlerrolle: Behandlerrolle,
113+
auditLoggerEvent: AuditLoggerEvent,
114+
handling: String,
115+
) {
116+
val saksbehandler = ContextService.hentSaksbehandler(SecureLog.Context.tom())
117+
val fagsystem = FagsystemUtil.hentFagsystemFraYtelsestype(ytelsestype)
118+
val fagsak = fagsakRepository.findByFagsystemAndEksternFagsakId(fagsystem, eksternFagsakId)
119+
val logContext = SecureLog.Context.utenBehandling(fagsak?.eksternFagsakId)
120+
validate(
121+
fagsystem = fagsystem,
122+
minimumBehandlerrolle = minimumBehandlerrolle,
123+
fagsak = fagsak,
124+
handling = handling,
125+
saksbehandler = saksbehandler,
126+
auditLoggerEvent = auditLoggerEvent,
127+
logContext = logContext,
128+
)
129+
}
130+
110131
private fun validateFagsystemTilgangIGetRequest(
111132
param: HenteParam,
112133
requestBody: Array<Any>,
113134
rolletilgangssjekk: Rolletilgangssjekk,
114135
saksbehandler: String,
115136
) {
116137
when (param) {
117-
HenteParam.YTELSESTYPE_OG_EKSTERN_FAGSAK_ID -> {
118-
val ytelsestype = Ytelsestype.valueOf(requestBody.first().toString())
119-
val fagsystem = FagsystemUtil.hentFagsystemFraYtelsestype(ytelsestype)
120-
val eksternFagsakId = requestBody[1].toString()
121-
val fagsak = fagsakRepository.findByFagsystemAndEksternFagsakId(fagsystem, eksternFagsakId)
122-
val logContext = SecureLog.Context.utenBehandling(fagsak?.eksternFagsakId)
123-
124-
validate(
125-
fagsystem = fagsystem,
126-
minimumBehandlerrolle = rolletilgangssjekk.minimumBehandlerrolle,
127-
fagsak = fagsak,
128-
handling = rolletilgangssjekk.handling,
129-
saksbehandler = saksbehandler,
130-
auditLoggerEvent = rolletilgangssjekk.auditLoggerEvent,
131-
logContext = logContext,
132-
)
133-
}
134-
135138
HenteParam.FAGSYSTEM_OG_EKSTERN_FAGSAK_ID -> {
136139
val fagsystem = Fagsystem.valueOf(requestBody.first().toString())
137140
val eksternFagsakId = requestBody[1].toString()

src/test/kotlin/no/nav/familie/tilbake/sikkerhet/TilgangAdviceTest.kt

+2-10
Original file line numberDiff line numberDiff line change
@@ -393,19 +393,11 @@ internal class TilgangAdviceTest : OppslagSpringRunnerTest() {
393393

394394
@Test
395395
fun `sjekkTilgang skal finne personer basert på ytelsestype og eksternFagsakId for henteparam`() {
396+
every { mockIntegrasjonerClient.sjekkTilgangTilPersoner(listOf("1232"), any()) } returns listOf(Tilgang(personIdent, true, null))
396397
val token = opprettToken("abc", listOf(BARNETRYGD_SAKSBEHANDLER_ROLLE))
397398
opprettRequestContext("dummy", HttpMethod.PUT, token)
398-
every { mockIntegrasjonerClient.sjekkTilgangTilPersoner(listOf("1232"), any()) } returns listOf(Tilgang(personIdent, true, null))
399-
every { mockJoinpoint.args } returns arrayOf(Ytelsestype.BARNETRYGD, fagsak.eksternFagsakId)
400-
val rolletilgangssjekk =
401-
Rolletilgangssjekk(
402-
Behandlerrolle.SAKSBEHANDLER,
403-
"Setter behandling på vent",
404-
AuditLoggerEvent.ACCESS,
405-
HenteParam.YTELSESTYPE_OG_EKSTERN_FAGSAK_ID,
406-
)
407399

408-
tilgangAdvice.sjekkTilgang(mockJoinpoint, rolletilgangssjekk)
400+
tilgangAdvice.validerTilgangYtelsetypeOgFagsakId(Ytelsestype.BARNETRYGD, fagsak.eksternFagsakId, Behandlerrolle.SAKSBEHANDLER, AuditLoggerEvent.ACCESS, "test")
409401

410402
verify { mockIntegrasjonerClient.sjekkTilgangTilPersoner(listOf("1232"), any()) }
411403
}

0 commit comments

Comments
 (0)