feat: Integrazione completa gestione credenziali per database e REST API con supporto SAP B1 e Salesforce
NUOVE FUNZIONALITÀ: - Aggiunto modulo CredentialManager per gestione centralizzata credenziali - Implementata UI Blazor per gestione credenziali (CredentialManagement.razor) - Supporto completo per credenziali database (SQL Server, MySQL, PostgreSQL, Oracle, SQLite, DB2, SAP HANA) - Gestione unificata REST API con supporto specifico per SAP B1 Service Layer e Salesforce - Test reali di connessione per database, SAP B1 e Salesforce OAuth2 - Selezione dinamica tipo servizio REST (Generico, SAP B1, Salesforce) con campi specifici - Persistenza sicura di credenziali con crittografia password e campi sensibili COMPONENTI AGGIUNTI: - CredentialManager/Models/: CredentialEntity, CredentialModels (DatabaseCredential, RestApiCredential, SapB1ServiceLayerCredential, SalesforceCredential) - CredentialManager/Services/: CredentialService, EncryptionService, DatabaseInitializer - CredentialManager/Data/: CredentialDbContext con Entity Framework - DataConnection/CredentialManagement/: Interfacce e servizi di integrazione - Data_Coupler/Pages/CredentialManagement.razor: UI completa per gestione credenziali MIGLIORAMENTI UI: - Form dinamica per REST API con campi specifici per tipo servizio - Validazione campi obbligatori per Salesforce (ClientId, ClientSecret, SecurityToken) - Test connessione in tempo reale dalla modale di inserimento/modifica - Rimozione sezioni separate per SAP B1 e Salesforce (ora unificate in REST API) - Gestione stato loading durante operazioni async PERSISTENZA AVANZATA: - Campo RestServiceType aggiunto a CredentialEntity con migrazione automatica - Serializzazione campi specifici Salesforce/SAP B1 in AdditionalParameters JSON - Mapping bidirezionale tra entità database e modelli business - Gestione nullability e conversioni tipo sicure SICUREZZA: - Crittografia AES-256 per password e token sensibili - Gestione sicura ConnectionString database - Validazione input e sanitizzazione dati TESTING E CONNETTIVITÀ: - Test autenticazione reale SAP B1 Service Layer - Test OAuth2 Salesforce con supporto Connected App - Test connettività database multi-provider - Logging dettagliato per debugging e monitoraggio CONFIGURAZIONE: - Dependency injection per tutti i servizi - Configurazione Entity Framework con SQLite - Tasks VS Code per build e run - Gestione connection string centralizzata CORREZIONI: - Risolti errori nullability in CredentialService - Aggiunto using Microsoft.JSInterop per IJSRuntime - Fix compilazione e warning Files modificati: 35+ file tra nuovi e aggiornati
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
using CredentialManager.Models;
|
||||
|
||||
namespace DataConnection.CredentialManagement.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Extension methods per convertire le credenziali CredentialManager in oggetti DataConnection
|
||||
/// </summary>
|
||||
public static class CredentialExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Converte il tipo di database da CredentialManager.Models.DatabaseType a DataConnection.Enums.DatabaseType
|
||||
/// </summary>
|
||||
public static DataConnection.Enums.DatabaseType ToDataConnectionDatabaseType(this CredentialManager.Models.DatabaseType credentialDbType)
|
||||
{
|
||||
return credentialDbType switch
|
||||
{
|
||||
CredentialManager.Models.DatabaseType.SqlServer => DataConnection.Enums.DatabaseType.SqlServer,
|
||||
CredentialManager.Models.DatabaseType.MySql => DataConnection.Enums.DatabaseType.MySql,
|
||||
CredentialManager.Models.DatabaseType.PostgreSql => DataConnection.Enums.DatabaseType.PostgreSql,
|
||||
CredentialManager.Models.DatabaseType.Oracle => DataConnection.Enums.DatabaseType.Oracle,
|
||||
CredentialManager.Models.DatabaseType.Sqlite => DataConnection.Enums.DatabaseType.Sqlite,
|
||||
CredentialManager.Models.DatabaseType.DB2 => DataConnection.Enums.DatabaseType.DB2,
|
||||
CredentialManager.Models.DatabaseType.SapHana => DataConnection.Enums.DatabaseType.SapHana,
|
||||
_ => throw new NotSupportedException($"Database type {credentialDbType} not supported")
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converte il tipo di database da DataConnection.Enums.DatabaseType a CredentialManager.Models.DatabaseType
|
||||
/// </summary>
|
||||
public static CredentialManager.Models.DatabaseType ToCredentialDatabaseType(this DataConnection.Enums.DatabaseType dataConnectionDbType)
|
||||
{
|
||||
return dataConnectionDbType switch
|
||||
{
|
||||
DataConnection.Enums.DatabaseType.SqlServer => CredentialManager.Models.DatabaseType.SqlServer,
|
||||
DataConnection.Enums.DatabaseType.MySql => CredentialManager.Models.DatabaseType.MySql,
|
||||
DataConnection.Enums.DatabaseType.PostgreSql => CredentialManager.Models.DatabaseType.PostgreSql,
|
||||
DataConnection.Enums.DatabaseType.Oracle => CredentialManager.Models.DatabaseType.Oracle,
|
||||
DataConnection.Enums.DatabaseType.Sqlite => CredentialManager.Models.DatabaseType.Sqlite,
|
||||
DataConnection.Enums.DatabaseType.DB2 => CredentialManager.Models.DatabaseType.DB2,
|
||||
DataConnection.Enums.DatabaseType.SapHana => CredentialManager.Models.DatabaseType.SapHana,
|
||||
_ => throw new NotSupportedException($"Database type {dataConnectionDbType} not supported")
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Crea una DatabaseCredential da parametri di connessione
|
||||
/// </summary>
|
||||
public static DatabaseCredential CreateDatabaseCredential(
|
||||
string name,
|
||||
DataConnection.Enums.DatabaseType databaseType,
|
||||
string host,
|
||||
int port,
|
||||
string databaseName,
|
||||
string username,
|
||||
string password,
|
||||
int commandTimeout = 30,
|
||||
bool ignoreSslErrors = false)
|
||||
{
|
||||
return new DatabaseCredential
|
||||
{
|
||||
Name = name,
|
||||
DatabaseType = databaseType.ToCredentialDatabaseType(),
|
||||
Host = host,
|
||||
Port = port,
|
||||
DatabaseName = databaseName,
|
||||
Username = username,
|
||||
Password = password,
|
||||
CommandTimeout = commandTimeout,
|
||||
IgnoreSslErrors = ignoreSslErrors
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Crea una RestApiCredential da parametri di connessione
|
||||
/// </summary>
|
||||
public static RestApiCredential CreateRestApiCredential(
|
||||
string name,
|
||||
string baseUrl,
|
||||
string? apiKey = null,
|
||||
string? username = null,
|
||||
string? password = null,
|
||||
string? authToken = null,
|
||||
int timeoutSeconds = 100,
|
||||
bool ignoreSslErrors = false,
|
||||
Dictionary<string, string>? headers = null)
|
||||
{
|
||||
return new RestApiCredential
|
||||
{
|
||||
Name = name,
|
||||
BaseUrl = baseUrl,
|
||||
ApiKey = apiKey,
|
||||
Username = username,
|
||||
Password = password,
|
||||
AuthToken = authToken,
|
||||
TimeoutSeconds = timeoutSeconds,
|
||||
IgnoreSslErrors = ignoreSslErrors,
|
||||
Headers = headers
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user