コード例 #1
0
        /// <summary>
        /// Modifica password utente
        /// </summary>
        /// <param name="oldPassword"/></param>
        /// <param name="user"></param>
        ///// <returns></returns>
        public ValidationResultInfo ChangeUserPwd(DocsPaVO.utente.UserLogin user, string oldPassword)
        {
            ValidationResultInfo retValue = new ValidationResultInfo();

            retValue.Value = false;
            retValue.BrokenRules.Add(new BrokenRule("CHANGE_PWD_NOT_SUPPORTED", "Cambio password non supportato dal documentale CDC", BrokenRule.BrokenRuleLevelEnum.Error));
            return(retValue);
        }
コード例 #2
0
        /// <summary>
        /// Impostazione di una nuova password per l'utente
        /// </summary>
        /// <param name="idAmministrazione"></param>
        /// <param name="userId"></param>
        /// <param name="password"></param>
        /// <param name="isAdminPassword"></param>
        /// <returns></returns>
        public static ValidationResultInfo SetPassword(DocsPaVO.utente.UserLogin user, bool isAdminPassword)
        {
            int idAmm = 0;

            if (!string.IsNullOrEmpty(user.IdAmministrazione))
            {
                idAmm = Convert.ToInt32(user.IdAmministrazione);
            }
            return(SetPassword(idAmm, user.UserName, user.Password, isAdminPassword, false, user.Modulo));
        }
コード例 #3
0
        /// <summary>
        /// Login al sistema documentale
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginUser(DocsPaVO.utente.UserLogin userLogin, out DocsPaVO.utente.Utente utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            bool retValue = false;

            utente      = null;
            loginResult = UserLogin.LoginResult.UNKNOWN_USER;
            try
            {
                utente = new Utente();

                CorteContentServices.UserCredentialsRequestType userCred = new CorteContentServices.UserCredentialsRequestType();
                CorteContentServices.ResultType result = new CorteContentServices.ResultType();
                userCred.userCredentials          = new CorteContentServices.UserCredentialsType();
                userCred.userCredentials.userId   = userLogin.UserName;
                userCred.userCredentials.password = userLogin.Password;

                result = this.WsUserInstance.Login(userCred);

                if (OCSUtils.isValidServiceResult(result))
                {
                    //definizione del dst
                    // il dst tiene in memoria le informazioni necessarie per l'autenticazione dell'utente
                    // ci sono operazioni in cui non viene utilizzato l'utente applicativo ma è necessario
                    // utilizzare le credenziali effettive dell'utente che si connette al sistema.
                    // Per esempio nelle ricerche
                    utente     = new Utente();
                    utente.dst = this.GetAuthenticationToken(userLogin.UserName, userLogin.Password);

                    retValue    = true;
                    loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK;
                    logger.Debug(string.Format("OCS.LoginUser: utente {0} connesso", userLogin.UserName));
                }
                else
                {
                    retValue    = false;
                    utente      = null;
                    loginResult = UserLogin.LoginResult.UNKNOWN_USER;

                    logger.Debug(string.Format("Errore in OCS.Login:\n{0}", result.message));
                }
            }
            catch (Exception ex)
            {
                retValue    = false;
                utente      = null;
                loginResult = UserLogin.LoginResult.UNKNOWN_USER;

                logger.Error(string.Format("Errore in OCS.Login:\n{0}", ex.ToString()));
            }

            return(retValue);
        }
コード例 #4
0
        /// <summary>
        /// Modifica password utente
        /// </summary>
        /// <param name="newPassword"/></param>
        /// <param name="utente"></param>
        ///// <returns></returns>
        public DocsPaVO.Validations.ValidationResultInfo ChangeUserPwd(DocsPaVO.utente.UserLogin user, string oldPassword)
        {
            DocsPaVO.Validations.ValidationResultInfo result = null;

            using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
            {
                result = this.UserManagerETDOCS.ChangeUserPwd(user, oldPassword);

                if (result.Value)
                {
                    transactionContext.Complete();
                }
            }
            return(result);
        }
