Skip to content

Commit

Permalink
Legger til tilgangsstyring der den var manglende (#2703)
Browse files Browse the repository at this point in the history
* Legger til tilgangsstyring der den var manglende

* Flere endepunkt som ikke er beskyttet
  • Loading branch information
mbolstad authored Oct 29, 2024
1 parent f858ca3 commit c207f02
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 41 deletions.
54 changes: 23 additions & 31 deletions src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt
Original file line number Diff line number Diff line change
Expand Up @@ -124,46 +124,38 @@ fun Route.OppgaveKoApis() {

get("/{id}/saksbehandlere") {
requestContextService.withRequestContext(call) {
val oppgavekøId = call.parameters["id"]!!
call.respond(
oppgaveKoTjeneste.hentSaksbehandlereForKo(oppgavekøId.toLong())
)
}
}

// TODO: Slett dette endepunktet når /antall blir tatt i bruk
get("/{id}/antall-oppgaver") {
requestContextService.withRequestContext(call) {
val oppgavekøId = call.parameters["id"]!!
val filtrerReserverte = call.request.queryParameters["filtrer_reserverte"]?.let { it.toBoolean() } ?: true

val antall = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") {
oppgaveKoTjeneste.hentAntallOppgaverForKø(
oppgavekøId.toLong(),
filtrerReserverte
if (pepClient.harBasisTilgang()) {
val oppgavekøId = call.parameters["id"]!!
call.respond(
oppgaveKoTjeneste.hentSaksbehandlereForKo(oppgavekøId.toLong())
)
} else {
call.respond(HttpStatusCode.Forbidden)
}
call.respond(antall)
}
}

get("/{id}/antall") {
requestContextService.withRequestContext(call) {
val oppgavekøId = call.parameters["id"]!!
if (pepClient.harBasisTilgang()) {
val oppgavekøId = call.parameters["id"]!!

val antallUtenReserverte = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") {
oppgaveKoTjeneste.hentAntallOppgaverForKø(
oppgavekøId.toLong(),
true
)
}
val antallMedReserverte = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") {
oppgaveKoTjeneste.hentAntallOppgaverForKø(
oppgavekøId.toLong(),
false
)
val antallUtenReserverte = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") {
oppgaveKoTjeneste.hentAntallOppgaverForKø(
oppgavekøId.toLong(),
true
)
}
val antallMedReserverte = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") {
oppgaveKoTjeneste.hentAntallOppgaverForKø(
oppgavekøId.toLong(),
false
)
}
call.respond(AntallOppgaverOgReserverte(antallUtenReserverte, antallMedReserverte))
} else {
call.respond(HttpStatusCode.Forbidden)
}
call.respond(AntallOppgaverOgReserverte(antallUtenReserverte, antallMedReserverte))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,15 @@ class AvdelingslederTjeneste(
private val reservasjonV3DtoBuilder: ReservasjonV3DtoBuilder,
) {
suspend fun hentOppgaveKø(uuid: UUID): OppgavekøDto {
sjekkTilgang()

val oppgaveKø = oppgaveKøRepository.hentOppgavekø(uuid, ignorerSkjerming = false)
return lagOppgaveKøDto(oppgaveKø)
}

suspend fun hentOppgaveKøer(): List<OppgavekøDto> {
if (!erOppgaveStyrer()) {
return emptyList()
}
sjekkTilgang()

return oppgaveKøRepository.hent().map {
lagOppgaveKøDto(it)
}.sortedBy { it.navn }
Expand All @@ -52,17 +53,18 @@ class AvdelingslederTjeneste(
sistEndret = oppgaveKø.sistEndret,
skjermet = oppgaveKø.skjermet,
antallBehandlinger = oppgaveTjeneste.hentAntallOppgaver(oppgavekøId = oppgaveKø.id, taMedReserverte = true),
antallUreserverteOppgaver = oppgaveTjeneste.hentAntallOppgaver(oppgavekøId = oppgaveKø.id, taMedReserverte = false),
antallUreserverteOppgaver = oppgaveTjeneste.hentAntallOppgaver(
oppgavekøId = oppgaveKø.id,
taMedReserverte = false
),
saksbehandlere = oppgaveKø.saksbehandlere,
kriterier = oppgaveKø.lagKriterier()
)

private suspend fun erOppgaveStyrer() = (pepClient.erOppgaveStyrer())

suspend fun opprettOppgaveKø(): IdDto {
if (!erOppgaveStyrer()) {
return IdDto(UUID.randomUUID().toString())
}
sjekkTilgang()

val uuid = UUID.randomUUID()
oppgaveKøRepository.lagre(uuid) {
Expand All @@ -85,9 +87,8 @@ class AvdelingslederTjeneste(
}

suspend fun slettOppgavekø(uuid: UUID) {
if (!erOppgaveStyrer()) {
return
}
sjekkTilgang()

oppgaveKøRepository.slett(uuid)
}

Expand All @@ -103,6 +104,8 @@ class AvdelingslederTjeneste(
}

suspend fun fjernSaksbehandler(epost: String) {
sjekkTilgang()

saksbehandlerRepository.slettSaksbehandler(epost)
oppgaveKøRepository.hent().forEach { t: OppgaveKø ->
oppgaveKøRepository.lagre(t.id) { oppgaveKø ->
Expand All @@ -115,6 +118,8 @@ class AvdelingslederTjeneste(
}

suspend fun hentSaksbehandlere(): List<SaksbehandlerDto> {
sjekkTilgang()

val saksbehandlersKoer = hentSaksbehandlersOppgavekoer()
return saksbehandlersKoer.entries.map {
SaksbehandlerDto(
Expand All @@ -127,6 +132,8 @@ class AvdelingslederTjeneste(
}

suspend fun endreBehandlingsTyper(behandling: BehandlingsTypeDto) {
sjekkTilgang()

oppgaveKøRepository.lagre(UUID.fromString(behandling.id)) { oppgaveKø ->
oppgaveKø!!.filtreringBehandlingTyper =
behandling.behandlingsTyper.filter { it.checked }
Expand All @@ -137,6 +144,8 @@ class AvdelingslederTjeneste(
}

private suspend fun hentSaksbehandlersOppgavekoer(): Map<Saksbehandler, List<OppgavekøDto>> {
sjekkTilgang()

val koer = oppgaveTjeneste.hentOppgaveKøer()
val saksbehandlere = saksbehandlerRepository.hentAlleSaksbehandlere()
val map = mutableMapOf<Saksbehandler, List<OppgavekøDto>>()
Expand Down Expand Up @@ -166,6 +175,8 @@ class AvdelingslederTjeneste(
}

suspend fun endreSkjerming(skjermet: SkjermetDto) {
sjekkTilgang()

oppgaveKøRepository.lagre(UUID.fromString(skjermet.id)) { oppgaveKø ->
oppgaveKø!!.skjermet = skjermet.skjermet
oppgaveKø
Expand All @@ -174,6 +185,8 @@ class AvdelingslederTjeneste(
}

suspend fun endreYtelsesType(ytelse: YtelsesTypeDto) {
sjekkTilgang()

val omsorgsdagerYtelser = listOf(
FagsakYtelseType.OMSORGSDAGER,
FagsakYtelseType.OMSORGSPENGER_KS,
Expand All @@ -197,6 +210,8 @@ class AvdelingslederTjeneste(
}

suspend fun endreKriterium(kriteriumDto: AndreKriterierDto) {
sjekkTilgang()

oppgaveKøRepository.lagre(UUID.fromString(kriteriumDto.id))
{ oppgaveKø ->
if (kriteriumDto.checked) {
Expand All @@ -213,13 +228,17 @@ class AvdelingslederTjeneste(
}

suspend fun endreOppgavekøNavn(køNavn: OppgavekøNavnDto) {
sjekkTilgang()

oppgaveKøRepository.lagre(UUID.fromString(køNavn.id)) { oppgaveKø ->
oppgaveKø!!.navn =Navn.navn
oppgaveKø
}
}

suspend fun endreKøSortering(køSortering: KøSorteringDto) {
sjekkTilgang()

oppgaveKøRepository.lagre(UUID.fromString(køSortering.id)) { oppgaveKø ->
oppgaveKø!!.sortering =Sortering.oppgavekoSorteringValg
oppgaveKø
Expand All @@ -229,6 +248,8 @@ class AvdelingslederTjeneste(
}

suspend fun endreKøSorteringDato(datoSortering: SorteringDatoDto) {
sjekkTilgang()

oppgaveKøRepository.lagre(UUID.fromString(datoSortering.id)) { oppgaveKø ->
oppgaveKø!!.fomDato = datoSortering.fomDato
oppgaveKø.tomDato = datoSortering.tomDato
Expand All @@ -238,6 +259,8 @@ class AvdelingslederTjeneste(
}

suspend fun endreKøKriterier(kriteriumDto: KriteriumDto) {
sjekkTilgang()

kriteriumDto.valider()
oppgaveKøRepository.lagre(UUID.fromString(kriteriumDto.id)) { oppgaveKø ->
if (kriteriumDto.checked != null && kriteriumDto.checked == false)
Expand Down Expand Up @@ -273,6 +296,8 @@ class AvdelingslederTjeneste(
}

suspend fun leggFjernSaksbehandlereFraOppgaveKø(saksbehandlereDto: Array<SaksbehandlerOppgavekoDto>) {
sjekkTilgang()

val saksbehandlerKøId = saksbehandlereDto.first().id
if (!saksbehandlereDto.all { it.id == saksbehandlerKøId }) {
throw IllegalArgumentException("Støtter ikke å legge til eller fjerne saksbehandlere fra flere køer samtidig")
Expand All @@ -295,6 +320,8 @@ class AvdelingslederTjeneste(
}

suspend fun leggFjernSaksbehandlerOppgavekø(saksbehandlerKø: SaksbehandlerOppgavekoDto) {
sjekkTilgang()

val saksbehandler = saksbehandlerRepository.finnSaksbehandlerMedEpost(
saksbehandlerKø.epost
)!!
Expand Down Expand Up @@ -356,4 +383,8 @@ class AvdelingslederTjeneste(
}
}
}

private suspend fun sjekkTilgang() {
if (!erOppgaveStyrer()) throw IllegalStateException("Er ikke oppgavestyrer")
}
}

0 comments on commit c207f02

Please sign in to comment.