Skip to content

Commit

Permalink
TFP-5952 kalle tilgang sammenligne med abac, logg (#7033)
Browse files Browse the repository at this point in the history
* TFP-5952 kalle tilgang sammenligne med abac, logg

* Resten av endringene
  • Loading branch information
jolarsen authored Jan 28, 2025
1 parent 511938a commit 19ba642
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,10 @@ public void oppdaterBehandlendeEnhet(Behandling behandling, OrganisasjonsEnhet n
behandlingEventPubliserer.publiserBehandlingEvent(new BehandlingEnhetEvent(behandling));
}

public Set<RutingResultat> finnRuting(Set<AktørId> aktørIds) {
return enhetsTjeneste.finnRuting(aktørIds);
}

private void lagHistorikkInnslagForByttBehandlendeEnhet(Behandling behandling,
OrganisasjonsEnhet nyEnhet,
String begrunnelse,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
Expand Down Expand Up @@ -88,6 +89,7 @@ public class EnhetsTjeneste {
private PersoninfoAdapter personinfoAdapter;
private Arbeidsfordeling norgRest;
private SkjermetPersonKlient skjermetPersonKlient;
private RutingKlient rutingKlient;

public EnhetsTjeneste() {
// For CDI proxy
Expand All @@ -96,10 +98,12 @@ public EnhetsTjeneste() {
@Inject
public EnhetsTjeneste(PersoninfoAdapter personinfoAdapter,
Arbeidsfordeling arbeidsfordelingRestKlient,
SkjermetPersonKlient skjermetPersonKlient) {
SkjermetPersonKlient skjermetPersonKlient,
RutingKlient rutingKlient) {
this.personinfoAdapter = personinfoAdapter;
this.norgRest = arbeidsfordelingRestKlient;
this.skjermetPersonKlient = skjermetPersonKlient;
this.rutingKlient = rutingKlient;
}

static OrganisasjonsEnhet velgEnhet(OrganisasjonsEnhet enhet, Collection<FagsakMarkering> markering) {
Expand Down Expand Up @@ -130,13 +134,22 @@ static List<OrganisasjonsEnhet> hentEnhetListe() {
}

OrganisasjonsEnhet hentEnhetSjekkKunAktør(AktørId aktørId, FagsakYtelseType ytelseType) {
var rutingResultater = finnRuting(Set.of(aktørId));
if (harNoenDiskresjonskode6(ytelseType, Set.of(aktørId))) {
LOG.info("RUTING {}", rutingResultater.contains(RutingResultat.STRENGTFORTROLIG) ? "ok" : "diff sf");
return KODE6_ENHET;
} else if (erNoenSkjermetPerson(Set.of(aktørId))) {
LOG.info("RUTING {}", rutingResultater.contains(RutingResultat.SKJERMING) ? "ok" : "diff skjerm");
return SKJERMET_ENHET;
} else if (personinfoAdapter.hentGeografiskTilknytning(ytelseType, aktørId) == null) {
LOG.info("RUTING {}", rutingResultater.contains(RutingResultat.UTLAND) ? "ok" : "diff utland");
return UTLAND_ENHET;
} else {
return personinfoAdapter.hentGeografiskTilknytning(ytelseType, aktørId) == null ? UTLAND_ENHET : NASJONAL_ENHET;
// Beholde ut 2023
if (!rutingResultater.isEmpty()) {
LOG.info("RUTING diff nasjonal vs resultat {}", rutingResultater);
}
return NASJONAL_ENHET;
// Beholde ut 2025
// var enheter = hentEnheterFor(geografiskTilknytning, behandlingTema);
// return enheter.isEmpty() ? NASJONAL_ENHET : velgEnhet(enheter.get(0), null);
}
Expand All @@ -147,11 +160,13 @@ Optional<OrganisasjonsEnhet> oppdaterEnhetSjekkOppgittePersoner(String enhetId,
if (SPESIALENHETER.contains(enhetId)) {
return Optional.empty();
}
var rutingResultater = finnRuting(alleAktører);
if (harNoenDiskresjonskode6(ytelseType, alleAktører)) {
LOG.info("RUTING {}", rutingResultater.contains(RutingResultat.STRENGTFORTROLIG) ? "ok" : "diff sf");
return Optional.of(KODE6_ENHET);
}
if (erNoenSkjermetPerson(alleAktører)) {
LOG.info("FPSAK enhettjeneste skjermet person funnet");
LOG.info("RUTING {}", rutingResultater.contains(RutingResultat.SKJERMING) ? "ok" : "diff skjerm");
return Optional.of(SKJERMET_ENHET);
}
if (saksmarkering.contains(FagsakMarkering.SAMMENSATT_KONTROLL)) {
Expand All @@ -169,6 +184,15 @@ Optional<OrganisasjonsEnhet> oppdaterEnhetSjekkOppgittePersoner(String enhetId,
return Optional.of(FLYTTE_MAP.get(enhetId)).filter(ny -> !ny.enhetId().equals(enhetId));
}

public Set<RutingResultat> finnRuting(Set<AktørId> aktørIds) {
try {
return rutingKlient.finnRutingEgenskaper(aktørIds.stream().map(AktørId::getId).collect(Collectors.toSet()));
} catch (Exception e) {
LOG.info("RUTING feil", e);
return Set.of();
}
}

private boolean harNoenDiskresjonskode6(FagsakYtelseType ytelseType, Set<AktørId> aktører) {
return aktører.stream()
.map(a -> personinfoAdapter.hentDiskresjonskode(ytelseType, a))
Expand Down Expand Up @@ -202,7 +226,7 @@ static OrganisasjonsEnhet getEnhetNasjonal() {
return NASJONAL_ENHET;
}

// Behold ut 2023
// Behold ut 2025
private List<OrganisasjonsEnhet> hentEnheterFor(String geografi, FagsakYtelseType ytelseType) {
var brukBTema = ytelseType == null || FagsakYtelseType.UDEFINERT.equals(ytelseType) ?
BehandlingTema.FORELDREPENGER : BehandlingTema.fraFagsak(ytelseType, null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import jakarta.enterprise.context.Dependent;
import jakarta.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import no.nav.foreldrepenger.behandlingslager.behandling.Behandling;
import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingType;
import no.nav.foreldrepenger.behandlingslager.behandling.historikk.HistorikkAktør;
Expand All @@ -33,6 +36,8 @@
@Dependent
public class RegistrerFagsakEgenskaper {

private static final Logger LOG = LoggerFactory.getLogger(RegistrerFagsakEgenskaper.class);

private final BehandlendeEnhetTjeneste enhetTjeneste;
private final PersoninfoAdapter personinfo;
private final MedlemskapRepository medlemskapRepository;
Expand Down Expand Up @@ -63,11 +68,16 @@ public void fagsakEgenskaperForBruker(Behandling behandling) {
return;
}

var rutingResultat = enhetTjeneste.finnRuting(Set.of(behandling.getAktørId()));

// Har registrert en tilknytning og ikke utflyttet
if (personinfo.hentGeografiskTilknytning(behandling.getFagsakYtelseType(), behandling.getAktørId()) == null) {
LOG.info("RUTING {}", rutingResultat.contains(RutingResultat.UTLAND) ? "ok" : "diff utland fra hentGT");
fagsakEgenskapRepository.leggTilFagsakMarkering(behandling.getFagsakId(), FagsakMarkering.BOSATT_UTLAND);
BehandlendeEnhetTjeneste.sjekkSkalOppdatereEnhet(behandling, fagsakEgenskapRepository.finnFagsakMarkeringer(behandling.getFagsakId()))
.ifPresent(e -> enhetTjeneste.oppdaterBehandlendeEnhet(behandling, e, HistorikkAktør.VEDTAKSLØSNINGEN, "Personopplysning"));
} else {
LOG.info("RUTING {}", rutingResultat.contains(RutingResultat.UTLAND) ? "diff utland fra tilgang" : "ok");
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package no.nav.foreldrepenger.produksjonsstyring.behandlingenhet;

import jakarta.enterprise.context.Dependent;
import jakarta.validation.Valid;
import jakarta.ws.rs.core.UriBuilder;

import no.nav.vedtak.felles.integrasjon.rest.*;

import java.net.URI;
import java.util.Set;

@Dependent
@RestClientConfig(tokenConfig = TokenFlow.AZUREAD_CC, application = FpApplication.FPTILGANG)
public class RutingKlient {

private final URI rutingUri;
private final RestClient klient;
private final RestConfig restConfig;

public RutingKlient() {
this.klient = RestClient.client();
this.restConfig = RestConfig.forClient(this.getClass());
this.rutingUri = UriBuilder.fromUri(restConfig.fpContextPath())
.path("/api/ruting/egenskaper")
.build();
}

public Set<RutingResultat> finnRutingEgenskaper(Set<String> aktørIdenter) {
var request = new RutingRequest(aktørIdenter);
var rrequest = RestRequest.newPOSTJson(request, rutingUri, restConfig);
return klient.sendReturnOptional(rrequest, RutingRespons.class).map(RutingRespons::resultater).orElseGet(Set::of);
}


public record RutingRequest(@Valid Set<String> aktørIdenter) { }

public record RutingRespons(Set<RutingResultat> resultater) { }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package no.nav.foreldrepenger.produksjonsstyring.behandlingenhet;

public enum RutingResultat {
STRENGTFORTROLIG,
SKJERMING,
UTLAND
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,14 @@ class EnhetsTjenesteTest {
private Arbeidsfordeling arbeidsfordelingTjeneste;
@Mock
private SkjermetPersonKlient skjermetPersonKlient;
@Mock
private RutingKlient rutingKlient;

private EnhetsTjeneste enhetsTjeneste;

@BeforeEach
public void oppsett() {
enhetsTjeneste = new EnhetsTjeneste(personinfoAdapter, arbeidsfordelingTjeneste, skjermetPersonKlient);
enhetsTjeneste = new EnhetsTjeneste(personinfoAdapter, arbeidsfordelingTjeneste, skjermetPersonKlient, rutingKlient);
}

@Test
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<svp-uttak.version>2.4.5</svp-uttak.version>
<fp-ytelse-beregn.version>1.0.4</fp-ytelse-beregn.version>

<felles.version>7.4.4</felles.version>
<felles.version>7.4.5</felles.version>
<prosesstask.version>5.1.1</prosesstask.version>

<fp-kontrakter.version>9.2.2</fp-kontrakter.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public IAYRegisterdataCallbackRestTjeneste(IAYRegisterdataTjeneste iayTjeneste,
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Operation(description = "Callback når registerinnhenting av IAY har blitt fullført i Abakus", tags = "registerdata")
@BeskyttetRessurs(actionType = ActionType.UPDATE, resourceType = ResourceType.APPLIKASJON)
@BeskyttetRessurs(actionType = ActionType.UPDATE, resourceType = ResourceType.FAGSAK)
public Response callback(@Parameter(description = "callbackDto") @Valid @TilpassetAbacAttributt(supplierClass = AbacDataSupplier.class) CallbackDto dto) {
// Ta lås
var behandlingLås = låsRepository.taLås(dto.getAvsenderRef().getReferanse());
Expand Down

0 comments on commit 19ba642

Please sign in to comment.