コード例 #5
0
        public DocsPaVO.utente.Utente Login(DocsPaVO.utente.UserLogin userLogin)
        {
            DocsPaVO.utente.Utente utente = null;
            string idWebSession           = string.Empty;
            string ipAddress = string.Empty;

            DocsPaVO.utente.UserLogin.LoginResult loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK;
            try
            {
                utente = BusinessLogic.Utenti.Login.loginMethod(userLogin, out loginResult, true, idWebSession, out ipAddress);
            }
            catch (Exception e)
            {
                logger.Debug("Hermes -  metodo: Login.", e);
            }

            return(utente);
        }
コード例 #6
0
        /// <summary>
        /// Connessione dell'utente al sistema documentale
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginUser(DocsPaVO.utente.UserLogin userLogin, out DocsPaVO.utente.Utente utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            try
            {
                // Connessione al sistema ETDOCS
                bool connected = this.UserManagerETDOCS.LoginUser(userLogin, out utente, out loginResult);



                return(connected);
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore nella login dell'utente al sistema documentale: {0}", ex.Message);
                logger.Debug(errorMessage);
                throw new ApplicationException(errorMessage, ex);
            }
        }
コード例 #7
0
        /// <summary>
        /// Modifica password utente
        /// </summary>
        /// <param name="newPassword"/></param>
        /// <param name="utente"></param>
        ///// <returns></returns>
        public DocsPaVO.Validations.ValidationResultInfo ChangeUserPwd(DocsPaVO.utente.UserLogin user, string oldPassword)
        {
            return(this.UserManagerOCS.ChangeUserPwd(user, oldPassword));

            //DocsPaVO.Validations.ValidationResultInfo result = null;

            //using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
            //{
            //    result = this.UserManagerETDOCS.ChangeUserPwd(user, oldPassword);

            //    if (result.Value)
            //        result = this.UserManagerOCS.ChangeUserPwd(user, oldPassword);

            //    if (result.Value)
            //        transactionContext.Complete();
            //}
            //return result;
        }
コード例 #8
0
        /// <summary>
        /// Effettua il login di un utente amministratore
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginAdminUser(DocsPaVO.utente.UserLogin userLogin, bool forceLogin, out DocsPaVO.amministrazione.InfoUtenteAmministratore utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            utente      = null;
            loginResult = UserLogin.LoginResult.UNKNOWN_USER;

            try
            {
                // Connessione al sistema ETDOCS
                bool connected = this.UserManagerETDOCS.LoginAdminUser(userLogin, forceLogin, out utente, out loginResult);

                if (connected)
                {
                    DocsPaVO.amministrazione.InfoUtenteAmministratore utenteDTCM;

                    // Connessione al sistema DOCUMENTUM
                    connected = this.UserManagerDocumentum.LoginAdminUser(userLogin, forceLogin, out utenteDTCM, out loginResult);

                    // Assegnazione dell'id di sessione DOCUMENTUM
                    if (connected)
                    {
                        // Aggiornamento valore token di autenticazione in ETDOCS
                        connected = this.UpdateUserToken(utenteDTCM.dst, utente.dst);

                        if (connected)
                        {
                            utente.dst = utenteDTCM.dst;
                        }
                        else
                        {
                            utente.dst = null;
                        }
                    }
                }

                return(connected);
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore nella login dell'utente al sistema documentale: {0}", ex.Message);
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage, ex);
            }
        }
