-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add detailed organization access functionality deploy #deploy-altinn3…
…-tilgang-service-prod #deploy-altinn3-tilgang-service Introduced `PersonDTO` to encapsulate detailed access information for organizations and extended the service and controller to handle this functionality. Updated Altinn integration to include additional filters and parameters for access checks, and added logic for generating detailed access messages.
- Loading branch information
Showing
5 changed files
with
111 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,13 +6,17 @@ | |
import no.nav.testnav.altinn3tilgangservice.consumer.altinn.dto.AuthorizedPartyDTO; | ||
import no.nav.testnav.altinn3tilgangservice.domain.Organisasjon; | ||
import no.nav.testnav.libs.dto.altinn3.v1.OrganisasjonDTO; | ||
import no.nav.testnav.libs.dto.altinn3.v1.PersonDTO; | ||
import org.springframework.stereotype.Service; | ||
import reactor.core.publisher.Flux; | ||
import reactor.core.publisher.Mono; | ||
import reactor.util.function.Tuple2; | ||
|
||
import java.util.List; | ||
|
||
import static org.apache.commons.lang3.BooleanUtils.isFalse; | ||
import static org.apache.commons.lang3.StringUtils.isNotBlank; | ||
|
||
@Slf4j | ||
@Service | ||
@RequiredArgsConstructor | ||
|
@@ -41,4 +45,68 @@ private Mono<OrganisasjonDTO> getOrganisasjon(Tuple2<AuthorizedPartyDTO, List<Or | |
.organisasjonsform(part.getUnitType()) | ||
.build()); | ||
} | ||
|
||
public Mono<PersonDTO> getPersonOrganisasjonDetaljertTilgang(String ident) { | ||
|
||
return Mono.zip( | ||
altinnConsumer.getAuthorizedParties(ident).collectList(), | ||
altinnConsumer.getOrganisasjoner().collectList()) | ||
.flatMapMany(this::getTilpassetOrganisasjon) | ||
.collectList() | ||
.map(organisasjoner -> PersonDTO.builder() | ||
.ident(ident) | ||
.organisasjoner(organisasjoner) | ||
.build()); | ||
} | ||
|
||
private Flux<PersonDTO.OrganisasjonDTO> getTilpassetOrganisasjon(Tuple2<List<AuthorizedPartyDTO>, List<Organisasjon>> organisasjoner) { | ||
|
||
return Flux.fromIterable(organisasjoner.getT1()) | ||
.filter(party -> isNotBlank(party.getOrganizationNumber()) && isNotBlank(party.getName())) | ||
.filter(party -> isFalse(party.getIsDeleted())) | ||
.map(party -> PersonDTO.OrganisasjonDTO.builder() | ||
.navn(party.getName()) | ||
.organisasjonsnummer(party.getOrganizationNumber()) | ||
.organisasjonsform(party.getUnitType()) | ||
.hasAltinnDollyTilgang(hasAltinnDollyTilgang(party)) | ||
.hasDollyOrganisasjonTilgang(hasDollyOrganisasjonTilgang(organisasjoner.getT2(), party)) | ||
.melding(getMelding(party.getName(), party.getOrganizationNumber(), | ||
hasAltinnDollyTilgang(party), hasDollyOrganisasjonTilgang(organisasjoner.getT2(), party))) | ||
.build()); | ||
} | ||
|
||
private static boolean hasAltinnDollyTilgang(AuthorizedPartyDTO authorizedParty) { | ||
|
||
return authorizedParty.getAuthorizedResources().contains(DOLLY_RESOURCE); | ||
} | ||
|
||
private static boolean hasDollyOrganisasjonTilgang(List<Organisasjon> organisasjoner, AuthorizedPartyDTO party) { | ||
|
||
return organisasjoner.stream() | ||
.anyMatch(organisasjon -> organisasjon.getOrganisasjonsnummer().equals(party.getOrganizationNumber())); | ||
} | ||
|
||
private static String getMelding(String orgnavn, String orgnummer, boolean hasAltinnDollyTilgang, boolean hasDollyOrganisasjonTilgang) { | ||
|
||
return new StringBuilder() | ||
.append(!hasAltinnDollyTilgang ? | ||
"Du mangler tilgang i Altinn på følgende tjenste: " + | ||
"\"Tilgang til NAVs Dolly for samarbeidspartnere\" " + | ||
"for organisasjon %s (med orgnummer %s)%n".formatted(orgnavn, orgnummer) : "") | ||
.append(!hasAltinnDollyTilgang && !hasDollyOrganisasjonTilgang ? | ||
" og %n" : "") | ||
.append(!hasDollyOrganisasjonTilgang ? | ||
"Organisasjon %s (med orgnummer %s) " .formatted(orgnavn, orgnummer) + | ||
"mangler tilgang på Dolly syntetiske testdata selvbetjening%n" : "") | ||
.append(!hasAltinnDollyTilgang || !hasDollyOrganisasjonTilgang ? | ||
"Hvis du har til hensikt å bruke Dolly til å generere testdata, gjør følgende:%n" : "") | ||
.append(!hasAltinnDollyTilgang ? | ||
"- Ta kontakt med Altinn-ansvarlig i %s (med orgnummer %s) ".formatted(orgnavn, orgnummer) + | ||
"og spør om vedkommene kan gi deg tilgang til tjenesten: " + | ||
"\"Tilgang til NAVs Dolly for samarbeidspartnere\"%n" : "") | ||
.append(!hasDollyOrganisasjonTilgang ? | ||
"- Ta kontakt med NAV ved Anders Marstrander epost: [email protected], og spør om " + | ||
"organisasjon med orgnr %s kan gis tilgang til Dolly syntetiske testdata selvbetjening%n".formatted(orgnummer) : "") | ||
.toString(); | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/altinn3/v1/PersonDTO.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package no.nav.testnav.libs.dto.altinn3.v1; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Data; | ||
import lombok.NoArgsConstructor; | ||
|
||
import java.util.List; | ||
|
||
@Data | ||
@Builder | ||
@NoArgsConstructor | ||
@AllArgsConstructor | ||
public class PersonDTO { | ||
|
||
private String ident; | ||
private List<OrganisasjonDTO> organisasjoner; | ||
|
||
@Data | ||
@Builder | ||
@NoArgsConstructor | ||
@AllArgsConstructor | ||
public static class OrganisasjonDTO { | ||
|
||
private String navn; | ||
private String organisasjonsnummer; | ||
private String organisasjonsform; | ||
private Boolean hasAltinnDollyTilgang; | ||
private Boolean hasDollyOrganisasjonTilgang; | ||
private String melding; | ||
} | ||
} |