Skip to content

Commit

Permalink
fix: fjerner AbacDto fra dtoer
Browse files Browse the repository at this point in the history
  • Loading branch information
frode-carlsen committed Feb 12, 2020
1 parent 0452539 commit 7184869
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 95 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package no.nav.vedtak.felles.prosesstask.rest;

import java.util.function.Function;

import no.nav.vedtak.sikkerhet.abac.AbacDataAttributter;

/**
* Mapper som returnerer default empty {@link AbacDataAttributter} slik at Abac tilgangskontroll gjøres(men uten custom nøkler, kun user sin
* kontekst).
* <p>
*
* <pre>
* public void myRestMethod(@NotNull @TilpassetAbacAttributt(supplierClass=AbacEmptySupplier.class) MyDto dtoWithNoAbacAttributtes) {
* ...
* }
* </pre>
*/
public class AbacEmptySupplier implements Function<Object, AbacDataAttributter> {

@Override
public AbacDataAttributter apply(Object obj) {
return AbacDataAttributter.opprett();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import no.nav.vedtak.log.sporingslogg.Sporingsdata;
import no.nav.vedtak.log.sporingslogg.SporingsloggHelper;
import no.nav.vedtak.sikkerhet.abac.BeskyttetRessurs;
import no.nav.vedtak.sikkerhet.abac.TilpassetAbacAttributt;

@OpenAPIDefinition(tags = @Tag(name = "prosesstask", description = "Håndtering av asynkrone oppgaver i form av prosesstask"))
@Path("/prosesstask")
Expand All @@ -66,18 +67,13 @@ public ProsessTaskRestTjeneste(ProsessTaskApplikasjonTjeneste prosessTaskApplika
@POST
@Path("/create")
@Consumes(MediaType.APPLICATION_JSON)
@Operation(
description = "Oppretter en prosess task i henhold til request",
summary = "Oppretter en ny task klar for kjøring.",
tags = "prosesstask",
responses = {
@Operation(description = "Oppretter en prosess task i henhold til request", summary = "Oppretter en ny task klar for kjøring.", tags = "prosesstask", responses = {
@ApiResponse(responseCode = "202", description = "Prosesstaskens oppdatert informasjon"),
@ApiResponse(responseCode = "500", description = "Feilet pga ukjent feil eller tekniske/funksjonelle feil")
}
)
})
@BeskyttetRessurs(action = CREATE, ressurs = DRIFT)
public ProsessTaskDataDto createProsessTask(@Parameter(description = "Informasjon for restart en eksisterende prosesstask") @Valid ProsessTaskOpprettInputDto inputDto) {
//kjøres manuelt for å avhjelpe feilsituasjon, da er det veldig greit at det blir logget!
public ProsessTaskDataDto createProsessTask(@Parameter(description = "Informasjon for restart en eksisterende prosesstask") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid ProsessTaskOpprettInputDto inputDto) {
// kjøres manuelt for å avhjelpe feilsituasjon, da er det veldig greit at det blir logget!
logger.info("Oppretter prossess task av type {}", inputDto.getTaskType());

return prosessTaskApplikasjonTjeneste.opprettTask(inputDto);
Expand All @@ -86,19 +82,15 @@ public ProsessTaskDataDto createProsessTask(@Parameter(description = "Informasjo
@POST
@Path("/launch")
@Consumes(MediaType.APPLICATION_JSON)
@Operation(description = "Restarter en eksisterende prosesstask.",
summary = "En allerede FERDIG prosesstask kan ikke restartes. En prosesstask har normalt et gitt antall forsøk den kan kjøres automatisk. " +
"Dette endepunktet vil tvinge tasken til å trigge uavhengig av maks antall forsøk",
tags = "prosesstask",
responses = {
@ApiResponse(responseCode = "200", description = "Prosesstaskens oppdatert informasjon",
content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskRestartResultatDto.class))),
@ApiResponse(responseCode = "500", description = "Feilet pga ukjent feil eller tekniske/funksjonelle feil")
}
)
@Operation(description = "Restarter en eksisterende prosesstask.", summary = "En allerede FERDIG prosesstask kan ikke restartes. En prosesstask har normalt et gitt antall forsøk den kan kjøres automatisk. "
+
"Dette endepunktet vil tvinge tasken til å trigge uavhengig av maks antall forsøk", tags = "prosesstask", responses = {
@ApiResponse(responseCode = "200", description = "Prosesstaskens oppdatert informasjon", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskRestartResultatDto.class))),
@ApiResponse(responseCode = "500", description = "Feilet pga ukjent feil eller tekniske/funksjonelle feil")
})
@BeskyttetRessurs(action = CREATE, ressurs = DRIFT)
public ProsessTaskRestartResultatDto restartProsessTask(@Parameter(description = "Informasjon for restart en eksisterende prosesstask") @Valid ProsessTaskRestartInputDto restartInputDto) {
//kjøres manuelt for å avhjelpe feilsituasjon, da er det veldig greit at det blir logget!
public ProsessTaskRestartResultatDto restartProsessTask(@Parameter(description = "Informasjon for restart en eksisterende prosesstask") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid ProsessTaskRestartInputDto restartInputDto) {
// kjøres manuelt for å avhjelpe feilsituasjon, da er det veldig greit at det blir logget!
logger.info("Restarter prossess task {}", restartInputDto.getProsessTaskId());

return prosessTaskApplikasjonTjeneste.flaggProsessTaskForRestart(restartInputDto);
Expand All @@ -107,18 +99,13 @@ public ProsessTaskRestartResultatDto restartProsessTask(@Parameter(description =
@POST
@Path("/retryall")
@Consumes(MediaType.APPLICATION_JSON)
@Operation(description = "Restarter alle prosesstask med status FEILET.",
summary = "Dette endepunktet vil tvinge feilede tasks til å trigge ett forsøk uavhengig av maks antall forsøk",
tags = "prosesstask",
responses = {
@ApiResponse(responseCode = "200", description = "Response med liste av prosesstasks som restartes",
content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskRetryAllResultatDto.class))),
@Operation(description = "Restarter alle prosesstask med status FEILET.", summary = "Dette endepunktet vil tvinge feilede tasks til å trigge ett forsøk uavhengig av maks antall forsøk", tags = "prosesstask", responses = {
@ApiResponse(responseCode = "200", description = "Response med liste av prosesstasks som restartes", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskRetryAllResultatDto.class))),
@ApiResponse(responseCode = "500", description = "Feilet pga ukjent feil eller tekniske/funksjonelle feil")
}
)
})
@BeskyttetRessurs(action = CREATE, ressurs = DRIFT)
public ProsessTaskRetryAllResultatDto retryAllProsessTask() {
//kjøres manuelt for å avhjelpe feilsituasjon, da er det veldig greit at det blir logget!
// kjøres manuelt for å avhjelpe feilsituasjon, da er det veldig greit at det blir logget!
logger.info("Restarter alle prossess task i status FEILET");

return prosessTaskApplikasjonTjeneste.flaggAlleFeileteProsessTasksForRestart();
Expand All @@ -127,18 +114,14 @@ public ProsessTaskRetryAllResultatDto retryAllProsessTask() {
@POST
@Path("/list")
@Consumes(MediaType.APPLICATION_JSON)
@Operation(description = "Søker etter prosesstask med mulighet for filtrert søk.",
tags = "prosesstask",
responses = {
@ApiResponse(responseCode = "200", description = "Liste over prosesstasker, eller tom liste når angitt/default søkefilter ikke finner noen prosesstasker",
content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskDataDto.class)))
}
)
@Operation(description = "Søker etter prosesstask med mulighet for filtrert søk.", tags = "prosesstask", responses = {
@ApiResponse(responseCode = "200", description = "Liste over prosesstasker, eller tom liste når angitt/default søkefilter ikke finner noen prosesstasker", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskDataDto.class)))
})
@BeskyttetRessurs(action = READ, ressurs = DRIFT)
public List<ProsessTaskDataDto> finnProsessTasks(@Parameter(description = "Søkefilter for å begrense resultatet av returnerte prosesstask.") @Valid SokeFilterDto sokeFilterDto) {
public List<ProsessTaskDataDto> finnProsessTasks(@Parameter(description = "Søkefilter for å begrense resultatet av returnerte prosesstask.") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid SokeFilterDto sokeFilterDto) {
List<ProsessTaskDataDto> resultat = prosessTaskApplikasjonTjeneste.finnAlle(sokeFilterDto);

//må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her
// må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her
for (ProsessTaskDataDto dto : resultat) {
loggLesingAvPersondataFraProsessTask(dto, "/list");
}
Expand All @@ -149,21 +132,17 @@ public List<ProsessTaskDataDto> finnProsessTasks(@Parameter(description = "Søke
@POST
@Path("/feil")
@Consumes(MediaType.APPLICATION_JSON)
@Operation(description = "Henter informasjon om feilet prosesstask med angitt prosesstask-id",
tags = "prosesstask",
responses = {
@ApiResponse(responseCode = "200", description = "Angit prosesstask-id finnes",
content = @Content(mediaType = "application/json", schema = @Schema(implementation = FeiletProsessTaskDataDto.class))),
@Operation(description = "Henter informasjon om feilet prosesstask med angitt prosesstask-id", tags = "prosesstask", responses = {
@ApiResponse(responseCode = "200", description = "Angit prosesstask-id finnes", content = @Content(mediaType = "application/json", schema = @Schema(implementation = FeiletProsessTaskDataDto.class))),
@ApiResponse(responseCode = "404", description = "Tom respons når angitt prosesstask-id ikke finnes"),
@ApiResponse(responseCode = "400", description = "Feil input")
}
)
})
@BeskyttetRessurs(action = READ, ressurs = DRIFT)
public Response finnFeiletProsessTask(@NotNull @Parameter(description = "Prosesstask-id for feilet prosesstask") @Valid ProsessTaskIdDto prosessTaskIdDto) {
public Response finnFeiletProsessTask(@NotNull @Parameter(description = "Prosesstask-id for feilet prosesstask") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid ProsessTaskIdDto prosessTaskIdDto) {
Optional<FeiletProsessTaskDataDto> resultat = prosessTaskApplikasjonTjeneste.finnFeiletProsessTask(prosessTaskIdDto.getProsessTaskId());
if (resultat.isPresent()) {

//må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her
// må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her
loggLesingAvPersondataFraProsessTask(resultat.get(), "/no/nav/vedtak/felles/behandlingsprosess/prosesstask/rest/feil");

return Response.ok(resultat.get()).build();
Expand All @@ -174,21 +153,17 @@ public Response finnFeiletProsessTask(@NotNull @Parameter(description = "Prosess
@POST
@Path("/payload")
@Consumes(MediaType.APPLICATION_JSON)
@Operation(description = "Henter informasjon om prosesstask, inkludert payload for angitt prosesstask-id",
tags = "prosesstask",
responses = {
@ApiResponse(responseCode = "200", description = "Angit prosesstask-id finnes",
content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskDataPayloadDto.class))),
@Operation(description = "Henter informasjon om prosesstask, inkludert payload for angitt prosesstask-id", tags = "prosesstask", responses = {
@ApiResponse(responseCode = "200", description = "Angit prosesstask-id finnes", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskDataPayloadDto.class))),
@ApiResponse(responseCode = "404", description = "Tom respons når angitt prosesstask-id ikke finnes"),
@ApiResponse(responseCode = "400", description = "Feil input")
}
)
})
@BeskyttetRessurs(action = READ, ressurs = DRIFT)
public Response finnProsessTaskInkludertPayload(@NotNull @Parameter(description = "Prosesstask-id for en eksisterende prosesstask") @Valid ProsessTaskIdDto prosessTaskIdDto) {
public Response finnProsessTaskInkludertPayload(@NotNull @Parameter(description = "Prosesstask-id for en eksisterende prosesstask") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid ProsessTaskIdDto prosessTaskIdDto) {
Optional<ProsessTaskDataPayloadDto> resultat = prosessTaskApplikasjonTjeneste.finnProsessTaskMedPayload(prosessTaskIdDto.getProsessTaskId());
if (resultat.isPresent()) {

//må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her
// må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her
loggLesingAvPersondataFraProsessTask(resultat.get(), "/payload");

return Response.ok(resultat.get()).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import no.nav.vedtak.sikkerhet.abac.AbacDto;

@Schema
public class ProsessTaskIdDto implements AbacDto {
public class ProsessTaskIdDto {

@NotNull
@Min(0)
Expand All @@ -27,9 +27,4 @@ public ProsessTaskIdDto(Long prosessTaskId) { // NOSONAR Input-dto, ingen behov
public Long getProsessTaskId() {
return prosessTaskId;
}

@Override
public AbacDataAttributter abacAttributter() {
return AbacDataAttributter.opprett(); //denne er tom, ProsessTask-API har i praksis rollebasert tilgangskontroll
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import no.nav.vedtak.sikkerhet.abac.AbacDataAttributter;
import no.nav.vedtak.sikkerhet.abac.AbacDto;

public class ProsessTaskOpprettInputDto implements AbacDto {
public class ProsessTaskOpprettInputDto {

@NotNull
@Size(min = 1, max = 100)
Expand Down Expand Up @@ -38,8 +35,4 @@ public void setTaskParametre(Properties taskParametre) {
this.taskParametre = taskParametre;
}

@Override
public AbacDataAttributter abacAttributter() {
return AbacDataAttributter.opprett();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@
import javax.validation.constraints.Size;

import io.swagger.v3.oas.annotations.media.Schema;
import no.nav.vedtak.sikkerhet.abac.AbacDataAttributter;
import no.nav.vedtak.sikkerhet.abac.AbacDto;

@Schema(description = "Informasjon for restart av en eksisterende prosesstask")
public class ProsessTaskRestartInputDto implements AbacDto {
public class ProsessTaskRestartInputDto {

@Min(0)
@Max(Long.MAX_VALUE)
Expand Down Expand Up @@ -45,8 +43,4 @@ public void setNaaVaaerendeStatus(String naaVaaerendeStatus) {
this.naaVaaerendeStatus = naaVaaerendeStatus;
}

@Override
public AbacDataAttributter abacAttributter() {
return AbacDataAttributter.opprett(); //denne er tom, ProsessTask-API har i praksis rollebasert tilgangskontroll
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,14 @@
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import javax.validation.Valid;
import javax.validation.constraints.Size;

import io.swagger.v3.oas.annotations.media.Schema;
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskSporingsloggId;
import no.nav.vedtak.log.sporingslogg.Sporingsdata;
import no.nav.vedtak.sikkerhet.abac.AbacDataAttributter;
import no.nav.vedtak.sikkerhet.abac.AbacDto;

@Schema
public class SokeFilterDto implements AbacDto {
public class SokeFilterDto {

@Size(max = 10)
@Valid
Expand Down Expand Up @@ -53,15 +48,4 @@ public void setSisteKjoeretidspunktTilOgMed(LocalDateTime sisteKjoeretidspunktTi
this.sisteKjoeretidspunktTilOgMed = sisteKjoeretidspunktTilOgMed;
}

public Sporingsdata lagSporingsloggData(String action) {
Sporingsdata sporingsdata = Sporingsdata.opprett(action);
sporingsdata.leggTilId(ProsessTaskSporingsloggId.PROSESS_TASK_STATUS.getSporingsloggKode(), prosessTaskStatuser.stream().map(ProsessTaskStatusDto::getProsessTaskStatusName).collect(Collectors.joining(",")));
sporingsdata.leggTilId(ProsessTaskSporingsloggId.PROSESS_TASK_KJORETIDSINTERVALL.getSporingsloggKode(), String.format("%s-%s", sisteKjoeretidspunktFraOgMed, sisteKjoeretidspunktTilOgMed));
return sporingsdata;
}

@Override
public AbacDataAttributter abacAttributter() {
return AbacDataAttributter.opprett(); //denne er tom, ProsessTask-API har i praksis rollebasert tilgangskontroll
}
}

0 comments on commit 7184869

Please sign in to comment.