コード例 #9
0
        /// <summary>
        /// Modifica password utente
        /// </summary>
        /// <param name="oldPassword"/></param>
        /// <param name="user"></param>
        ///// <returns></returns>
        public ValidationResultInfo ChangeUserPwd(DocsPaVO.utente.UserLogin user, string oldPassword)
        {
            ValidationResultInfo retValue = new ValidationResultInfo();

            try
            {
                // La password deve essere modificata con le credenziali di superuser
                IObjectService objectService = DctmServiceFactory.GetServiceInstance <IObjectService>(UserManager.ImpersonateSuperUser());

                ObjectIdentity identity = Dfs4DocsPa.getUserIdentityByName(TypeUtente.NormalizeUserName(user.UserName));

                DataObject userDataObject = new DataObject(identity, ObjectTypes.UTENTE);
                userDataObject.Properties.Set <string>("user_password", user.Password);

                DataPackage dataPackage = new DataPackage(userDataObject);
                dataPackage = objectService.Update(dataPackage, null);

                retValue.Value = (dataPackage.DataObjects.Count > 0);

                if (!retValue.Value)
                {
                    throw new ApplicationException("Password non aggiornata");
                }
                else
                {
                    RepositoryIdentity newIdentity = DctmRepositoryIdentityHelper.GetIdentity(DctmConfigurations.GetRepositoryName(), user.UserName, user.Password, string.Empty);
                    user.DST = DctmRepositoryIdentityHelper.CreateAuthenticationToken(newIdentity);

                    logger.Debug(string.Format("Documentum.ChangePassword: password modificata per l'utente {0}", user.UserName));
                }
            }
            catch (Exception ex)
            {
                logger.Debug(string.Format("Errore in Documentum.ChangePassword:\n{0}", ex.ToString()));

                retValue.BrokenRules.Add(new BrokenRule("ChangePassword_ERROR", "Errore nella modifica della password per il documentale DOCUMENTUM", DocsPaVO.Validations.BrokenRule.BrokenRuleLevelEnum.Error));
            }

            retValue.Value = (retValue.BrokenRules.Count == 0);

            return(retValue);
        }
コード例 #10
0
        /// <summary>
        /// Task di sincronizzazione degli utenti in docspa con gli utenti in ldap per l'amministrazione richiesta
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="password"></param>
        /// <param name="adminCode"></param>
        /// <returns></returns>
        public static LdapSyncronizationResponse SyncronizeLdapUsers(string userId, string password, string adminCode)
        {
            LdapSyncronizationResponse response = null;

            DocsPaVO.utente.UserLogin userLogin = new DocsPaVO.utente.UserLogin();
            userLogin.UserName = userId;
            userLogin.Password = password;

            DocsPaVO.amministrazione.InfoUtenteAmministratore infoUtente;
            DocsPaVO.amministrazione.EsitoOperazione          result = BusinessLogic.Amministrazione.AmministraManager.LoginAmministratoreProfilato(userLogin, true, out infoUtente);

            if (result.Codice == 0)
            {
                string idAdmin = string.Empty;
                using (DocsPaDB.Query_DocsPAWS.Amministrazione adminDbServices = new DocsPaDB.Query_DocsPAWS.Amministrazione())
                    idAdmin = adminDbServices.GetIDAmm(adminCode);

                if (string.IsNullOrEmpty(idAdmin))
                {
                    response              = new LdapSyncronizationResponse();
                    response.User         = userId;
                    response.ErrorDetails = string.Format("Nessuna amministrazione identificata con il codice '{0}'", adminCode);
                }
                else
                {
                    LdapSyncronizationRequest request = new LdapSyncronizationRequest
                    {
                        InfoUtente        = infoUtente,
                        IdAmministrazione = idAdmin
                    };

                    response = SyncronizeLdapUsers(request);
                }
            }
            else
            {
                response = new LdapSyncronizationResponse(userId, adminCode);
                response.ErrorDetails = result.Descrizione;
            }

            return(response);
        }
コード例 #11
0
        /// <summary>
        /// Effettua il login di un utente amministratore
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginAdminUser(DocsPaVO.utente.UserLogin userLogin, bool forceLogin, out DocsPaVO.amministrazione.InfoUtenteAmministratore utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            bool retValue = false;

            utente      = null;
            loginResult = UserLogin.LoginResult.UNKNOWN_USER;

            DocsPaVO.utente.Utente utenteDocsPa;
            retValue = (this.LoginUser(userLogin, out utenteDocsPa, out loginResult));

            if (retValue)
            {
                loginResult = UserLogin.LoginResult.OK;

                utente     = new DocsPaVO.amministrazione.InfoUtenteAmministratore();
                utente.dst = utenteDocsPa.dst;
            }

            return(retValue);
        }
