UtentiAdd.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.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.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;
- /**
- * suAdd
- *
- * @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 UtentiAdd 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 {
- UtentiCore utentiCore = new UtentiCore();
- UtentiHelper utentiHelper = new UtentiHelper(request, pd, session);
-
- boolean loginApplication = utentiCore.isLoginApplication();
-
- 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 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);
-
- InterfaceType interfaceType = null;
- if(tipoGui==null) {
- interfaceType = InterfaceType.STANDARD;
- }
- else {
- interfaceType = InterfaceType.convert(tipoGui, true);
- }
-
- // nessun profilo selezionato imposto all
- if(tipoModalitaConsoleGestione == null) {
- tipoModalitaConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- // nessun soggetto selezionato imposto all
- if(idSoggettoConsoleGestione == null) {
- idSoggettoConsoleGestione = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- // nessun profilo selezionato imposto all
- if(tipoModalitaConsoleMonitoraggio == null) {
- tipoModalitaConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- // nessun soggetto selezionato imposto all
- if(idSoggettoConsoleMonitoraggio == null) {
- idSoggettoConsoleMonitoraggio = UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL;
- }
-
- // nessuna home page selezionata imposto transazioni
- if(homePageMonitoraggio == null) {
- homePageMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_HOME_PAGE_MONITORAGGIO_TRANSAZIONI;
- }
-
- // nessun tipo grafico selezionato imposto ultimi 7 giorni
- if(intervalloTemporaleHomePageConsoleMonitoraggio == null) {
- intervalloTemporaleHomePageConsoleMonitoraggio = UtentiCostanti.VALUE_PARAMETRO_UTENTI_INTERVALLO_TEMPORALE_HOME_PAGE_MONITORAGGIO_ULTIMI_7_GIORNI;
- }
-
- 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 isSoggettiAll = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_ABILITAZIONI_SOGGETTI_ALL);
- String isServiziAll = utentiHelper.getParameter(UtentiCostanti.PARAMETRO_UTENTI_ABILITAZIONI_SERVIZI_ALL);
-
- 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);
- }
-
- 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),
- ServletUtils.getParameterAggiungi());
-
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
-
- dati.add(ServletUtils.getDataElementForEditModeFinished());
-
- if(nomesu==null){
- nomesu = "";
- }
- if(pwsu==null){
- pwsu = "";
- }
-
- utentiHelper.addUtentiToDati(dati, TipoOperazione.ADD, singlePdD,
- nomesu,pwsu,confpwsu,interfaceType,
- isServizi,isDiagnostica,isReportistica,isSistema,isMessaggi,isUtenti,isAuditing,isAccordiCooperazione,
- null,modalitaScelte, isSoggettiAll, isServiziAll, null, scadenza, null, false,
- tipoModalitaConsoleGestione, idSoggettoConsoleGestione, tipoModalitaConsoleMonitoraggio, idSoggettoConsoleMonitoraggio,
- homePageMonitoraggio, intervalloTemporaleHomePageConsoleMonitoraggio);
-
- pd.setDati(dati);
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
-
- return ServletUtils.getStrutsForwardEditModeInProgress(mapping, UtentiCostanti.OBJECT_NAME_UTENTI,ForwardParams.ADD());
- }
-
- // Controlli sui campi immessi
- boolean isOk = utentiHelper.utentiCheckData(TipoOperazione.ADD,singlePdD,null,false);
- if (!isOk) {
-
- // setto la barra del titolo
-
- ServletUtils.setPageDataTitle(pd,
- new Parameter(UtentiCostanti.LABEL_UTENTI ,UtentiCostanti.SERVLET_NAME_UTENTI_LIST),
- ServletUtils.getParameterAggiungi());
-
- // preparo i campi
- List<DataElement> dati = new ArrayList<>();
-
- dati.add(ServletUtils.getDataElementForEditModeFinished());
-
- utentiHelper.addUtentiToDati(dati, TipoOperazione.ADD, singlePdD,
- nomesu,pwsu,confpwsu,interfaceType,
- isServizi,isDiagnostica,isReportistica,isSistema,isMessaggi,isUtenti,isAuditing,isAccordiCooperazione,
- null,modalitaScelte, isSoggettiAll, isServiziAll, null, scadenza, null, false,
- tipoModalitaConsoleGestione, idSoggettoConsoleGestione, tipoModalitaConsoleMonitoraggio, idSoggettoConsoleMonitoraggio,
- homePageMonitoraggio, intervalloTemporaleHomePageConsoleMonitoraggio);
-
- pd.setDati(dati);
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
-
- return ServletUtils.getStrutsForwardEditModeCheckError(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.ADD());
- }
-
- boolean secret = false;
- String secretPassword = pwsu;
- String secretUser = nomesu;
- boolean secretAppId = false;
-
- // Cripto la password
- if(utentiCore.isUtenzePasswordEncryptEnabled()) {
- secret = true;
- pwsu = utentiCore.getUtenzePasswordManager().crypt(pwsu);
- }
-
- // Inserisco l'utente nel db
- User newU = new User();
- newU.setLogin(nomesu);
- newU.setPassword(pwsu);
- newU.setInterfaceType(interfaceType);
- newU.setProtocolloSelezionatoPddConsole(!tipoModalitaConsoleGestione.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? tipoModalitaConsoleGestione : null);
- newU.setSoggettoSelezionatoPddConsole(!idSoggettoConsoleGestione.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? idSoggettoConsoleGestione : null);
- newU.setProtocolloSelezionatoPddMonitor(!tipoModalitaConsoleMonitoraggio.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? tipoModalitaConsoleMonitoraggio : null);
- newU.setSoggettoSelezionatoPddMonitor(!idSoggettoConsoleMonitoraggio.equals(UtentiCostanti.VALORE_PARAMETRO_MODALITA_ALL) ? idSoggettoConsoleMonitoraggio : null);
-
- String puString = "";
- if (ServletUtils.isCheckBoxEnabled(isServizi))
- puString = Permessi.SERVIZI.toString();
- if (ServletUtils.isCheckBoxEnabled(isDiagnostica)) {
- if (puString.equals(""))
- puString = Permessi.DIAGNOSTICA.toString();
- else
- puString = puString+","+Permessi.DIAGNOSTICA.toString();
- }
- if (ServletUtils.isCheckBoxEnabled(isReportistica)) {
- if (puString.equals(""))
- puString = Permessi.REPORTISTICA.toString();
- else
- puString = puString+","+Permessi.REPORTISTICA.toString();
- }
- if (ServletUtils.isCheckBoxEnabled(isSistema)) {
- if (puString.equals(""))
- puString = Permessi.SISTEMA.toString();
- else
- puString = puString+","+Permessi.SISTEMA.toString();
- }
- if (ServletUtils.isCheckBoxEnabled(isMessaggi)) {
- if (puString.equals(""))
- puString = Permessi.CODE_MESSAGGI.toString();
- else
- puString = puString+","+Permessi.CODE_MESSAGGI.toString();
- }
- if (ServletUtils.isCheckBoxEnabled(isUtenti)) {
- if (puString.equals(""))
- puString = Permessi.UTENTI.toString();
- else
- puString = puString+","+Permessi.UTENTI.toString();
- }
- if (ServletUtils.isCheckBoxEnabled(isAuditing)) {
- if (puString.equals(""))
- puString = Permessi.AUDITING.toString();
- else
- puString = puString+","+Permessi.AUDITING.toString();
- }
- if (ServletUtils.isCheckBoxEnabled(isAccordiCooperazione)) {
- if (puString.equals(""))
- puString = Permessi.ACCORDI_COOPERAZIONE.toString();
- else
- puString = puString+","+Permessi.ACCORDI_COOPERAZIONE.toString();
- }
- newU.setPermessi(PermessiUtente.toPermessiUtente(puString));
-
- newU.clearProtocolliSupportati();
- // modalita gateway
- for (int i = 0; i < protocolliRegistratiConsole.size() ; i++) {
- String protocolloName = protocolliRegistratiConsole.get(i);
- if(ServletUtils.isCheckBoxEnabled(modalitaScelte[i])) {
- newU.addProtocolloSupportato(protocolloName);
- }
- }
-
- if (ServletUtils.isCheckBoxEnabled(isDiagnostica) || ServletUtils.isCheckBoxEnabled(isReportistica)) {
- if(utentiCore.isMultitenant()) {
- newU.setPermitAllSoggetti(ServletUtils.isCheckBoxEnabled(isSoggettiAll));
- }
- else {
- newU.setPermitAllSoggetti(true);
- }
- newU.setPermitAllServizi(ServletUtils.isCheckBoxEnabled(isServiziAll));
-
- // salvataggio homepage e grafico della console di monitoraggio
- Stato statoHomePage = new Stato();
- statoHomePage.setOggetto(UtentiCostanti.OGGETTO_STATO_UTENTE_HOME_PAGE);
- statoHomePage.setStato(utentiHelper.incapsulaValoreStato(homePageMonitoraggio));
- newU.getStati().add(statoHomePage);
-
- Stato statoIntevalloTemporaleHomePage = new Stato();
- statoIntevalloTemporaleHomePage.setOggetto(UtentiCostanti.OGGETTO_STATO_UTENTE_INTERVALLO_TEMPORALE_HOME_PAGE);
- statoIntevalloTemporaleHomePage.setStato(utentiHelper.incapsulaValoreStato(intervalloTemporaleHomePageConsoleMonitoraggio));
- newU.getStati().add(statoIntevalloTemporaleHomePage );
- }
-
- // aggiornamento password
- PasswordVerifier passwordVerifier = utentiCore.getUtenzePasswordVerifier();
- if(utentiCore.isCheckPasswordExpire(passwordVerifier)) {
- newU.setCheckLastUpdatePassword(ServletUtils.isCheckBoxEnabled(scadenza));
- } else {
- newU.setCheckLastUpdatePassword(false);
- }
- // salvo comunque la data di immissione password
- newU.setLastUpdatePassword(new Date());
-
-
- utentiCore.performCreateOperation(userLogin, utentiHelper.smista(), newU);
-
- // Messaggio 'Please Copy'
- if(loginApplication && secret) {
- utentiHelper.setSecretPleaseCopy(secretPassword, secretUser, secretAppId, ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC, OggettoDialogEnum.UTENTE, nomesu);
- }
-
- // Preparo la lista
- ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
-
- int idLista = Liste.SU;
-
- ricerca = utentiHelper.checkSearchParameters(idLista, ricerca);
-
- List<User> lista = utentiCore.userList(ricerca);
-
- utentiHelper.prepareUtentiList(ricerca, lista, singlePdD);
-
- if(!newU.isConfigurazioneValidaSoggettiAbilitati()) {
- pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SOGGETTI_DEFINIZIONE_CREATE_NOTE, MessageType.INFO);
- }
- else if(!newU.isConfigurazioneValidaServiziAbilitati()) {
- pd.setMessage(UtentiCostanti.LABEL_ABILITAZIONI_PUNTUALI_SERVIZI_DEFINIZIONE_CREATE_NOTE, MessageType.INFO);
- }
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
-
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.ADD());
-
- } catch (Exception e) {
- return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
- UtentiCostanti.OBJECT_NAME_UTENTI, ForwardParams.ADD());
- }
- }
- }