Esempio n. 1
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 = DocsPaVO.utente.UserLogin.LoginResult.UNKNOWN_USER;

            AdminPasswordConfig pwdConfig = new AdminPasswordConfig();

            DocsPaDB.Query_DocsPAWS.Amministrazione amministrazioneDb = new DocsPaDB.Query_DocsPAWS.Amministrazione();

            // Verifica se è supportata la gestione delle configurazioni password (con supporto per encryption)
            if (pwdConfig.IsSupportedPasswordConfig())
            {
                // Verifica della validità delle credenziali utente
                if (DocsPaPwdServices.UserPasswordServices.IsValidForLogon(userLogin.UserName, userLogin.Password))
                {
                    // Reperimento metadati dell'utente amministratore (con gestione password criptate)
                    utente = amministrazioneDb.GetDatiAmministratoreEncrypted(userLogin.UserName, userLogin.Password);
                }
            }
            else
            {
                // Reperimento metadati dell'utente amministratore (senza gestione password criptate)
                utente = amministrazioneDb.GetDatiAmministratore(userLogin.UserName);
            }

            if (utente == null)
            {
                // Utente non riconosciuto
                loginResult = DocsPaVO.utente.UserLogin.LoginResult.UNKNOWN_USER;

                logger.Debug(string.Format("Utente {0} non riconosciuto", userLogin.UserName));
            }
            else
            {
                bool userAlreadyConnected;

                // Creazione token di autenticazione
                utente.dst = this.CreateUserToken();

                // Connessione come utente amministratore
                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
                {
                    retValue    = true;
                    loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK;
                }
            }

            return(retValue);
        }