コード例 #12
0
        /// <summary>
        /// Effettua il login di un utente amministratore
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginAdminUser(DocsPaVO.utente.UserLogin userLogin, bool forceLogin, out DocsPaVO.amministrazione.InfoUtenteAmministratore utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            utente      = null;
            loginResult = UserLogin.LoginResult.UNKNOWN_USER;

            try
            {
                // Connessione al sistema ETDOCS
                bool connected = this.UserManagerETDOCS.LoginAdminUser(userLogin, forceLogin, out utente, out loginResult);



                return(connected);
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore nella login dell'utente al sistema documentale: {0}", ex.Message);
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage, ex);
            }
        }
コード例 #13
0
        /// <summary>
        /// Connessione dell'utente al sistema documentale
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginUser(DocsPaVO.utente.UserLogin userLogin, out DocsPaVO.utente.Utente utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            try
            {
                // Connessione al sistema ETDOCS
                bool connected = this.UserManagerETDOCS.LoginUser(userLogin, out utente, out loginResult);

                if (connected)
                {
                    DocsPaVO.utente.Utente utenteDTCM;

                    // Completamento dati oggetto UserLogin con i metadati dell'utente connesso
                    userLogin.SystemID          = utente.idPeople;
                    userLogin.IdAmministrazione = utente.idAmministrazione;

                    // Connessione al sistema DOCUMENTUM
                    connected = this.UserManagerDocumentum.LoginUser(userLogin, out utenteDTCM, out loginResult);

                    // Assegnazione dell'id di sessione DOCUMENTUM
                    if (connected)
                    {
                        utente.dst = utenteDTCM.dst;
                    }
                    else
                    {
                        utente.dst = null;
                    }
                }

                return(connected);
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore nella login dell'utente al sistema documentale: {0}", ex.Message);
                logger.Debug(errorMessage);
                throw new ApplicationException(errorMessage, ex);
            }
        }
コード例 #14
0
        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);
        }
コード例 #15
0
        /// <summary>
        /// Login al sistema documentale
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginUser(DocsPaVO.utente.UserLogin userLogin, out DocsPaVO.utente.Utente utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            bool retValue = false;

            utente      = null;
            loginResult = UserLogin.LoginResult.UNKNOWN_USER;

            try
            {
                string userName     = TypeUtente.NormalizeUserName(userLogin.UserName);
                string userPassword = string.Empty;
                // Modifica 21-12-2012, recupero ticket documentum se login tramite token.
                //if (DocsPaServices.DocsPaQueryHelper.isUtenteDominioOrLdap(userLogin))
                if (userLogin.SSOLogin)
                {
                    // L'utente è agganciato in amministrazione ad un dominio,
                    // pertanto viene richiamato il servizio documentum per la generazione del ticket di autenticazione
                    userPassword = DctmTokenFactoryHelper.Generate(userName);
                }
                else
                {
                    userPassword = userLogin.Password;
                }

                RepositoryIdentity identity = DctmServices.DctmRepositoryIdentityHelper.GetIdentity(
                    DctmConfigurations.GetRepositoryName(),
                    userName,
                    userPassword,
                    userLogin.Dominio);

                string token = DctmServices.DctmRepositoryIdentityHelper.CreateAuthenticationToken(identity);

                // Verifica validità credenziali
                if (this.VerifyCredentials(userName, token, out loginResult))
                {
                    utente      = new Utente();
                    utente.dst  = token;
                    loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK;
                }

                //per LDAP oppure per SHIBBOLETH
                if (userLogin.SSOLogin)
                {
                    utente.dst = UserManager.ImpersonateSuperUser();
                }
                //FINE per LDAP oppure per SHIBBOLETH


                retValue = (loginResult == DocsPaVO.utente.UserLogin.LoginResult.OK);
            }
            catch (Exception ex)
            {
                retValue    = false;
                utente      = null;
                loginResult = UserLogin.LoginResult.UNKNOWN_USER;

                logger.Debug(string.Format("Errore in Documentum.Login:\n{0}", ex.ToString()));
            }

            return(retValue);
        }
