Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="idHistoryItem"></param>
        public static void DeleteLdapSyncHistoryItem(InfoUtente infoUtente, int idHistoryItem)
        {
            try
            {
                // Verifica che il servizio di integrazione con ldap è attivo o meno
                DocsPaLdapServices.LdapConfigurations.CheckForLdapIntegrationActivated();

                DocsPaDB.Query_DocsPAWS.Ldap ldapDbServices = new DocsPaDB.Query_DocsPAWS.Ldap();

                ldapDbServices.DeleteLdapSyncHistoryItem(idHistoryItem);

                // Rimozione file metadati
                string filePath = GetSyncResponseFilePath(idHistoryItem);
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);

                throw ex;
            }
        }
Example #2
0
        /// <summary>
        /// Memorizzazione configurazioni per la connessione ad un archivio LDAP
        /// </summary>
        /// <param name="idAmministrazione"></param>
        /// <param name="ldapInfo"></param>
        public static void SaveLdapConfig(string idAmministrazione, LdapConfig ldapInfo)
        {
            using (DocsPaDB.TransactionContext transactionalContext = new DocsPaDB.TransactionContext())
            {
                // Verifica se l'integrazione con ldap è attivata
                CheckForLdapIntegrationActivated();

                // Validazione dati di configurazione
                ValidateConfigurations(ldapInfo);

                DocsPaDB.Query_DocsPAWS.Ldap ldapDbServices = new DocsPaDB.Query_DocsPAWS.Ldap();

                ldapDbServices.SaveLdapConfig(idAmministrazione, ldapInfo);

                transactionalContext.Complete();
            }
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="idAmministrazione"></param>
        /// <returns></returns>
        public static LdapSyncronizationHistoryItem[] GetLdapSyncHistory(InfoUtente infoUtente, string idAmministrazione)
        {
            try
            {
                // Verifica che il servizio di integrazione con ldap è attivo o meno
                DocsPaLdapServices.LdapConfigurations.CheckForLdapIntegrationActivated();

                DocsPaDB.Query_DocsPAWS.Ldap ldapDbServices = new DocsPaDB.Query_DocsPAWS.Ldap();

                return(ldapDbServices.GetLdapSyncHistory(idAmministrazione));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);

                throw ex;
            }
        }
Example #4
0
        /// <summary>
        /// Reperimento configurazioni LDAP impostate per un utente
        /// </summary>
        /// <param name="userName"></param>
        /// <returns></returns>
        public static LdapUserConfig GetLdapUserConfigByName(string userName)
        {
            LdapUserConfig config = null;

            // Configurazione per determinare se è attiva la sincronizzazione delle utenze docspa con le utenze ldap
            bool ldapIntegrationActive = LdapConfigurations.LdapIntegrationActivated;

            if (ldapIntegrationActive)
            {
                DocsPaDB.Query_DocsPAWS.Ldap ldapDbServices = new DocsPaDB.Query_DocsPAWS.Ldap();

                config = ldapDbServices.GetLdapUserConfigByName(userName);
            }

            if (config == null)
            {
                config = new LdapUserConfig();
            }

            return(config);
        }
Example #5
0
        /// <summary>
        /// Reperimento configurazioni per la connessione ad un archivio LDAP
        /// </summary>
        /// <param name="idAmministrazione"></param>
        /// <returns></returns>
        public static LdapConfig GetLdapConfig(string idAmministrazione)
        {
            LdapConfig config = null;

            // Configurazione per determinare se è attiva la sincronizzazione delle utenze docspa con le utenze ldap
            bool ldapIntegrationActive = GetConfigValue <bool>(LDAP_INTEGRATION_ACTIVE_KEY, false);

            if (ldapIntegrationActive)
            {
                DocsPaDB.Query_DocsPAWS.Ldap ldapDbServices = new DocsPaDB.Query_DocsPAWS.Ldap();

                config = ldapDbServices.GetLdapConfig(idAmministrazione);
            }

            if (config == null)
            {
                config = new LdapConfig();
            }

            config.LdapIntegrationActive = ldapIntegrationActive;

            return(config);
        }
Example #6
0
        /// <summary>
        /// Task di sincronizzazione degli utenti in docspa con gli utenti in ldap per l'amministrazione corrente
        /// </summary>
        /// <param name="request"></param>
        public static LdapSyncronizationResponse SyncronizeLdapUsers(LdapSyncronizationRequest request)
        {
            LdapSyncronizationResponse response = new LdapSyncronizationResponse();

            response.User = request.InfoUtente.userId;

            DocsPaDB.Query_DocsPAWS.Ldap ldapDbServices = new DocsPaDB.Query_DocsPAWS.Ldap();

            try
            {
                // Reperimento amministrazione corrente
                InfoAmministrazione admin = GetAdmin(request.IdAmministrazione);

                if (admin == null)
                {
                    throw new ApplicationException(string.Format("Amministrazione con id '{0}' non trovata", request.IdAmministrazione));
                }
                else
                {
                    response.AdminCode = admin.Codice;
                }

                //if (string.IsNullOrEmpty(admin.Dominio))
                //    throw new ApplicationException("Dominio predefinito non specificato per l'amministrazione");

                // Verifica che il servizio di integrazione con ldap è attivo o meno
                DocsPaLdapServices.LdapConfigurations.CheckForLdapIntegrationActivated();

                LdapConfig ldapInfo = ldapDbServices.GetLdapConfig(request.IdAmministrazione);

                if (ldapInfo != null)
                {
                    // Reperimento password per l'utente di dominio
                    ldapInfo.DomainUserPassword = ldapDbServices.GetLdapConfigDomainUserPassword(request.IdAmministrazione);

                    // Reperimento utenti in amministrazione
                    Dictionary <string, OrgUtente> docspaUsers = GetUsers();

                    // Reperimento utenti in ldap
                    Dictionary <string, LdapUser> ldapUsers = GetLdapUsers(ldapInfo);

                    List <LdapSyncronizationResponseItem> responseItems = new List <LdapSyncronizationResponseItem>();

                    // Rimozione utenti in docspa non più presenti in ldap
                    RemoveUsers(request.InfoUtente, request.IdAmministrazione, docspaUsers, ldapUsers, responseItems);

                    // Inserimento o aggiornamento degli utenti in docspa da ldap
                    AddOrUpdateUsers(request.InfoUtente, request.IdAmministrazione, admin.Dominio, docspaUsers, ldapUsers, responseItems);

                    // Calcolo del numero di elementi sincronizzati
                    foreach (LdapSyncronizationResponseItem item in responseItems)
                    {
                        if (item.Result != LdapSyncronizationResultEnum.Error)
                        {
                            response.ItemsSyncronized++;
                        }
                    }

                    response.Items = responseItems.ToArray();
                }
            }
            catch (Exception ex)
            {
                response.ErrorDetails = ex.Message;

                logger.Error(response.ErrorDetails);
            }
            finally
            {
                LdapSyncronizationHistoryItem historyItem = ldapDbServices.SaveLdapSyncResult(request.IdAmministrazione, response);

                // Persistenza istanza LdapSyncronizationHistoryItem
                PersistResponseHistory(response, historyItem.Id);
            }

            return(response);
        }