Skip to content

Commit

Permalink
Starter å implementere rollesjekk på en mer direkte måte
Browse files Browse the repository at this point in the history
  • Loading branch information
sillerud committed Feb 21, 2025
1 parent f159f7a commit f79834b
Show file tree
Hide file tree
Showing 20 changed files with 520 additions and 544 deletions.
110 changes: 59 additions & 51 deletions src/main/kotlin/no/nav/familie/tilbake/api/BehandlingController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import no.nav.familie.kontrakter.felles.tilbakekreving.OpprettTilbakekrevingRequ
import no.nav.familie.tilbake.api.dto.BehandlingDto
import no.nav.familie.tilbake.api.dto.BehandlingPåVentDto
import no.nav.familie.tilbake.api.dto.BehandlingsstegDto
import no.nav.familie.tilbake.api.dto.BehandlingsstegFatteVedtaksstegDto
import no.nav.familie.tilbake.api.dto.ByttEnhetDto
import no.nav.familie.tilbake.api.dto.HenleggelsesbrevFritekstDto
import no.nav.familie.tilbake.api.dto.OpprettRevurderingDto
Expand All @@ -21,8 +22,8 @@ import no.nav.familie.tilbake.forvaltning.ForvaltningService
import no.nav.familie.tilbake.log.SecureLog
import no.nav.familie.tilbake.sikkerhet.AuditLoggerEvent
import no.nav.familie.tilbake.sikkerhet.Behandlerrolle
import no.nav.familie.tilbake.sikkerhet.HenteParam
import no.nav.familie.tilbake.sikkerhet.Rolletilgangssjekk
import no.nav.familie.tilbake.sikkerhet.TilgangAdvice
import no.nav.familie.tilbake.sikkerhet.TilgangService
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.springframework.http.HttpStatus
Expand All @@ -47,6 +48,7 @@ class BehandlingController(
private val forvaltningService: ForvaltningService,
private val behandlingskontrollService: BehandlingskontrollService,
private val tilgangService: TilgangService,
private val tilgangAdvice: TilgangAdvice,
) {
@Operation(summary = "Opprett tilbakekrevingsbehandling automatisk, kan kalles av fagsystem, batch")
@PostMapping(
Expand Down Expand Up @@ -98,33 +100,39 @@ class BehandlingController(
path = ["/v1/{behandlingId}"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
minimumBehandlerrolle = Behandlerrolle.VEILEDER,
handling = "Henter tilbakekrevingsbehandling",
AuditLoggerEvent.ACCESS,
henteParam = HenteParam.BEHANDLING_ID,
)
fun hentBehandling(
@PathVariable("behandlingId") behandlingId: UUID,
): Ressurs<BehandlingDto> = Ressurs.success(behandlingService.hentBehandling(behandlingId))
): Ressurs<BehandlingDto> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.VEILEDER,
auditLoggerEvent = AuditLoggerEvent.ACCESS,
handling = "Henter tilbakekrevingsbehandling",
)
return Ressurs.success(behandlingService.hentBehandling(behandlingId))
}

