UtentiChange.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.web.ctrlstat.servlet.utenti;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.Iterator;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
- import org.openspcoop2.core.commons.Liste;
- import org.openspcoop2.utils.crypt.PasswordVerifier;
- import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
- import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
- import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
- import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
- import org.openspcoop2.web.ctrlstat.servlet.OggettoDialogEnum;
- import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
- import org.openspcoop2.web.ctrlstat.servlet.login.LoginSessionUtilities;
- import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
- import org.openspcoop2.web.lib.mvc.Costanti;
- import org.openspcoop2.web.lib.mvc.DataElement;
- import org.openspcoop2.web.lib.mvc.ForwardParams;
- import org.openspcoop2.web.lib.mvc.GeneralData;
- import org.openspcoop2.web.lib.mvc.MessageType;
- import org.openspcoop2.web.lib.mvc.PageData;
- import org.openspcoop2.web.lib.mvc.Parameter;
- import org.openspcoop2.web.lib.mvc.ServletUtils;
- import org.openspcoop2.web.lib.mvc.TipoOperazione;
- import org.openspcoop2.web.lib.users.dao.InterfaceType;
- import org.openspcoop2.web.lib.users.dao.Permessi;
- import org.openspcoop2.web.lib.users.dao.PermessiUtente;
- import org.openspcoop2.web.lib.users.dao.Stato;
- import org.openspcoop2.web.lib.users.dao.User;
- import org.openspcoop2.web.lib.users.dao.UserObjects;
- /**
- * suChange
- *
- * @author Andrea Poli (apoli@link.it)
- * @author Stefano Corallo (corallo@link.it)
- * @author Sandra Giangrandi (sandra@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public final class UtentiChange extends Action {
- @Override
- public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
- HttpSession session = request.getSession(true);
- // Inizializzo PageData
- PageData pd = new PageData();
- GeneralHelper generalHelper = new GeneralHelper(session);
- // Inizializzo GeneralData
- GeneralData gd = generalHelper.initGeneralData(request);
- String userLogin = ServletUtils.getUserLoginFromSession(session);
- try {
- UtentiHelper utentiHelper = new UtentiHelper(request, pd, session);
- UtentiCore utentiCore = new UtentiCore();
- SoggettiCore soggettiCore = new SoggettiCore(utentiCore);
-
- String nomesu = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_USERNAME);
- String pwsu = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_PW);
- String confpwsu = null;
- String tipoGui = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_TIPO_GUI);
- String isServizi = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_SERVIZI);
- String isDiagnostica = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_DIAGNOSTICA);
- String isReportistica = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_REPORTISTICA);
- String isSistema = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_SISTEMA);
- String isMessaggi = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_MESSAGGI);
- String isUtenti = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_UTENTI);
- String isAuditing = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_AUDITING);
- String isAccordiCooperazione = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_ACCORDI_COOPERAZIONE);
- String singleSuServizi = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_SINGLE_SU_SERVIZI);
- String singleSuAccordiCooperazione = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_SINGLE_SU_ACCORDI_COOPERAZIONE);
- String changepwd = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_CHANGE_PW);
- String isSoggettiAll = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_ABILITAZIONI_SOGGETTI_ALL);
- String isServiziAll = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_ABILITAZIONI_SERVIZI_ALL);
-
- String tipoModalitaConsoleGestione = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA);
- String idSoggettoConsoleGestione = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_ID_SOGGETTO);
-
- String tipoModalitaConsoleMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA_MONITOR);
- String idSoggettoConsoleMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_ID_SOGGETTO_MONITOR);
-
- String homePageMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_HOME_PAGE_MONITORAGGIO);
- String intervalloTemporaleHomePageConsoleMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_INTERVALLO_TEMPORALE_HOME_PAGE_MONITORAGGIO);
-
- String scadenza = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_SCADENZA);
-
- Boolean singlePdD = ServletUtils.getBooleanAttributeFromSession(CostantiControlStation.SESSION_PARAMETRO_SINGLE_PDD, session, request).getValue();
-
- List<String> protocolliRegistratiConsole = utentiCore.getProtocolli();
-
- String [] modalitaScelte = new String[protocolliRegistratiConsole.size()];
- for (int i = 0; i < protocolliRegistratiConsole.size() ; i++) {
- String protocolloName = protocolliRegistratiConsole.get(i);
- modalitaScelte[i] = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_MODALITA_PREFIX + protocolloName);
- }
-
- // Prendo l'utente
- User user = utentiCore.getUser(nomesu);
- Date dataUltimoAggiornamentoPassword = user.getLastUpdatePassword();
- boolean oldScadenza = user.isCheckLastUpdatePassword();
- //Prendo i vecchi dati dell'utente
-
- // Check multitenant
-
- List<String> oldProtocolliSupportati = user.getProtocolliSupportati();
- boolean oldHasOnlyPermessiUtenti = user.hasOnlyPermessiUtenti();
- List<String> protocolliSupportati = null;
- boolean first = false;
- if(tipoGui == null) {
- tipoGui = user.getInterfaceType().toString();
-
- if(!oldHasOnlyPermessiUtenti) {
- oldProtocolliSupportati = user.getProtocolliSupportati();
- // dal db ho letto un utente che non ha associato nessun protocollo, glieli associo tutti di default
- if(oldProtocolliSupportati == null) {
- oldProtocolliSupportati = new ArrayList<>();
- for (int i = 0; i < protocolliRegistratiConsole.size() ; i++) {
- String protocolloName = protocolliRegistratiConsole.get(i);
- oldProtocolliSupportati.add(protocolloName);
- modalitaScelte[i] = Costanti.CHECK_BOX_ENABLED;
- }
- }
- } else {
- // utente configurato solo per gestire gli utenti
- oldProtocolliSupportati = new ArrayList<>();
- }
- protocolliSupportati = oldProtocolliSupportati;
- first = true;
-
- if(tipoModalitaConsoleGestione == null) {
- tipoModalitaConsoleGestione = user.getProtocolloSelezionatoPddConsole();
- }
-
- // nessun profilo selezionato imposto all
- if(tipoModalitaConsoleGestione == null) {
- tipoModalitaConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
-
- if(idSoggettoConsoleGestione == null) {
- idSoggettoConsoleGestione = user.getSoggettoSelezionatoPddConsole();
- }
-
- // nessun soggetto selezionato imposto all
- if(idSoggettoConsoleGestione == null) {
- idSoggettoConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- if(tipoModalitaConsoleMonitoraggio == null) {
- tipoModalitaConsoleMonitoraggio = user.getProtocolloSelezionatoPddMonitor();
- }
-
- // nessun profilo selezionato imposto all
- if(tipoModalitaConsoleMonitoraggio == null) {
- tipoModalitaConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
-
- if(idSoggettoConsoleMonitoraggio == null) {
- idSoggettoConsoleMonitoraggio = user.getSoggettoSelezionatoPddMonitor();
- }
-
- // nessun soggetto selezionato imposto all
- if(idSoggettoConsoleMonitoraggio == null) {
- idSoggettoConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- List<Stato> stati = user.getStati();
-
- if(homePageMonitoraggio == null) {
- for (Stato stato : stati) {
- if(stato.getOggetto().equals(UtentiCostanti.OGGETTO_STATO_UTENTE_HOME_PAGE)) {
- homePageMonitoraggio = utentiHelper.extractValoreStato(stato.getStato());
- break;
- }
- }
- }
-
- // nessuna home page selezionata imposto transazioni
- if(homePageMonitoraggio == null) {
- homePageMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_HOME_PAGE_MONITORAGGIO_TRANSAZIONI;
- }
-
- if(intervalloTemporaleHomePageConsoleMonitoraggio == null) {
- for (Stato stato : stati) {
- if(stato.getOggetto().equals(UtentiCostanti.OGGETTO_STATO_UTENTE_INTERVALLO_TEMPORALE_HOME_PAGE)) {
- intervalloTemporaleHomePageConsoleMonitoraggio = utentiHelper.extractValoreStato(stato.getStato());
- break;
- }
- }
- }
-
- // nessuna home page selezionata imposto transazioni
- if(intervalloTemporaleHomePageConsoleMonitoraggio == null) {
- intervalloTemporaleHomePageConsoleMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_INTERVALLO_TEMPORALE_HOME_PAGE_MONITORAGGIO_ULTIMI_7_GIORNI;
- }
- }
-
- InterfaceType interfaceType = InterfaceType.convert(tipoGui, true);
-
- String postBackElementName = utentiHelper.getPostBackElementName();
-
- if (postBackElementName != null) {
-
- // selezione modalita'
- if(postBackElementName.startsWith(UtentiCostanti.PARAMETRO_UTENTI_MODALITA_PREFIX)) {
- tipoModalitaConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- idSoggettoConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- tipoModalitaConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- idSoggettoConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- // cambio del profilo, reset del valore del soggetto
- if(postBackElementName.equals(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA)) {
- idSoggettoConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- // cambio del profilo, reset del valore del soggetto
- if(postBackElementName.equals(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA_MONITOR)) {
- idSoggettoConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- // cambio della home page, reset del valore del grafico
- if(postBackElementName.equals(UtentiCostanti.PARAMETRO_UTENTI_HOME_PAGE_MONITORAGGIO)) {
- intervalloTemporaleHomePageConsoleMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_INTERVALLO_TEMPORALE_HOME_PAGE_MONITORAGGIO_ULTIMI_7_GIORNI;
- }
- }
-
- // Preparo il menu
- utentiHelper.makeMenu();
- // Se nomehid = null, devo visualizzare la pagina per l'inserimento dati
- if(utentiHelper.isEditModeInProgress()){
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd,
- new Parameter(UtentiCostanti.LABEL_UTENTI ,UtentiCostanti.SERVLET_NAME_UTENTI_LIST),
- new Parameter(nomesu,null));
- PermessiUtente pu = user.getPermessi();
- isServizi = (isServizi==null) ? (pu.isServizi() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isServizi;
- isDiagnostica = (isDiagnostica==null) ? (pu.isDiagnostica() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isDiagnostica;
- isReportistica = (isReportistica==null) ? (pu.isReportistica() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isReportistica;
- isSistema = (isSistema==null) ? (pu.isSistema() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isSistema;
- isMessaggi = (isMessaggi==null) ? (pu.isCodeMessaggi() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isMessaggi;
- isUtenti = (isUtenti==null) ? (pu.isUtenti() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isUtenti;
- isAuditing = (isAuditing==null) ? (pu.isAuditing() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isAuditing;
- isAccordiCooperazione = (isAccordiCooperazione==null) ? (pu.isAccordiCooperazione() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isAccordiCooperazione;
-
- isSoggettiAll = (isSoggettiAll==null) ? (user.isPermitAllSoggetti() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isSoggettiAll;
- isServiziAll = (isServiziAll==null) ? (user.isPermitAllServizi() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : isServiziAll;
-
- scadenza = (scadenza == null) ? (user.isCheckLastUpdatePassword() ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED) : scadenza;
-
- if(first) {
- for (int i = 0; i < protocolliRegistratiConsole.size() ; i++) {
- String protocolloName = protocolliRegistratiConsole.get(i);
- if(modalitaScelte[i] == null &&
- protocolliSupportati.contains(protocolloName)) {
- modalitaScelte[i] = Costanti.CHECK_BOX_ENABLED;
- }
- }
- }
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- utentiHelper.addUtentiToDati(dati, TipoOperazione.CHANGE, singlePdD,
- nomesu,pwsu,confpwsu,interfaceType,
- isServizi,isDiagnostica,isReportistica,isSistema,isMessaggi,isUtenti,isAuditing,isAccordiCooperazione,
- changepwd,modalitaScelte, isSoggettiAll, isServiziAll, user, scadenza, dataUltimoAggiornamentoPassword, oldScadenza,
- tipoModalitaConsoleGestione, idSoggettoConsoleGestione, tipoModalitaConsoleMonitoraggio, idSoggettoConsoleMonitoraggio,
- homePageMonitoraggio, intervalloTemporaleHomePageConsoleMonitoraggio);
- pd.setDati(dati);
- if(first &&
- !user.isConfigurazioneValidaAbilitazioni()) {
- if(!user.isConfigurazioneValidaSoggettiAbilitati()) {
- pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SOGGETTI_DEFINIZIONE_UPDATE_NOTE,MessageType.INFO);
- }
- else if(!user.isConfigurazioneValidaServiziAbilitati()) {
- pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SERVIZI_DEFINIZIONE_UPDATE_NOTE,MessageType.INFO);
- }
- }
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeInProgress(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE());
- }
- // Controlli sui campi immessi
- boolean isOk = utentiHelper.utentiCheckData(TipoOperazione.CHANGE,singlePdD,oldProtocolliSupportati,oldHasOnlyPermessiUtenti);
- if (!isOk) {
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd,
- new Parameter(UtentiCostanti.LABEL_UTENTI, UtentiCostanti.SERVLET_NAME_UTENTI_LIST),
- new Parameter(nomesu,null));
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- utentiHelper.addUtentiToDati(dati, TipoOperazione.CHANGE, singlePdD,
- nomesu,pwsu,confpwsu,interfaceType,
- isServizi,isDiagnostica,isReportistica,isSistema,isMessaggi,isUtenti,isAuditing,isAccordiCooperazione,
- changepwd,modalitaScelte, isSoggettiAll, isServiziAll, user, scadenza, dataUltimoAggiornamentoPassword, oldScadenza,
- tipoModalitaConsoleGestione, idSoggettoConsoleGestione, tipoModalitaConsoleMonitoraggio, idSoggettoConsoleMonitoraggio,
- homePageMonitoraggio, intervalloTemporaleHomePageConsoleMonitoraggio);
- pd.setDati(dati);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeCheckError(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE());
- }
-
- // Se singleSuServizi != null, controllo che il superutente non sia
- // quello che sto modificando
- // Se singleSu = null, controllo se l'utente aveva permessi S
- List<String> usersWithS = utentiCore.getUsersWithType(Permessi.SERVIZI.toString());
- String[] uws = null;
- if (usersWithS != null && !usersWithS.isEmpty()) {
- List<String> usersWithPermessoS = new ArrayList<>();
- Iterator<String> itUWS = usersWithS.iterator();
- while (itUWS.hasNext()) {
- String singleUWS = itUWS.next();
- if (!nomesu.equals(singleUWS)) {
- usersWithPermessoS.add(singleUWS);
- }
- }
- if(!usersWithPermessoS.isEmpty()){
- uws = new String[1];
- uws = usersWithPermessoS.toArray(uws);
- }
- }
- // Se singleSuAccordi = null, controllo se l'utente aveva permessi P
- List<String> usersWithP = utentiCore.getUsersWithType(Permessi.ACCORDI_COOPERAZIONE.toString());
- String[] uwp = null;
- if (usersWithP != null && !usersWithP.isEmpty()) {
- List<String> usersWithPermessoP = new ArrayList<>();
- Iterator<String> itUWS = usersWithP.iterator();
- while (itUWS.hasNext()) {
- String singleUWP = itUWS.next();
- if (!nomesu.equals(singleUWP)) {
- usersWithPermessoP.add(singleUWP);
- }
- }
- if(!usersWithPermessoP.isEmpty()){
- uwp = new String[1];
- uwp = usersWithPermessoP.toArray(uwp);
- }
- }
- // check input relativo ai servizi
- String msgServizi = "";
- boolean paginaSuServizi = false;
- if(!utentiCore.isVisioneOggettiGlobaleIndipendenteUtente()) {
- if (singleSuServizi != null) {
- if (nomesu.equals(singleSuServizi)) {
- paginaSuServizi = true;
- msgServizi = "Scegliere un utente con il permesso 'Servizi' che non sia quello che sto modificando<br>";
- }
- } else {
- if ((isServizi == null || !isServizi.equals("yes")) &&
- usersWithS.contains(nomesu)) {
- if(uws==null){
-
- List<DataElement> dati = new ArrayList<>();
-
- dati.add(ServletUtils.getDataElementForEditModeFinished());
-
- pd.disableEditMode();
-
- pd.setDati(dati);
-
- // Preparo il menu
- pd.setMessage("Non è possibile eliminare il permesso 'Servizi', poichè non esistono altri utenti con tale permesso");
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
-
- return ServletUtils.getStrutsForwardGeneralError(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE());
-
- }else{
- paginaSuServizi = true;
- msgServizi = "Scegliere un utente a cui verranno assegnati tutti gli oggetti appartenenti all'utente '"+nomesu+
- "'.<br>L'operazione si è resa necessaria in seguito all'eliminazione del permesso di gestione 'Servizi' (S).<br>";
- }
- }
- }
- }
- String msgAccordi = "";
- boolean paginaSuAccordi = false;
- boolean checkOggettiAccordi = false;
- if(!utentiCore.isVisioneOggettiGlobaleIndipendenteUtente()) {
- if (singleSuAccordiCooperazione != null) {
- if (nomesu.equals(singleSuAccordiCooperazione)) {
- paginaSuAccordi = true;
- msgAccordi = "Scegliere un utente con il permesso 'Accordi Cooperazione' che non sia quello che sto modificando<br>";
- }
- } else {
- if ((isAccordiCooperazione == null || !isAccordiCooperazione.equals("yes")) &&
- usersWithP.contains(nomesu)) {
- if(uwp==null){
- // controllare che l'utente possieda degli oggetti
- checkOggettiAccordi = true;
- }else{
- paginaSuAccordi = true;
- msgAccordi = (!msgServizi.contains("Scegliere un utente")
- ? ("Scegliere un utente a cui verranno assegnati tutti gli oggetti appartenenti all'utente '"+nomesu+ "'.<br>") : "")
- +"L'operazione si è resa necessaria in seguito all'eliminazione del permesso di gestione 'Accordi Cooperazione' (P).<br>";
- }
- }
- }
- }
- boolean paginaSu = paginaSuAccordi || paginaSuServizi;
- // CHECK
- String msg = msgServizi + msgAccordi;
- // Se paginaSu = true, propongo una pagina in cui faccio scegliere
- // un superutente con permessi S e/o P a cui assegnare gli oggetti
- // dell'utente che sto modificando
- // In caso contrario, modifico l'utente, assegnando gli eventuali
- // oggetti a singleSu
- if (paginaSu) {
- // Faccio scegliere il superutente a cui assegnare gli oggetti
- // Preparo il menu
- utentiHelper.makeMenu();
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd,
- new Parameter(UtentiCostanti.LABEL_UTENTI, UtentiCostanti.SERVLET_NAME_UTENTI_LIST),
- new Parameter(nomesu,null));
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- utentiHelper.addChangeUtenteInfoToDati(dati, nomesu, changepwd, pwsu, confpwsu, interfaceType,
- isServizi, isDiagnostica, isReportistica, isSistema, isMessaggi, isUtenti, isAuditing,isAccordiCooperazione,paginaSuServizi,
- uws, paginaSuAccordi, uwp,modalitaScelte, tipoModalitaConsoleGestione, idSoggettoConsoleGestione, tipoModalitaConsoleMonitoraggio, idSoggettoConsoleMonitoraggio,
- homePageMonitoraggio, intervalloTemporaleHomePageConsoleMonitoraggio);
- pd.setDati(dati);
- pd.setMessage(msg,Costanti.MESSAGE_TYPE_INFO);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForward(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE(),UtentiCostanti.STRUTS_FORWARD_INFO);
- } else {
- boolean secret = false;
- String secretPassword = pwsu;
- String secretUser = nomesu;
- boolean secretAppId = false;
-
- // Modifico l'utente
- PasswordVerifier passwordVerifier = utentiCore.getUtenzePasswordVerifier();
- if(utentiCore.isCheckPasswordExpire(passwordVerifier)) {
- user.setCheckLastUpdatePassword(ServletUtils.isCheckBoxEnabled(scadenza));
- } else {
- user.setCheckLastUpdatePassword(false);
- }
-
- // Cripto la password
- boolean cpwd = ServletUtils.isCheckBoxEnabled(changepwd);
- if(cpwd && !"".equals(pwsu)){
- if(utentiCore.isUtenzePasswordEncryptEnabled()) {
- secret = true;
- pwsu = utentiCore.getUtenzePasswordManager().crypt(pwsu);
- }
-
- user.setLastUpdatePassword(new Date());
- user.setPassword(pwsu);
- }
- // Modifico i dati dell'utente
- user.setInterfaceType(InterfaceType.valueOf(tipoGui));
- user.setProtocolloSelezionatoPddConsole(!tipoModalitaConsoleGestione.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? tipoModalitaConsoleGestione : null);
- user.setSoggettoSelezionatoPddConsole(!idSoggettoConsoleGestione.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? idSoggettoConsoleGestione : null);
- user.setProtocolloSelezionatoPddMonitor(!tipoModalitaConsoleMonitoraggio.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? tipoModalitaConsoleMonitoraggio : null);
- user.setSoggettoSelezionatoPddMonitor(!idSoggettoConsoleMonitoraggio.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? idSoggettoConsoleMonitoraggio : null);
-
- String puString = "";
- if (isServizi != null && ServletUtils.isCheckBoxEnabled(isServizi))
- puString = Permessi.SERVIZI.toString();
- if (isDiagnostica != null && ServletUtils.isCheckBoxEnabled(isDiagnostica)) {
- if (puString.equals(""))
- puString = Permessi.DIAGNOSTICA.toString();
- else
- puString = puString+","+Permessi.DIAGNOSTICA.toString();
- }
-
- if (isReportistica != null && ServletUtils.isCheckBoxEnabled(isReportistica)) {
- if (puString.equals(""))
- puString = Permessi.REPORTISTICA.toString();
- else
- puString = puString+","+Permessi.REPORTISTICA.toString();
- }
- if (isSistema != null && ServletUtils.isCheckBoxEnabled(isSistema)) {
- if (puString.equals(""))
- puString = Permessi.SISTEMA.toString();
- else
- puString = puString+","+Permessi.SISTEMA.toString();
- }
- if (isMessaggi != null && ServletUtils.isCheckBoxEnabled(isMessaggi)) {
- if (puString.equals(""))
- puString = Permessi.CODE_MESSAGGI.toString();
- else
- puString = puString+","+Permessi.CODE_MESSAGGI.toString();
- }
- if (isUtenti != null && ServletUtils.isCheckBoxEnabled(isUtenti)) {
- if (puString.equals(""))
- puString = Permessi.UTENTI.toString();
- else
- puString = puString+","+Permessi.UTENTI.toString();
- }
- if (isAuditing != null && ServletUtils.isCheckBoxEnabled(isAuditing)) {
- if (puString.equals(""))
- puString = Permessi.AUDITING.toString();
- else
- puString = puString+","+Permessi.AUDITING.toString();
- }
- if (isAccordiCooperazione != null && ServletUtils.isCheckBoxEnabled(isAccordiCooperazione)) {
- if (puString.equals(""))
- puString = Permessi.ACCORDI_COOPERAZIONE.toString();
- else
- puString = puString+","+Permessi.ACCORDI_COOPERAZIONE.toString();
- }
- user.setPermessi(PermessiUtente.toPermessiUtente(puString));
-
- user.clearProtocolliSupportati();
- if(user.hasOnlyPermessiUtenti()) {
- user.setProtocolloSelezionatoPddConsole(null);
- user.setInterfaceType(InterfaceType.STANDARD);
- }
- else {
- // modalita gateway
- for (int i = 0; i < protocolliRegistratiConsole.size() ; i++) {
- String protocolloName = protocolliRegistratiConsole.get(i);
- if(ServletUtils.isCheckBoxEnabled(modalitaScelte[i])) {
- user.addProtocolloSupportato(protocolloName);
- }
- }
- if(user.getProtocolloSelezionatoPddConsole() != null &&
- !user.getProtocolliSupportati().contains(user.getProtocolloSelezionatoPddConsole())) {
- user.setProtocolloSelezionatoPddConsole(null);
- }
- }
-
- if (ServletUtils.isCheckBoxEnabled(isDiagnostica) || ServletUtils.isCheckBoxEnabled(isReportistica)) {
- user.setPermitAllSoggetti(ServletUtils.isCheckBoxEnabled(isSoggettiAll));
- // se seleziono il permitall devo cancellare i soggetti selezionati
- if(user.isPermitAllSoggetti() &&
- user.getSoggetti() != null && !user.getSoggetti().isEmpty()) {
- user.getSoggetti().clear();
- }
- user.setPermitAllServizi(ServletUtils.isCheckBoxEnabled(isServiziAll));
- // se seleziono il permitall devo cancellare i servizi selezionati
- if(user.isPermitAllServizi() &&
- user.getServizi() != null && !user.getServizi().isEmpty()) {
- user.getServizi().clear();
- }
-
- // salvataggio homepage e grafico della console di monitoraggio
- boolean homePageFound = false;
- for (Stato stato : user.getStati()) {
- if(stato.getOggetto().equals(UtentiCostanti.OGGETTO_STATO_UTENTE_HOME_PAGE)) {
- stato.setStato(utentiHelper.incapsulaValoreStato(homePageMonitoraggio));
- homePageFound = true;
- break;
- }
- }
-
- if(!homePageFound) {
- Stato statoHomePage = new Stato();
- statoHomePage.setOggetto(UtentiCostanti.OGGETTO_STATO_UTENTE_HOME_PAGE);
- statoHomePage.setStato(utentiHelper.incapsulaValoreStato(homePageMonitoraggio));
-
- user.getStati().add(statoHomePage);
- }
-
- boolean statoIntevalloTemporaleHomePageFound = false;
-
- for (Stato stato : user.getStati()) {
- if(stato.getOggetto().equals(UtentiCostanti.OGGETTO_STATO_UTENTE_INTERVALLO_TEMPORALE_HOME_PAGE)) {
- stato.setStato(utentiHelper.incapsulaValoreStato(intervalloTemporaleHomePageConsoleMonitoraggio));
- statoIntevalloTemporaleHomePageFound = true;
- break;
- }
- }
-
- if(!statoIntevalloTemporaleHomePageFound) {
- Stato statoIntevalloTemporaleHomePage = new Stato();
- statoIntevalloTemporaleHomePage.setOggetto(UtentiCostanti.OGGETTO_STATO_UTENTE_INTERVALLO_TEMPORALE_HOME_PAGE);
- statoIntevalloTemporaleHomePage.setStato(utentiHelper.incapsulaValoreStato(intervalloTemporaleHomePageConsoleMonitoraggio));
-
- user.getStati().add(statoIntevalloTemporaleHomePage);
- }
- }
- // Se singleSu != null, devo recuperare gli oggetti
- // dell'utente ed assegnarli a singleSu
- List<Object> oggetti = new ArrayList<>();
- List<Integer> tipoModifica = new ArrayList<>();
- if(soggettiCore.isRegistroServiziLocale() &&
- singleSuServizi != null && !singleSuServizi.equals("")) {
- UserObjects results = utentiCore.updateUserServizi(nomesu, singleSuServizi);
- ControlStationCore.logInfo("Modificata utenza ["+nomesu+"]->["+singleSuServizi+"] per permesso relativo ai servizi (L'utenza '"+nomesu+"' verrà modificata per non avere più la gestione dei servizi). Risultati modifica: "+results.toString(false));
- }
- if(soggettiCore.isRegistroServiziLocale() &&
- (singleSuAccordiCooperazione != null && !singleSuAccordiCooperazione.equals("")) || checkOggettiAccordi) {
-
- if(checkOggettiAccordi){
- UserObjects results = utentiCore.countUserCooperazione(nomesu);
- if(results.accordi_accoperazione>0 || results.accordi_parte_comune>0) {
- List<DataElement> dati = new ArrayList<>();
-
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- pd.disableEditMode();
- pd.setDati(dati);
- // Preparo il menu
- pd.setMessage("Non è possibile eliminare il permesso 'Accordi Cooperazione', poichè non esistono altri utenti con tale permesso");
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardGeneralError(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE());
- }
- }
-
- UserObjects results = utentiCore.updateUserCooperazione(nomesu, singleSuAccordiCooperazione);
- ControlStationCore.logInfo("Modificata utenza ["+nomesu+"]->["+singleSuAccordiCooperazione+"] per permesso relativo agli accordi di cooperazione (L'utenza '"+nomesu+"' verrà modificata per non avere più la gestione degli accordi di cooperazione). Risultati modifica: "+results.toString(true));
- }
- // Alla fine, modifico l'utente
- oggetti.add(user);
- tipoModifica.add(org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation.PERFORM_OPERATION_UPDATE);
- int[] operationTypes = new int[tipoModifica.size()];
- for (int cO = 0; cO < tipoModifica.size(); cO++)
- operationTypes[cO] = tipoModifica.get(cO);
- utentiCore.performOperationMultiTypes(userLogin, utentiHelper.smista(), operationTypes, oggetti.toArray());
- // Se sto modificando l'utente che è anche quello connesso
- if(userLogin.equals(user.getLogin())){
- if(utentiCore.isUtenzeModificaProfiloUtenteDaFormAggiornaSessione()) {
- LoginSessionUtilities.cleanLoginParametersSession(request, session);
- ServletUtils.setUserIntoSession(request, session, user); // update in sessione.
- // utentiHelper.setTipoInterfaccia(user.getInterfaceType()); // update InterfaceType
- LoginSessionUtilities.setLoginParametersSession(request, session, utentiCore, userLogin);
- } else {
- ServletUtils.setUserIntoSession(request, session, user); // update in sessione.
- }
- }
- boolean isLoggedUser = userLogin.equals(user.getLogin());
-
- // Messaggio 'Please Copy'
- if(!isLoggedUser && secret) {
- utentiHelper.setSecretPleaseCopy(secretPassword, secretUser, secretAppId, ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC, OggettoDialogEnum.UTENTE, nomesu);
- }
- // Se ho modificato l'utente loggato non faccio caricare la lista, degli utente ma una
- // pagina di info che indica che l'utente e' stato modificato con successo
- // MOTIVO: Viene effettuato il refresh della colonna a sinistra, se per caso sono cambiati i diritti
- if (isLoggedUser){
- // Reinit general data per aggiornare lo stato della barra dell'header a dx.
- gd = generalHelper.initGeneralData(request);
-
- utentiHelper.makeMenu();
- pd.setMessage("Utente '"+userLogin+"' modificato con successo", Costanti.MESSAGE_TYPE_INFO);
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForward(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE(),UtentiCostanti.STRUTS_FORWARD_PERMESSI_OK);
- } else {
- if(!user.isConfigurazioneValidaSoggettiAbilitati()) {
- pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SOGGETTI_DEFINIZIONE_UPDATE_NOTE, MessageType.INFO);
- }
- else if(!user.isConfigurazioneValidaServiziAbilitati()) {
- pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SERVIZI_DEFINIZIONE_UPDATE_NOTE, MessageType.INFO);
- }
-
- // Preparo la lista
- int idLista = Liste.SU;
- ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session,ConsoleSearch.class);
- ricerca = utentiHelper.checkSearchParameters(idLista, ricerca);
- List<User> lista = utentiCore.userList(ricerca);
- utentiHelper.prepareUtentiList(ricerca, lista, singlePdD);
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE());
- }
- }
- } catch (Exception e) {
- return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
- UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.CHANGE());
- }
- }
- }