/// <summary> /// /// </summary> /// <param name="objLogin"></param> /// <param name="loginResult"></param> /// <param name="forcedLogin"> /// Imposta se la connessione deve essere forzata, ossia /// una eventuale connessione esistente viene annullata). /// </param> /// <returns></returns> public static DocsPaVO.utente.Utente loginMethod(DocsPaVO.utente.UserLogin objLogin, out DocsPaVO.utente.UserLogin.LoginResult loginResult, bool forcedLogin, string webSessionId, out string ipaddress) { DocsPaVO.utente.Utente utente = null; loginResult = DocsPaVO.utente.UserLogin.LoginResult.UNKNOWN_USER; ipaddress = string.Empty; bool multiAmm = false; try { if (DocsPaUtils.Security.SSOAuthTokenHelper.IsAuthToken(objLogin.Password)) { string ssoTok = DocsPaUtils.Security.SSOAuthTokenHelper.Restore(objLogin.UserName, objLogin.Password); objLogin.SSOLogin = true; } } catch { } try { // Ricerca dell'utente in amministrazione if (string.IsNullOrEmpty(objLogin.IdAmministrazione)) { try { ArrayList listaAmmin = UserManager.getListaIdAmmUtente(objLogin); if (listaAmmin != null && listaAmmin.Count > 0) { if (listaAmmin.Count == 1) { objLogin.IdAmministrazione = listaAmmin[0].ToString(); } else { //loginResult = DocsPaVO.utente.UserLogin.LoginResult.NO_AMMIN; multiAmm = true; objLogin.IdAmministrazione = listaAmmin[0].ToString(); } } if (listaAmmin == null) { logger.Debug("Attenzione, la query S_People in GetIdAmmUtente non ha dato alcun risultato."); } } catch (Exception ex) { logger.Debug("Errore di connessione al DB durante la procedura di login"); loginResult = DocsPaVO.utente.UserLogin.LoginResult.DB_ERROR; } } // Se l'amministrazione è stata impostata if (!string.IsNullOrEmpty(objLogin.IdAmministrazione)) { // Get User DocsPaDocumentale.Documentale.UserManager userManager = new DocsPaDocumentale.Documentale.UserManager(); if (userManager.LoginUser(objLogin, out utente, out loginResult)) { // Impostazione id sessione utente utente.sessionID = webSessionId; if (!forcedLogin) // Gestione delle connessioni esistenti da amministrazione { //login concesso all'utente //si verifica la tabella DPA_LOGIN per unicità della connessione //la funzione torna True se l'utente è già collegato DocsPaDB.Query_DocsPAWS.Utenti gestioneUtenti = new DocsPaDB.Query_DocsPAWS.Utenti(); if (!gestioneUtenti.CheckUserLogin(utente.userId, utente.idAmministrazione)) { utente.ruoli = UserManager.getRuoliUtente(utente.idPeople); utente.dominio = getDominio(utente.idPeople); if (utente.ruoli.Count == 0 && DocsPaUtils.Moduli.ModuliAuthManager.RolesRequired(objLogin.Modulo)) { loginResult = DocsPaVO.utente.UserLogin.LoginResult.NO_RUOLI; utente = null; } else { gestioneUtenti.LockUserLogin(utente.userId, utente.idAmministrazione, webSessionId, objLogin.IPAddress, utente.dst); if (!multiAmm) { loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK; } else { loginResult = DocsPaVO.utente.UserLogin.LoginResult.NO_AMMIN; } } } else { if (!multiAmm) { loginResult = DocsPaVO.utente.UserLogin.LoginResult.USER_ALREADY_LOGGED_IN; } else { loginResult = DocsPaVO.utente.UserLogin.LoginResult.NO_AMMIN; } //loginResult = DocsPaVO.utente.UserLogin.LoginResult.USER_ALREADY_LOGGED_IN; ipaddress = gestioneUtenti.GetUserIPAddress(utente.userId, utente.idAmministrazione); utente = null; } } else { // Gestione utente delle connessioni esistenti DocsPaDB.Query_DocsPAWS.Utenti gestioneUtenti = new DocsPaDB.Query_DocsPAWS.Utenti(); // Cancella eventuali connessioni esistenti gestioneUtenti.UnlockUserLogin(utente.userId, utente.idAmministrazione); // Assegna connessione gestioneUtenti.LockUserLogin(utente.userId, utente.idAmministrazione, webSessionId, objLogin.IPAddress, utente.dst); utente.ruoli = UserManager.getRuoliUtente(utente.idPeople); utente.dominio = getDominio(utente.idPeople); if (utente.ruoli.Count == 0 && DocsPaUtils.Moduli.ModuliAuthManager.RolesRequired(objLogin.Modulo)) { loginResult = DocsPaVO.utente.UserLogin.LoginResult.NO_RUOLI; utente = null; } // Qualifiche Utente string value = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "GESTIONE_QUALIFICHE"); if (!string.IsNullOrEmpty(value) && value.Equals("1")) { utente.qualifiche = new ArrayList(utenti.QualificheManager.GetPeopleGroupsQualificheByIdPeople(utente.idPeople)); } } } } } catch (Exception e) { logger.Debug(e.Message); loginResult = DocsPaVO.utente.UserLogin.LoginResult.APPLICATION_ERROR; logger.Debug("Errore nella gestione degli utenti (loginMethod)"); utente = null; } return(utente); }