/// <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; } }
/// <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(); } }
/// <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; } }
/// <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); }
/// <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); }
/// <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); }