UtentiAdd.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */


  20. package org.openspcoop2.web.ctrlstat.servlet.utenti;

  21. import java.util.ArrayList;
  22. import java.util.Date;
  23. import java.util.List;

  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import javax.servlet.http.HttpSession;

  27. import org.apache.struts.action.Action;
  28. import org.apache.struts.action.ActionForm;
  29. import org.apache.struts.action.ActionForward;
  30. import org.apache.struts.action.ActionMapping;
  31. import org.openspcoop2.core.commons.Liste;
  32. import org.openspcoop2.utils.crypt.PasswordVerifier;
  33. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  34. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  35. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  36. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  37. import org.openspcoop2.web.ctrlstat.servlet.OggettoDialogEnum;
  38. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  39. import org.openspcoop2.web.lib.mvc.DataElement;
  40. import org.openspcoop2.web.lib.mvc.ForwardParams;
  41. import org.openspcoop2.web.lib.mvc.GeneralData;
  42. import org.openspcoop2.web.lib.mvc.MessageType;
  43. import org.openspcoop2.web.lib.mvc.PageData;
  44. import org.openspcoop2.web.lib.mvc.Parameter;
  45. import org.openspcoop2.web.lib.mvc.ServletUtils;
  46. import org.openspcoop2.web.lib.mvc.TipoOperazione;
  47. import org.openspcoop2.web.lib.users.dao.InterfaceType;
  48. import org.openspcoop2.web.lib.users.dao.Permessi;
  49. import org.openspcoop2.web.lib.users.dao.PermessiUtente;
  50. import org.openspcoop2.web.lib.users.dao.Stato;
  51. import org.openspcoop2.web.lib.users.dao.User;

  52. /**
  53.  * suAdd
  54.  *
  55.  * @author Andrea Poli (apoli@link.it)
  56.  * @author Stefano Corallo (corallo@link.it)
  57.  * @author Sandra Giangrandi (sandra@link.it)
  58.  * @author $Author$
  59.  * @version $Rev$, $Date$
  60.  *
  61.  */
  62. public final class UtentiAdd extends Action {

  63.     @Override
  64.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

  65.         HttpSession session = request.getSession(true);

  66.         // Inizializzo PageData
  67.         PageData pd = new PageData();

  68.         GeneralHelper generalHelper = new GeneralHelper(session);

  69.         // Inizializzo GeneralData
  70.         GeneralData gd = generalHelper.initGeneralData(request);

  71.         String userLogin = ServletUtils.getUserLoginFromSession(session);

  72.         try {
  73.             UtentiCore utentiCore = new UtentiCore();
  74.             UtentiHelper utentiHelper = new UtentiHelper(request, pd, session);
  75.            
  76.             boolean loginApplication = utentiCore.isLoginApplication();
  77.    
  78.             String nomesu = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_USERNAME);
  79.             String pwsu = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_PW);
  80.             String confpwsu = null;
  81.             String tipoGui = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_TIPO_GUI);
  82.            
  83.             String tipoModalitaConsoleGestione = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA);
  84.             String idSoggettoConsoleGestione = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_ID_SOGGETTO);
  85.            
  86.             String tipoModalitaConsoleMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA_MONITOR);
  87.             String idSoggettoConsoleMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTE_ID_SOGGETTO_MONITOR);
  88.            
  89.             String homePageMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_HOME_PAGE_MONITORAGGIO);
  90.             String intervalloTemporaleHomePageConsoleMonitoraggio = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_INTERVALLO_TEMPORALE_HOME_PAGE_MONITORAGGIO);
  91.            
  92.             InterfaceType interfaceType = null;
  93.             if(tipoGui==null) {
  94.                 interfaceType = InterfaceType.STANDARD;
  95.             }
  96.             else {
  97.                 interfaceType = InterfaceType.convert(tipoGui, true);
  98.             }
  99.            
  100.             // nessun profilo selezionato imposto all
  101.             if(tipoModalitaConsoleGestione == null) {
  102.                 tipoModalitaConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  103.             }
  104.            
  105.             // nessun soggetto selezionato imposto all
  106.             if(idSoggettoConsoleGestione == null) {
  107.                 idSoggettoConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  108.             }
  109.            
  110.             // nessun profilo selezionato imposto all
  111.             if(tipoModalitaConsoleMonitoraggio == null) {
  112.                 tipoModalitaConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  113.             }
  114.            
  115.             // nessun soggetto selezionato imposto all
  116.             if(idSoggettoConsoleMonitoraggio == null) {
  117.                 idSoggettoConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  118.             }
  119.            
  120.             // nessuna home page selezionata imposto transazioni
  121.             if(homePageMonitoraggio == null) {
  122.                 homePageMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_HOME_PAGE_MONITORAGGIO_TRANSAZIONI;
  123.             }
  124.            
  125.             // nessun tipo grafico selezionato imposto ultimi 7 giorni
  126.             if(intervalloTemporaleHomePageConsoleMonitoraggio == null) {
  127.                 intervalloTemporaleHomePageConsoleMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_INTERVALLO_TEMPORALE_HOME_PAGE_MONITORAGGIO_ULTIMI_7_GIORNI;
  128.             }
  129.            
  130.             String isServizi = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_SERVIZI);
  131.             String isDiagnostica = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_DIAGNOSTICA);
  132.             String isReportistica = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_REPORTISTICA);
  133.             String isSistema = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_SISTEMA);
  134.             String isMessaggi = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_MESSAGGI);
  135.             String isUtenti = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_UTENTI);
  136.             String isAuditing = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_AUDITING);
  137.             String isAccordiCooperazione = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_IS_ACCORDI_COOPERAZIONE);
  138.            
  139.             String isSoggettiAll = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_ABILITAZIONI_SOGGETTI_ALL);
  140.             String isServiziAll = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_ABILITAZIONI_SERVIZI_ALL);
  141.            
  142.             String scadenza = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_SCADENZA);
  143.            
  144.             Boolean singlePdD = ServletUtils.getBooleanAttributeFromSession(CostantiControlStation.SESSION_PARAMETRO_SINGLE_PDD, session, request).getValue();
  145.            
  146.             List<String> protocolliRegistratiConsole = utentiCore.getProtocolli();
  147.        
  148.             String [] modalitaScelte = new String[protocolliRegistratiConsole.size()];
  149.             for (int i = 0; i < protocolliRegistratiConsole.size() ; i++) {
  150.                 String protocolloName = protocolliRegistratiConsole.get(i);
  151.                 modalitaScelte[i] = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_MODALITA_PREFIX + protocolloName);
  152.             }
  153.            
  154.             String postBackElementName = utentiHelper.getPostBackElementName();
  155.            
  156.             if (postBackElementName != null) {
  157.                
  158.                 // selezione modalita'
  159.                 if(postBackElementName.startsWith(UtentiCostanti.PARAMETRO_UTENTI_MODALITA_PREFIX)) {
  160.                     tipoModalitaConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  161.                     idSoggettoConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  162.                     tipoModalitaConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  163.                     idSoggettoConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  164.                 }
  165.                
  166.                 // cambio del profilo, reset del valore del soggetto
  167.                 if(postBackElementName.equals(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA)) {
  168.                     idSoggettoConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  169.                 }
  170.                
  171.                 // cambio del profilo, reset del valore del soggetto
  172.                 if(postBackElementName.equals(UtentiCostanti.PARAMETRO_UTENTE_TIPO_MODALITA_MONITOR)) {
  173.                     idSoggettoConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
  174.                 }
  175.                
  176.                 // cambio della home page, reset del valore del grafico
  177.                 if(postBackElementName.equals(UtentiCostanti.PARAMETRO_UTENTI_HOME_PAGE_MONITORAGGIO)) {
  178.                     intervalloTemporaleHomePageConsoleMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_INTERVALLO_TEMPORALE_HOME_PAGE_MONITORAGGIO_ULTIMI_7_GIORNI;
  179.                 }
  180.             }
  181.                        
  182.             // Preparo il menu
  183.             utentiHelper.makeMenu();
  184.    
  185.             // Se nomehid = null, devo visualizzare la pagina per l'inserimento dati
  186.             if(utentiHelper.isEditModeInProgress()){
  187.                
  188.                 // setto la barra del titolo
  189.                
  190.                 ServletUtils.setPageDataTitle(pd,
  191.                         new Parameter(UtentiCostanti.LABEL_UTENTI ,UtentiCostanti.SERVLET_NAME_UTENTI_LIST),
  192.                         ServletUtils.getParameterAggiungi());
  193.    
  194.                 // preparo i campi
  195.                 List<DataElement> dati = new ArrayList<>();
  196.    
  197.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  198.    
  199.                 if(nomesu==null){
  200.                     nomesu = "";
  201.                 }
  202.                 if(pwsu==null){
  203.                     pwsu = "";
  204.                 }
  205.                
  206.                 utentiHelper.addUtentiToDati(dati, TipoOperazione.ADD, singlePdD,
  207.                         nomesu,pwsu,confpwsu,interfaceType,
  208.                         isServizi,isDiagnostica,isReportistica,isSistema,isMessaggi,isUtenti,isAuditing,isAccordiCooperazione,
  209.                         null,modalitaScelte, isSoggettiAll, isServiziAll, null, scadenza, null, false,
  210.                         tipoModalitaConsoleGestione, idSoggettoConsoleGestione, tipoModalitaConsoleMonitoraggio, idSoggettoConsoleMonitoraggio,
  211.                         homePageMonitoraggio, intervalloTemporaleHomePageConsoleMonitoraggio);
  212.                
  213.                 pd.setDati(dati);
  214.        
  215.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  216.                
  217.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, UtentiCostanti.OBJECT_NAME_UTENTI,ForwardParams.ADD());

  218.             }
  219.    
  220.             // Controlli sui campi immessi
  221.             boolean isOk = utentiHelper.utentiCheckData(TipoOperazione.ADD,singlePdD,null,false);
  222.             if (!isOk) {
  223.                
  224.                 // setto la barra del titolo
  225.                
  226.                 ServletUtils.setPageDataTitle(pd,
  227.                         new Parameter(UtentiCostanti.LABEL_UTENTI ,UtentiCostanti.SERVLET_NAME_UTENTI_LIST),
  228.                         ServletUtils.getParameterAggiungi());
  229.    
  230.                 // preparo i campi
  231.                 List<DataElement> dati = new ArrayList<>();
  232.    
  233.                 dati.add(ServletUtils.getDataElementForEditModeFinished());
  234.    
  235.                 utentiHelper.addUtentiToDati(dati, TipoOperazione.ADD, singlePdD,
  236.                         nomesu,pwsu,confpwsu,interfaceType,
  237.                         isServizi,isDiagnostica,isReportistica,isSistema,isMessaggi,isUtenti,isAuditing,isAccordiCooperazione,
  238.                         null,modalitaScelte, isSoggettiAll, isServiziAll, null, scadenza, null, false,
  239.                         tipoModalitaConsoleGestione, idSoggettoConsoleGestione, tipoModalitaConsoleMonitoraggio, idSoggettoConsoleMonitoraggio,
  240.                         homePageMonitoraggio, intervalloTemporaleHomePageConsoleMonitoraggio);
  241.                
  242.                 pd.setDati(dati);
  243.    
  244.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  245.    
  246.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.ADD());
  247.             }
  248.    
  249.             boolean secret = false;
  250.             String secretPassword  = pwsu;
  251.             String secretUser = nomesu;
  252.             boolean secretAppId = false;
  253.            
  254.             // Cripto la password
  255.             if(utentiCore.isUtenzePasswordEncryptEnabled()) {
  256.                 secret = true;
  257.                 pwsu = utentiCore.getUtenzePasswordManager().crypt(pwsu);
  258.             }
  259.    
  260.             // Inserisco l'utente nel db
  261.             User newU = new User();
  262.             newU.setLogin(nomesu);
  263.             newU.setPassword(pwsu);
  264.             newU.setInterfaceType(interfaceType);
  265.             newU.setProtocolloSelezionatoPddConsole(!tipoModalitaConsoleGestione.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? tipoModalitaConsoleGestione : null);
  266.             newU.setSoggettoSelezionatoPddConsole(!idSoggettoConsoleGestione.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? idSoggettoConsoleGestione : null);
  267.             newU.setProtocolloSelezionatoPddMonitor(!tipoModalitaConsoleMonitoraggio.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? tipoModalitaConsoleMonitoraggio : null);
  268.             newU.setSoggettoSelezionatoPddMonitor(!idSoggettoConsoleMonitoraggio.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? idSoggettoConsoleMonitoraggio : null);
  269.            
  270.             String puString = "";
  271.             if (ServletUtils.isCheckBoxEnabled(isServizi))
  272.                 puString = Permessi.SERVIZI.toString();
  273.             if (ServletUtils.isCheckBoxEnabled(isDiagnostica)) {
  274.                 if (puString.equals(""))
  275.                     puString = Permessi.DIAGNOSTICA.toString();
  276.                 else
  277.                     puString = puString+","+Permessi.DIAGNOSTICA.toString();
  278.             }
  279.             if (ServletUtils.isCheckBoxEnabled(isReportistica)) {
  280.                 if (puString.equals(""))
  281.                     puString = Permessi.REPORTISTICA.toString();
  282.                 else
  283.                     puString = puString+","+Permessi.REPORTISTICA.toString();
  284.             }
  285.             if (ServletUtils.isCheckBoxEnabled(isSistema)) {
  286.                 if (puString.equals(""))
  287.                     puString = Permessi.SISTEMA.toString();
  288.                 else
  289.                     puString = puString+","+Permessi.SISTEMA.toString();
  290.             }
  291.             if (ServletUtils.isCheckBoxEnabled(isMessaggi)) {
  292.                 if (puString.equals(""))
  293.                     puString = Permessi.CODE_MESSAGGI.toString();
  294.                 else
  295.                     puString = puString+","+Permessi.CODE_MESSAGGI.toString();
  296.             }
  297.             if (ServletUtils.isCheckBoxEnabled(isUtenti)) {
  298.                 if (puString.equals(""))
  299.                     puString = Permessi.UTENTI.toString();
  300.                 else
  301.                     puString = puString+","+Permessi.UTENTI.toString();
  302.             }
  303.             if (ServletUtils.isCheckBoxEnabled(isAuditing)) {
  304.                 if (puString.equals(""))
  305.                     puString = Permessi.AUDITING.toString();
  306.                 else
  307.                     puString = puString+","+Permessi.AUDITING.toString();
  308.             }
  309.             if (ServletUtils.isCheckBoxEnabled(isAccordiCooperazione)) {
  310.                 if (puString.equals(""))
  311.                     puString = Permessi.ACCORDI_COOPERAZIONE.toString();
  312.                 else
  313.                     puString = puString+","+Permessi.ACCORDI_COOPERAZIONE.toString();
  314.             }
  315.             newU.setPermessi(PermessiUtente.toPermessiUtente(puString));
  316.            
  317.             newU.clearProtocolliSupportati();
  318.             // modalita gateway
  319.             for (int i = 0; i < protocolliRegistratiConsole.size() ; i++) {
  320.                 String protocolloName = protocolliRegistratiConsole.get(i);
  321.                 if(ServletUtils.isCheckBoxEnabled(modalitaScelte[i])) {
  322.                     newU.addProtocolloSupportato(protocolloName);
  323.                 }
  324.             }
  325.            
  326.             if (ServletUtils.isCheckBoxEnabled(isDiagnostica) || ServletUtils.isCheckBoxEnabled(isReportistica)) {
  327.                 if(utentiCore.isMultitenant()) {
  328.                     newU.setPermitAllSoggetti(ServletUtils.isCheckBoxEnabled(isSoggettiAll));
  329.                 }
  330.                 else {
  331.                     newU.setPermitAllSoggetti(true);
  332.                 }
  333.                 newU.setPermitAllServizi(ServletUtils.isCheckBoxEnabled(isServiziAll));
  334.                
  335.                 // salvataggio homepage e grafico della console di monitoraggio
  336.                 Stato statoHomePage = new Stato();
  337.                 statoHomePage.setOggetto(UtentiCostanti.OGGETTO_STATO_UTENTE_HOME_PAGE);
  338.                 statoHomePage.setStato(utentiHelper.incapsulaValoreStato(homePageMonitoraggio));
  339.                 newU.getStati().add(statoHomePage);
  340.                
  341.                 Stato statoIntevalloTemporaleHomePage = new Stato();
  342.                 statoIntevalloTemporaleHomePage.setOggetto(UtentiCostanti.OGGETTO_STATO_UTENTE_INTERVALLO_TEMPORALE_HOME_PAGE);
  343.                 statoIntevalloTemporaleHomePage.setStato(utentiHelper.incapsulaValoreStato(intervalloTemporaleHomePageConsoleMonitoraggio));
  344.                 newU.getStati().add(statoIntevalloTemporaleHomePage );
  345.             }
  346.            
  347.             // aggiornamento password
  348.             PasswordVerifier passwordVerifier = utentiCore.getUtenzePasswordVerifier();
  349.             if(utentiCore.isCheckPasswordExpire(passwordVerifier)) {
  350.                 newU.setCheckLastUpdatePassword(ServletUtils.isCheckBoxEnabled(scadenza));
  351.             } else {
  352.                 newU.setCheckLastUpdatePassword(false);
  353.             }
  354.             // salvo comunque la data di immissione password
  355.             newU.setLastUpdatePassword(new Date());
  356.            
  357.            
  358.             utentiCore.performCreateOperation(userLogin, utentiHelper.smista(), newU);
  359.    
  360.             // Messaggio 'Please Copy'
  361.             if(loginApplication && secret) {
  362.                 utentiHelper.setSecretPleaseCopy(secretPassword, secretUser, secretAppId, ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC, OggettoDialogEnum.UTENTE, nomesu);
  363.             }
  364.            
  365.             // Preparo la lista
  366.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
  367.    
  368.             int idLista = Liste.SU;
  369.    
  370.             ricerca = utentiHelper.checkSearchParameters(idLista, ricerca);
  371.    
  372.             List<User> lista = utentiCore.userList(ricerca);
  373.    
  374.             utentiHelper.prepareUtentiList(ricerca, lista, singlePdD);
  375.    
  376.             if(!newU.isConfigurazioneValidaSoggettiAbilitati()) {
  377.                 pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SOGGETTI_DEFINIZIONE_CREATE_NOTE, MessageType.INFO);
  378.             }
  379.             else if(!newU.isConfigurazioneValidaServiziAbilitati()) {
  380.                 pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SERVIZI_DEFINIZIONE_CREATE_NOTE, MessageType.INFO);
  381.             }
  382.            
  383.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  384.    
  385.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.ADD());
  386.            
  387.         } catch (Exception e) {
  388.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  389.                     UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.ADD());
  390.         }
  391.     }
  392. }