Skip to content

Commit

Permalink
Fix check principal applicazione
Browse files Browse the repository at this point in the history
  • Loading branch information
nardil committed Nov 9, 2019
1 parent 567ada3 commit 9a74d2e
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@
import org.openspcoop2.utils.service.context.ContextThreadLocal;

import it.govpay.bd.BasicBD;
import it.govpay.bd.anagrafica.AclBD;
import it.govpay.bd.anagrafica.AnagraficaManager;
import it.govpay.bd.anagrafica.ApplicazioniBD;
import it.govpay.bd.anagrafica.UtenzeBD;
import it.govpay.bd.anagrafica.filters.AclFilter;
import it.govpay.bd.anagrafica.filters.ApplicazioneFilter;
import it.govpay.bd.model.Applicazione;
import it.govpay.core.dao.anagrafica.dto.FindApplicazioniDTO;
Expand All @@ -41,6 +43,7 @@
import it.govpay.core.dao.anagrafica.dto.PutApplicazioneDTOResponse;
import it.govpay.core.dao.anagrafica.exception.ApplicazioneNonTrovataException;
import it.govpay.core.dao.anagrafica.exception.DominioNonTrovatoException;
import it.govpay.core.dao.anagrafica.exception.RuoloNonTrovatoException;
import it.govpay.core.dao.anagrafica.exception.TipoVersamentoNonTrovatoException;
import it.govpay.core.dao.anagrafica.utils.UtenzaPatchUtils;
import it.govpay.core.dao.commons.BaseDAO;
Expand Down Expand Up @@ -103,7 +106,7 @@ public GetApplicazioneDTOResponse getApplicazione(GetApplicazioneDTO getApplicaz


public PutApplicazioneDTOResponse createOrUpdate(PutApplicazioneDTO putApplicazioneDTO) throws ServiceException,
ApplicazioneNonTrovataException, NotAuthorizedException, NotAuthenticatedException, UnprocessableEntityException, TipoVersamentoNonTrovatoException, DominioNonTrovatoException {
ApplicazioneNonTrovataException, NotAuthorizedException, NotAuthenticatedException, UnprocessableEntityException, TipoVersamentoNonTrovatoException, DominioNonTrovatoException, RuoloNonTrovatoException {
PutApplicazioneDTOResponse applicazioneDTOResponse = new PutApplicazioneDTOResponse();
BasicBD bd = null;

Expand Down Expand Up @@ -140,6 +143,20 @@ public PutApplicazioneDTOResponse createOrUpdate(PutApplicazioneDTO putApplicazi

putApplicazioneDTO.getApplicazione().getUtenza().setIdTipiVersamento(idTipiVersamento);
}

if(putApplicazioneDTO.getApplicazione().getUtenza().getRuoli() != null && putApplicazioneDTO.getApplicazione().getUtenza().getRuoli().size() > 0) {
AclBD aclBD = new AclBD(bd);
AclFilter aclFilter = aclBD.newFilter();

for (String idRuolo : putApplicazioneDTO.getApplicazione().getUtenza().getRuoli()) {
aclFilter.setRuolo(idRuolo);
long count= aclBD.count(aclFilter);

if(count <= 0) {
throw new RuoloNonTrovatoException("Il ruolo ["+idRuolo+"] non e' censito nel sistema");
}
}
}


// flag creazione o update
Expand All @@ -154,8 +171,9 @@ public PutApplicazioneDTOResponse createOrUpdate(PutApplicazioneDTO putApplicazi
} else {
// prelevo la vecchia utenza
Applicazione applicazioneOld = applicazioniBD.getApplicazione(putApplicazioneDTO.getIdApplicazione());

if(!applicazioneOld.getPrincipal().equals(putApplicazioneDTO.getApplicazione().getPrincipal())) {

// confronto con il principal originale perche' e' quello che ho ricevuto dal servizio
if(!applicazioneOld.getUtenza().getPrincipalOriginale().equals(putApplicazioneDTO.getApplicazione().getPrincipal())) {
// se ho cambiato il principal controllo che sia disponibile
if(utenzeBD.existsByPrincipalOriginale(putApplicazioneDTO.getApplicazione().getPrincipal()))
throw new UnprocessableEntityException("Impossibile modificare l'Applicazione ["+putApplicazioneDTO.getIdApplicazione()+"], il Principal indicato non e' disponibile.");
Expand Down Expand Up @@ -206,4 +224,4 @@ public GetApplicazioneDTOResponse patch(ApplicazionePatchDTO patchDTO) throws Se
}


}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package it.govpay.core.dao.anagrafica.exception;

import it.govpay.core.dao.commons.exception.NonTrovataException;

public class RuoloNonTrovatoException extends NonTrovataException{

public RuoloNonTrovatoException(String message) {
super(message);
}

public RuoloNonTrovatoException(String message, Throwable t) {
super(message, t);
}

/**
*
*/
private static final long serialVersionUID = 1L;

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import it.govpay.core.dao.anagrafica.dto.PutApplicazioneDTO;
import it.govpay.core.dao.anagrafica.dto.PutApplicazioneDTOResponse;
import it.govpay.core.dao.anagrafica.exception.DominioNonTrovatoException;
import it.govpay.core.dao.anagrafica.exception.RuoloNonTrovatoException;
import it.govpay.core.dao.anagrafica.exception.TipoVersamentoNonTrovatoException;
import it.govpay.core.dao.pagamenti.dto.ApplicazionePatchDTO;
import it.govpay.core.exceptions.NotAuthorizedException;
Expand Down Expand Up @@ -161,6 +162,7 @@ public Response addApplicazione(Authentication user, UriInfo uriInfo, HttpHeader
String jsonRequest = baos.toString();
ApplicazionePost applicazioneRequest= JSONSerializable.parse(jsonRequest, ApplicazionePost.class);


applicazioneRequest.validate();

PutApplicazioneDTO putApplicazioneDTO = ApplicazioniConverter.getPutApplicazioneDTO(applicazioneRequest, idA2A, user);
Expand All @@ -176,6 +178,8 @@ public Response addApplicazione(Authentication user, UriInfo uriInfo, HttpHeader
throw new UnprocessableEntityException(e.getDetails());
} catch(TipoVersamentoNonTrovatoException e) {
throw new UnprocessableEntityException(e.getDetails());
} catch(RuoloNonTrovatoException e) {
throw new UnprocessableEntityException(e.getDetails());
}

Status responseStatus = putApplicazioneDTOResponse.isCreated() ? Status.CREATED : Status.OK;
Expand Down

0 comments on commit 9a74d2e

Please sign in to comment.