コード例 #16
0
        /// <summary>
        /// Connessione dell'utente al sistema documentale
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginUser(DocsPaVO.utente.UserLogin userLogin, out DocsPaVO.utente.Utente utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            bool result = false;

            utente      = null;
            loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK;

            try
            {
                string name     = string.Empty;
                string password = string.Empty;

                if (!string.IsNullOrEmpty(userLogin.UserName))
                {
                    name = userLogin.UserName;
                }

                if (!string.IsNullOrEmpty(userLogin.Password))
                {
                    password = userLogin.Password;
                }

                DocsPaDB.Query_DocsPAWS.Utenti user = new DocsPaDB.Query_DocsPAWS.Utenti();

                result = user.IsUtenteDisabled(userLogin.UserName, userLogin.IdAmministrazione);

                if (result)
                {
                    loginResult = DocsPaVO.utente.UserLogin.LoginResult.DISABLED_USER;
                    utente      = null;
                    result      = false;
                }
                else
                {
                    // Connessione al sistema OCS
                    DocsPaVO.utente.Utente utenteOCS;
                    result = this.UserManagerOCS.LoginUser(userLogin, out utenteOCS, out loginResult);

                    // Assegnazione dell'id di sessione OCS
                    if (result)
                    {
                        DocsPaDB.Query_DocsPAWS.Utenti utenti = new DocsPaDB.Query_DocsPAWS.Utenti();
                        utente     = utenti.GetUtente(name, userLogin.IdAmministrazione);
                        utente.dst = utenteOCS.dst;
                    }
                    else
                    {
                        result      = false;
                        loginResult = DocsPaVO.utente.UserLogin.LoginResult.UNKNOWN_USER;
                    }
                }
            }
            catch (Exception exception)
            {
                logger.Debug("Errore nella login.", exception);
                result = false;
                utente = null;
            }

            return(result);

            #region OLD

            /* OLD
             * try
             * {
             *  // Connessione al sistema ETDOCS
             *  bool connected = this.UserManagerETDOCS.LoginUser(userLogin, out utente, out loginResult);
             *
             *  if (connected)
             *  {
             *      DocsPaVO.utente.Utente utenteOCS;
             *
             *      // Connessione al sistema OCS
             *      connected = this.UserManagerOCS.LoginUser(userLogin, out utenteOCS, out loginResult);
             *
             *      // Assegnazione dell'id di sessione OCS
             *      if (connected)
             *          utente.dst = utenteOCS.dst;
             *  }
             *
             *  return connected;
             * }
             * catch (Exception ex)
             * {
             *  string errorMessage = string.Format("Errore nella login dell'utente al sistema documentale: {0}", ex.Message);
             *  logger.Debug(errorMessage);
             *  throw new ApplicationException(errorMessage, ex);
             * }
             */
            #endregion
        }