@Operation(summary = "Utfør behandlingssteg og fortsett behandling til neste steg")
@PostMapping(
path = ["{behandlingId}/steg/v1"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
// Rollen blir endret til BESLUTTER i Tilgangskontroll for FatteVedtak steg
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Utfører behandlingens aktiv steg og fortsetter den til neste steg",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun utførBehandlingssteg(
@PathVariable("behandlingId") behandlingId: UUID,
@Valid @RequestBody
behandlingsstegDto: BehandlingsstegDto,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle =
if (behandlingsstegDto is BehandlingsstegFatteVedtaksstegDto) {
Behandlerrolle.BESLUTTER
} else {
Behandlerrolle.SAKSBEHANDLER
},
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Utfører behandlingens aktiv steg og fortsetter den til neste steg",
)
// Oppdaterer ansvarlig saksbehandler først slik at historikkinnslag får riktig saksbehandler
// Hvis det feiler noe,bør det rullet tilbake helt siden begge 2 er på samme transaksjon
if (stegService.kanAnsvarligSaksbehandlerOppdateres(behandlingId, behandlingsstegDto)) {
Expand All @@ -141,17 +149,17 @@ class BehandlingController(
path = ["{behandlingId}/vent/v1"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Setter saksbehandler behandling på vent eller utvider fristen",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun settBehandlingPåVent(
@PathVariable("behandlingId") behandlingId: UUID,
@Valid @RequestBody
behandlingPåVentDto: BehandlingPåVentDto,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Setter saksbehandler behandling på vent eller utvider fristen",
)
behandlingService.settBehandlingPåVent(behandlingId, behandlingPåVentDto)
return Ressurs.success("OK")
}
Expand All @@ -161,15 +169,15 @@ class BehandlingController(
path = ["{behandlingId}/gjenoppta/v1"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Saksbehandler tar behandling av vent etter å motta brukerrespons eller dokumentasjon",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun taBehandlingAvVent(
@PathVariable("behandlingId") behandlingId: UUID,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Saksbehandler tar behandling av vent etter å motta brukerrespons eller dokumentasjon",
)
behandlingService.taBehandlingAvvent(behandlingId)
return Ressurs.success("OK")
}
Expand All @@ -179,17 +187,17 @@ class BehandlingController(
path = ["{behandlingId}/henlegg/v1"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Saksbehandler henlegger behandling",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun henleggBehandling(
@PathVariable("behandlingId") behandlingId: UUID,
@Valid @RequestBody
henleggelsesbrevFritekstDto: HenleggelsesbrevFritekstDto,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Saksbehandler henlegger behandling",
)
behandlingService.henleggBehandling(behandlingId, henleggelsesbrevFritekstDto)
return Ressurs.success("OK")
}
Expand All @@ -199,17 +207,17 @@ class BehandlingController(
path = ["{behandlingId}/bytt-enhet/v1"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Saksbehandler bytter enhet på behandling",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun byttEnhet(
@PathVariable("behandlingId") behandlingId: UUID,
@Valid @RequestBody
byttEnhetDto: ByttEnhetDto,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Saksbehandler bytter enhet på behandling",
)
behandlingService.byttBehandlendeEnhet(behandlingId, byttEnhetDto)
return Ressurs.success("OK")
}
Expand All @@ -219,15 +227,15 @@ class BehandlingController(
path = ["{behandlingId}/angre-send-til-beslutter"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Saksbehandler angrer på send til beslutter og tar behandling tilbake til saksbehandler",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun angreSendTilBeslutter(
@PathVariable("behandlingId") behandlingId: UUID,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Saksbehandler angrer på send til beslutter og tar behandling tilbake til saksbehandler",
)
behandlingService.angreSendTilBeslutter(behandlingId)
return Ressurs.success("OK")
}
Expand All @@ -237,15 +245,15 @@ class BehandlingController(
path = ["{behandlingId}/flytt-behandling-til-fakta"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Flytter behandling tilbake til Fakta",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun flyttBehandlingTilFakta(
@PathVariable behandlingId: UUID,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Flytter behandling tilbake til Fakta",
)
val behandling = behandlingService.hentBehandling(behandlingId)
val logContext = SecureLog.Context.medBehandling(behandling.eksternFagsakId, behandling.behandlingId.toString())
validerKanSetteBehandlingTilbakeTilFakta(behandling, logContext)
Expand Down
36 changes: 20 additions & 16 deletions src/main/kotlin/no/nav/familie/tilbake/api/BeregningController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ import no.nav.familie.tilbake.api.dto.BeregningsresultatDto
import no.nav.familie.tilbake.beregning.TilbakekrevingsberegningService
import no.nav.familie.tilbake.sikkerhet.AuditLoggerEvent
import no.nav.familie.tilbake.sikkerhet.Behandlerrolle
import no.nav.familie.tilbake.sikkerhet.HenteParam
import no.nav.familie.tilbake.sikkerhet.Rolletilgangssjekk
import no.nav.familie.tilbake.sikkerhet.TilgangAdvice
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.springframework.http.MediaType
import org.springframework.validation.annotation.Validated
Expand All @@ -28,36 +27,41 @@ import java.util.UUID
@Validated
class BeregningController(
val tilbakekrevingsberegningService: TilbakekrevingsberegningService,
private val tilgangAdvice: TilgangAdvice,
) {
@Operation(summary = "Beregn feilutbetalt beløp for nye delte perioder")
@PostMapping(
path = ["{behandlingId}/beregn/v1"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
handling = "Beregner feilutbetalt beløp for nye delte perioder",
AuditLoggerEvent.ACCESS,
henteParam = HenteParam.BEHANDLING_ID,
)
fun beregnBeløp(
@PathVariable("behandlingId") behandlingId: UUID,
@Valid @RequestBody
perioder: List<Datoperiode>,
): Ressurs<BeregnetPerioderDto> = Ressurs.success(tilbakekrevingsberegningService.beregnBeløp(behandlingId, perioder))
): Ressurs<BeregnetPerioderDto> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.ACCESS,
handling = "Beregner feilutbetalt beløp for nye delte perioder",
)
return Ressurs.success(tilbakekrevingsberegningService.beregnBeløp(behandlingId, perioder))
}

@Operation(summary = "Hent beregningsresultat")
@GetMapping(
path = ["{behandlingId}/beregn/resultat/v1"],
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
minimumBehandlerrolle = Behandlerrolle.VEILEDER,
handling = "Henter beregningsresultat",
AuditLoggerEvent.ACCESS,
henteParam = HenteParam.BEHANDLING_ID,
)
fun hentBeregningsresultat(
@PathVariable("behandlingId") behandlingId: UUID,
): Ressurs<BeregningsresultatDto> = Ressurs.success(tilbakekrevingsberegningService.hentBeregningsresultat(behandlingId))
): Ressurs<BeregningsresultatDto> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.VEILEDER,
auditLoggerEvent = AuditLoggerEvent.ACCESS,
handling = "Henter beregningsresultat",
)
return Ressurs.success(tilbakekrevingsberegningService.hentBeregningsresultat(behandlingId))
}
}
26 changes: 17 additions & 9 deletions src/main/kotlin/no/nav/familie/tilbake/api/DokumentController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ import no.nav.familie.tilbake.dokumentbestilling.vedtak.Avsnitt
import no.nav.familie.tilbake.dokumentbestilling.vedtak.VedtaksbrevService
import no.nav.familie.tilbake.sikkerhet.AuditLoggerEvent
import no.nav.familie.tilbake.sikkerhet.Behandlerrolle
import no.nav.familie.tilbake.sikkerhet.HenteParam
import no.nav.familie.tilbake.sikkerhet.Rolletilgangssjekk
import no.nav.familie.tilbake.sikkerhet.TilgangAdvice
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.GetMapping
Expand All @@ -38,6 +38,7 @@ class DokumentController(
private val henleggelsesbrevService: HenleggelsesbrevService,
private val vedtaksbrevService: VedtaksbrevService,
private val lagreUtkastVedtaksbrevService: LagreUtkastVedtaksbrevService,
private val tilgangAdvice: TilgangAdvice,
) {
@Operation(summary = "Bestill brevsending")
@PostMapping("/bestill")
Expand Down Expand Up @@ -105,26 +106,33 @@ class DokumentController(
"/vedtaksbrevtekst/{behandlingId}",
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(Behandlerrolle.VEILEDER, "Henter vedtaksbrevtekst", AuditLoggerEvent.ACCESS, HenteParam.BEHANDLING_ID)
fun hentVedtaksbrevtekst(
@PathVariable behandlingId: UUID,
): Ressurs<List<Avsnitt>> = Ressurs.success(vedtaksbrevService.hentVedtaksbrevSomTekst(behandlingId))
): Ressurs<List<Avsnitt>> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.VEILEDER,
auditLoggerEvent = AuditLoggerEvent.ACCESS,
handling = "Henter vedtaksbrevtekst",
)
return Ressurs.success(vedtaksbrevService.hentVedtaksbrevSomTekst(behandlingId))
}

@Operation(summary = "Lagre utkast av vedtaksbrev")
@PostMapping(
"/vedtaksbrevtekst/{behandlingId}/utkast",
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Lagrer utkast av vedtaksbrev",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun lagreUtkastVedtaksbrev(
@PathVariable behandlingId: UUID,
@RequestBody fritekstavsnitt: FritekstavsnittDto,
): Ressurs<String> {
tilgangAdvice.validerTilgangBehandlingID(
behandlingId = behandlingId,
minimumBehandlerrolle = Behandlerrolle.SAKSBEHANDLER,
auditLoggerEvent = AuditLoggerEvent.UPDATE,
handling = "Lagrer utkast av vedtaksbrev",
)
lagreUtkastVedtaksbrevService.lagreUtkast(behandlingId, fritekstavsnitt)
return Ressurs.success("OK")
}
Expand Down
Loading

0 comments on commit f79834b

Please sign in to comment.