public static DocsPaVO.utente.Utente esercitaDelega(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.UserLogin objLogin, string webSessionId, string id_delega, string idRuoloDelegante, out DocsPaVO.utente.UserLogin.LoginResult loginResult) { DocsPaVO.utente.Utente utente = null; loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK; try { //INC000001112977 PAT gestione deleghe //Dismetto le deleghe rimaste in esercizio DocsPaDB.Query_DocsPAWS.Deleghe deleghe = new DocsPaDB.Query_DocsPAWS.Deleghe(); deleghe.DismettiDelegheInEsercizio(infoUtente); // Get User // ricostruzione informazioni utente delegante logger.DebugFormat("username {0} idAmm {1}", objLogin.UserName, objLogin.IdAmministrazione); utente = BusinessLogic.Utenti.UserManager.getUtente(objLogin.UserName, objLogin.IdAmministrazione); if (utente == null) { logger.Error("utente è null"); } // impostazione token di autenticazione DocsPaDocumentale.Documentale.UserManager userManager = new DocsPaDocumentale.Documentale.UserManager(); utente.dst = userManager.GetSuperUserAuthenticationToken(); // Impostazione id sessione utente utente.sessionID = webSessionId; //Verifico che l'utente delegante non sia connesso //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)) { if (idRuoloDelegante == "0") { //L'utente delegato eredita tutti i ruoli del delegante utente.ruoli = BusinessLogic.Utenti.UserManager.getRuoliUtente(utente.idPeople); } else { ArrayList ruoli = BusinessLogic.Utenti.UserManager.getRuoliUtente(utente.idPeople); ArrayList listRuolo = new ArrayList(); foreach (DocsPaVO.utente.Ruolo ruolo in ruoli) { if (idRuoloDelegante.Equals(ruolo.systemId)) { listRuolo.Add(ruolo); } } utente.ruoli = listRuolo; } utente.dominio = getDominio(utente.idPeople); if (utente.ruoli.Count == 0) { loginResult = DocsPaVO.utente.UserLogin.LoginResult.NO_RUOLI; utente = null; } else { gestioneUtenti.LockUserLoginDelegato(utente.userId, utente.idAmministrazione, webSessionId, objLogin.IPAddress, utente.dst, infoUtente.userId, id_delega); loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK; } } else { //Utente delegante loggato: viene rimosso dalla dpa_login (cosidetta porcata) DocsPaDB.Query_DocsPAWS.Utenti dbUserManager = new DocsPaDB.Query_DocsPAWS.Utenti(); if (gestioneUtenti.UnlockUserLogin(utente.userId, utente.idAmministrazione, utente.sessionID)) { if (idRuoloDelegante == "0") { //L'utente delegato eredita tutti i ruoli del delegante utente.ruoli = BusinessLogic.Utenti.UserManager.getRuoliUtente(utente.idPeople); } else { ArrayList ruoli = BusinessLogic.Utenti.UserManager.getRuoliUtente(utente.idPeople); ArrayList listRuolo = new ArrayList(); foreach (DocsPaVO.utente.Ruolo ruolo in ruoli) { if (idRuoloDelegante.Equals(ruolo.systemId)) { listRuolo.Add(ruolo); } } utente.ruoli = listRuolo; } utente.dominio = getDominio(utente.idPeople); if (utente.ruoli.Count == 0) { loginResult = DocsPaVO.utente.UserLogin.LoginResult.NO_RUOLI; utente = null; } else { gestioneUtenti.LockUserLoginDelegato(utente.userId, utente.idAmministrazione, webSessionId, objLogin.IPAddress, utente.dst, infoUtente.userId, id_delega); loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK; } } else { loginResult = DocsPaVO.utente.UserLogin.LoginResult.USER_ALREADY_LOGGED_IN; utente = null; } } } catch (Exception e) { logger.ErrorFormat("msg {0} stk {1} ", e.Message, e.StackTrace); loginResult = DocsPaVO.utente.UserLogin.LoginResult.APPLICATION_ERROR; logger.Debug("Errore nella gestione degli utenti (loginMethod)"); utente = null; } return(utente); }