Skip to content

Commit

Permalink
Prend en compte si l'utilisateur n'est pas connecté pour chercher les…
Browse files Browse the repository at this point in the history
… communes

Issue: #172826
Change-Id: Ie318b63bb7b59b48ad0ff021d1c79d7ff21f0c78
  • Loading branch information
Emilie Genton committed Oct 20, 2023
1 parent 78af099 commit 93cc8e5
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.util.List;
import org.jooq.DSLContext;
import org.jooq.SortField;
import org.jooq.impl.DSL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down Expand Up @@ -55,23 +56,21 @@ public List<Commune> getListCommune(
order.add(COMMUNE.NOM.desc());
}
return context
.selectDistinct(
COMMUNE.ID,
COMMUNE.NOM,
COMMUNE.CODE,
COMMUNE.INSEE,
COMMUNE.GEOMETRIE,
COMMUNE.NOM.length())
.select(COMMUNE.fields())
.distinctOn(COMMUNE.NOM.length(), COMMUNE.NOM)
.from(COMMUNE)
.join(ZONE_COMPETENCE_COMMUNE)
.on(COMMUNE.ID.eq(ZONE_COMPETENCE_COMMUNE.COMMUNE_ID))
.join(ZONE_COMPETENCE)
.on(ZONE_COMPETENCE_COMMUNE.ZONE_COMPETENCE_ID.eq(ZONE_COMPETENCE.ID))
.join(ORGANISME)
.on(ORGANISME.ZONE_COMPETENCE.eq(ZONE_COMPETENCE.ID))
.leftOuterJoin(UTILISATEUR)
.join(UTILISATEUR)
.on(UTILISATEUR.ORGANISME.eq(ORGANISME.ID))
.where(UTILISATEUR.ORGANISME.in(organismes))
// Si on a pas d'organisme, c'est-à-dire pas d'utilisateur connecté et que la page est
// ouverte au public
// on ne fitre pas en fonction des organismes
.where(organismes != null ? UTILISATEUR.ORGANISME.in(organismes) : DSL.trueCondition())
.and(COMMUNE.NOM.upper().like("%" + query.toUpperCase() + "%"))
.and(COMMUNE.INSEE.like(insee))
.orderBy(order)
Expand Down
20 changes: 14 additions & 6 deletions remocra/src/main/java/fr/sdis83/remocra/web/CommuneController.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
Expand Down Expand Up @@ -65,12 +68,17 @@ protected JSONSerializer additionnalIncludeExclude(JSONSerializer serializer) {
protected List<fr.sdis83.remocra.db.model.remocra.tables.pojos.Commune> getRecords() {
// On récupère les organismes accessibles à l'utilisateur (son organisme et les enfants de
// cet organisme)
fr.sdis83.remocra.db.model.remocra.tables.pojos.Organisme organismeUtilisateur =
organismeRepository.getOrganismeWithIdUser(
utilisateurService.getCurrentUtilisateur().getId());

List<Integer> organismes =
Organisme.getOrganismeAndChildren(organismeUtilisateur.getId().intValue());
SecurityContext sc = SecurityContextHolder.getContext();
Authentication aut = sc.getAuthentication();
List<Integer> organismes = null;

// Si on n'a pas d'utilisateur connecté, on ne va pas chercher les organismes
if (aut != null && aut.isAuthenticated() && !"anonymousUser".equals(aut.getPrincipal())) {
fr.sdis83.remocra.db.model.remocra.tables.pojos.Organisme organismeUtilisateur =
organismeRepository.getOrganismeWithIdUser(
utilisateurService.getCurrentUtilisateur().getId());
organismes = Organisme.getOrganismeAndChildren(organismeUtilisateur.getId().intValue());
}

// On va regarder pour filtrer sur uniquement les communes du département puisqu'il est
// possible pour des raisons métier d'avoir les communes limitrophes d'autres départements
Expand Down

0 comments on commit 93cc8e5

Please sign in to comment.