コード例 #17
0
        /// <summary>
        /// Effettua il login di un utente amministratore
        /// </summary>
        /// <param name="utente"></param>
        /// <param name="loginResult"></param>
        /// <returns></returns>
        public bool LoginAdminUser(DocsPaVO.utente.UserLogin userLogin, bool forceLogin, out DocsPaVO.amministrazione.InfoUtenteAmministratore utente, out DocsPaVO.utente.UserLogin.LoginResult loginResult)
        {
            utente      = null;
            loginResult = UserLogin.LoginResult.UNKNOWN_USER;

            try
            {
                DocsPaVO.amministrazione.InfoUtenteAmministratore infoAdmin = null;

                using (DocsPaDB.Query_DocsPAWS.Amministrazione amministrazioneDb = new DocsPaDB.Query_DocsPAWS.Amministrazione())
                {
                    // Reperimento metadati dell'utente amministratore (senza gestione password criptate)
                    infoAdmin = amministrazioneDb.GetDatiAmministratore(userLogin.UserName);

                    if (infoAdmin != null)
                    {
                        // Connessione al sistema CDC se altro tipo di amministratore
                        if (this.UserManagerOCS.LoginAdminUser(userLogin, forceLogin, out utente, out loginResult))
                        {
                            // L'utente si è connesso con successo al sistema mediante i servizi forniti da CDC,
                            // pertanto vengono fatte le opportune operazioni in etdocs per validare la connessione
                            bool userAlreadyConnected;

                            if (!amministrazioneDb.LoginAmministratore(utente, userLogin.IPAddress, userLogin.SessionId, forceLogin, out userAlreadyConnected))
                            {
                                utente.dst = null;

                                if (userAlreadyConnected)
                                {
                                    // Utente già connesso
                                    loginResult = DocsPaVO.utente.UserLogin.LoginResult.USER_ALREADY_LOGGED_IN;
                                }
                                else
                                {
                                    loginResult = DocsPaVO.utente.UserLogin.LoginResult.UNKNOWN_USER;
                                }
                            }
                            else
                            {
                                utente.idPeople           = infoAdmin.idPeople;
                                utente.tipoAmministratore = infoAdmin.tipoAmministratore;
                                utente.nome              = infoAdmin.nome;
                                utente.cognome           = infoAdmin.cognome;
                                utente.idAmministrazione = infoAdmin.idAmministrazione;
                                utente.idCorrGlobali     = infoAdmin.idCorrGlobali;

                                loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK;
                            }
                        }
                    }
                    else
                    {
                        loginResult = UserLogin.LoginResult.UNKNOWN_USER;
                    }
                }

                return(loginResult == UserLogin.LoginResult.OK);
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore nella login dell'utente al sistema documentale: {0}", ex.Message);
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage, ex);
            }
        }
コード例 #18
0
        public static Services.Authentication.LogIn.LogInResponse LogIn(Services.Authentication.LogIn.LogInRequest request)
        {
            Services.Authentication.LogIn.LogInResponse response = new Services.Authentication.LogIn.LogInResponse();

            try
            {
                DocsPaVO.utente.Utente utente = null;
                string idWebSession           = string.Empty;
                string ipAddress = string.Empty;

                if (request != null && (string.IsNullOrEmpty(request.UserName) || string.IsNullOrEmpty(request.Password)))
                {
                    throw new PisException("MISSING_PARAMETER");
                }

                DocsPaVO.utente.UserLogin.LoginResult loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK;

                DocsPaVO.utente.UserLogin login = new DocsPaVO.utente.UserLogin
                {
                    UserName = request.UserName,
                    Password = request.Password,
                };

                utente = BusinessLogic.Utenti.Login.loginMethod(login, out loginResult, true, idWebSession, out ipAddress);

                if (utente == null)
                {
                    //Utente non trovato
                    throw new PisException("USER_NO_EXIST");
                }

                // Giovanni Olivari - 06/11/2012
                // Se l'utente non ha Ruoli viene generata un'eccezione prima di questo blocco di codice,
                // quindi arrivati qui posso essere sicuro di avere almeno un ruolo, prendo il primo della lista
                //
                DocsPaVO.utente.Ruolo ruolo = null;
                ruolo = (DocsPaVO.utente.Ruolo)utente.ruoli[0];

                if (loginResult == DocsPaVO.utente.UserLogin.LoginResult.OK)
                {
                    // Generazione del token di autenticazione
                    response.AuthenticationToken = CreateAuthToken(utente, ruolo);

                    BusinessLogic.Utenti.Login.logoff(utente.userId, utente.idAmministrazione, utente.dst);
                }
                else
                {
                    throw new PisException("MISSING_PARAMETER");
                }

                response.Success = true;
            }
            catch (PisException pisEx)
            {
                logger.ErrorFormat("PISException: {0}, {1}", pisEx.ErrorCode, pisEx.Description);
                response.Error = new Services.ResponseError
                {
                    Code        = pisEx.ErrorCode,
                    Description = pisEx.Description
                };

                response.Success = false;
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Eccezione Generica: APPLICATION_ERROR, {0}", ex.Message);
                response.Error = new Services.ResponseError
                {
                    Code        = "APPLICATION_ERROR",
                    Description = ex.Message
                };

                response.Success = false;
            }

            return(response);
        }