Skip to content

Commit

Permalink
Enhance TestgruppeRepository and TestgruppeService with access checks…
Browse files Browse the repository at this point in the history
… and additional query methods #deploy-test-dolly-backend #deploy-dolly-backend
  • Loading branch information
krharum committed Feb 28, 2025
1 parent d719838 commit 5f2f97b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ public interface TestgruppeRepository extends PagingAndSortingRepository<Testgru

@Query(value = "select * from gruppe tg " +
"join bruker b on tg.opprettet_av = b.id " +
"and b.bruker_Id in (:brukere)", nativeQuery = true)
"and b.bruker_Id in (:brukere) ", nativeQuery = true)
Page<Testgruppe> findAllByOpprettetAv_BrukerIdIn(@Param("brukere") List<String> brukere, PageRequest id);

@Query(value = "select tg.id from gruppe tg " +
"join bruker b on tg.opprettet_av = b.id " +
"and b.bruker_Id in (:brukere) ", nativeQuery = true)
List<Long> findAllByOpprettetAv_BrukerIdIn(@Param("brukere") List<String> brukere);
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import static java.lang.String.format;
import static java.util.Collections.emptyList;
import static java.util.Objects.nonNull;
import static no.nav.dolly.domain.jpa.Bruker.Brukertype.BANKID;
import static no.nav.dolly.util.CurrentAuthentication.getUserId;
import static org.apache.commons.lang3.BooleanUtils.isTrue;
import static org.apache.commons.lang3.StringUtils.isBlank;
Expand All @@ -56,7 +57,6 @@ public class TestgruppeService {
private final GetUserInfo getUserInfo;
private final PdlDataConsumer pdlDataConsumer;
private final BrukerServiceConsumer brukerServiceConsumer;
private final BrukerRepository brukerRepository;

public Testgruppe opprettTestgruppe(RsOpprettEndreTestgruppe rsTestgruppe) {
Bruker bruker = brukerService.fetchBruker(getUserId(getUserInfo));
Expand All @@ -74,6 +74,8 @@ public Testgruppe opprettTestgruppe(RsOpprettEndreTestgruppe rsTestgruppe) {
@Transactional(readOnly = true)
public RsTestgruppeMedBestillingId fetchPaginertTestgruppeById(Long gruppeId, Integer pageNo, Integer pageSize, String sortColumn, String sortRetning) {

sjekkTilgang(gruppeId, pageNo, pageSize);

var testgruppeUtenIdenter = testgruppeRepository.findByIdOrderById(gruppeId)
.orElseThrow(() -> new NotFoundException(format("Gruppe med id %s ble ikke funnet.", gruppeId)));

Expand Down Expand Up @@ -102,6 +104,22 @@ public RsTestgruppeMedBestillingId fetchPaginertTestgruppeById(Long gruppeId, In
return rsTestgruppe;
}

private void sjekkTilgang(Long gruppeId, Integer pageNo, Integer pageSize) {

var bruker = brukerService.fetchOrCreateBruker();
if (bruker.getBrukertype() == BANKID) {
log.info("Sjekker tilgang for bruker: {}, brukertype: {}", bruker.getBrukerId(), bruker.getBrukertype());
brukerServiceConsumer.getKollegaerIOrganisasjon(bruker.getBrukerId())
.collectList()
.doOnNext(brukere -> log.info("BrukerServiceConsumer hentet {} kollegaer for bruker: {}",
String.join(",", brukere), bruker.getBrukerId()))
.map(testgruppeRepository::findAllByOpprettetAv_BrukerIdIn)
.filter(page -> page.stream().anyMatch(gruppe -> gruppe.equals(gruppeId)))
.switchIfEmpty(Mono.error(new NotFoundException(format("Gruppe med id %s ble ikke funnet.", gruppeId))))
.block();
}
}

public Testgruppe fetchTestgruppeById(Long gruppeId) {
return testgruppeRepository.findById(gruppeId).orElseThrow(() ->
new NotFoundException(format("Gruppe med id %s ble ikke funnet.", gruppeId)));
Expand All @@ -110,10 +128,14 @@ public Testgruppe fetchTestgruppeById(Long gruppeId) {
public Mono<Page<Testgruppe>> getAllTestgrupper(Integer pageNo, Integer pageSize) {

var bruker = brukerService.fetchOrCreateBruker();
if (bruker.getBrukertype() == Bruker.Brukertype.BANKID) {
log.info("Henter testgrupper for bruker: {}, brukertype: {}", bruker.getBrukerId(), bruker.getBrukertype());
if (bruker.getBrukertype() == BANKID) {
return brukerServiceConsumer.getKollegaerIOrganisasjon(bruker.getBrukerId())
.collectList()
.map(brukere -> testgruppeRepository.findAllByOpprettetAv_BrukerIdIn(brukere, PageRequest.of(pageNo, pageSize, Sort.by("id").descending())));
.doOnNext(brukere -> log.info("BrukerServiceConsumer hentet {} kollegaer for bruker: {}",
String.join(",", brukere), bruker.getBrukerId()))
.map(brukere -> testgruppeRepository.findAllByOpprettetAv_BrukerIdIn(brukere,
PageRequest.of(pageNo, pageSize, Sort.by("id").descending())));
} else {
return Mono.just(testgruppeRepository.findAllByOrderByIdDesc(PageRequest.of(pageNo, pageSize, Sort.by("id").descending())));
}
Expand Down

0 comments on commit 5f2f97b

Please sign in to comment.