diff --git a/Oqtane.Client/Installer/Controls/AzureSqlConfig.razor b/Oqtane.Client/Installer/Controls/AzureSqlConfig.razor new file mode 100644 index 00000000..18bb881f --- /dev/null +++ b/Oqtane.Client/Installer/Controls/AzureSqlConfig.razor @@ -0,0 +1,119 @@ +@namespace Oqtane.Installer.Controls +@implements Oqtane.Interfaces.IDatabaseConfigControl +@inject IStringLocalizer Localizer +@inject IStringLocalizer SharedLocalizer + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+@if (_security == "custom") +{ +
+ +
+ +
+
+
+ +
+
+ + +
+
+
+} +
+ +
+ +
+
+@if (_encryption == "true") +{ +
+ +
+ +
+
+} + +@code { + private string _server = "tcp:{SQL Server Name}.database.windows.net,1433"; + private string _database = "{SQL Database Name}"; + private string _security = "custom"; + private string _uid = "{SQL Administrator Login}"; + private string _pwd = String.Empty; + private string _passwordType = "password"; + private string _togglePassword = string.Empty; + private string _encryption = "true"; + private string _trustservercertificate = "false"; + + protected override void OnInitialized() + { + _togglePassword = SharedLocalizer["ShowPassword"]; + } + + public string GetConnectionString() + { + var connectionString = String.Empty; + + if (!String.IsNullOrEmpty(_server) && !String.IsNullOrEmpty(_database)) + { + connectionString = $"Data Source={_server};Initial Catalog={_database};"; + } + + if (_security == "integrated") + { + connectionString += "Integrated Security=SSPI;"; + } + else + { + connectionString += $"User ID={_uid};Password={_pwd};"; + } + connectionString += $"Encrypt={_encryption};"; + connectionString += $"TrustServerCertificate={_trustservercertificate};"; + + return connectionString; + } + + private void TogglePassword() + { + if (_passwordType == "password") + { + _passwordType = "text"; + _togglePassword = SharedLocalizer["HidePassword"]; + } + else + { + _passwordType = "password"; + _togglePassword = SharedLocalizer["ShowPassword"]; + } + } +} \ No newline at end of file diff --git a/Oqtane.Client/Installer/Controls/SqlServerConfig.razor b/Oqtane.Client/Installer/Controls/SqlServerConfig.razor index 0f96c9ff..5dcc6423 100644 --- a/Oqtane.Client/Installer/Controls/SqlServerConfig.razor +++ b/Oqtane.Client/Installer/Controls/SqlServerConfig.razor @@ -4,7 +4,7 @@ @inject IStringLocalizer SharedLocalizer
- +
diff --git a/Oqtane.Client/Oqtane.Client.csproj b/Oqtane.Client/Oqtane.Client.csproj index d8fca67b..92a21bc9 100644 --- a/Oqtane.Client/Oqtane.Client.csproj +++ b/Oqtane.Client/Oqtane.Client.csproj @@ -32,6 +32,12 @@ + + + true + + + false false diff --git a/Oqtane.Client/Resources/Installer/Controls/SqlServerConfig.resx b/Oqtane.Client/Resources/Installer/Controls/SqlServerConfig.resx index 7909364d..6f249723 100644 --- a/Oqtane.Client/Resources/Installer/Controls/SqlServerConfig.resx +++ b/Oqtane.Client/Resources/Installer/Controls/SqlServerConfig.resx @@ -121,7 +121,7 @@ Server: - Enter the database server name. This might include a port number as well if you are using a cloud service (ie. servername.database.windows.net,1433) + Enter the database server name. This might include a port number as well if you are using a cloud service. Database: diff --git a/Oqtane.Server/Infrastructure/DatabaseManager.cs b/Oqtane.Server/Infrastructure/DatabaseManager.cs index 2273cded..1ee2a138 100644 --- a/Oqtane.Server/Infrastructure/DatabaseManager.cs +++ b/Oqtane.Server/Infrastructure/DatabaseManager.cs @@ -731,6 +731,7 @@ namespace Oqtane.Infrastructure { _configManager.AddOrUpdateSetting($"{SettingKeys.DatabaseSection}:{SettingKeys.DatabaseTypeKey}", Constants.DefaultDBType, true); } + if (!_configManager.GetSection(SettingKeys.AvailableDatabasesSection).Exists()) { string databases = "["; @@ -742,6 +743,19 @@ namespace Oqtane.Infrastructure databases += "]"; _configManager.AddOrUpdateSetting(SettingKeys.AvailableDatabasesSection, databases, true); } + var availabledatabases = _configManager.GetSection(SettingKeys.AvailableDatabasesSection).GetChildren(); + if (!availabledatabases.Any(item => item.GetSection("Name").Value == "Azure SQL")) + { + // Azure SQL added in 6.1.2 + string databases = "["; + foreach (var database in availabledatabases) + { + databases += "{ " + $"\"Name\": \"{database["Name"]}\", \"ControlType\": \"{database["ControlType"]}\", \"DBTYpe\": \"{database["DBType"]}\"" + " },"; + } + databases += "{ \"Name\": \"Azure SQL\", \"ControlType\": \"Oqtane.Installer.Controls.AzureSqlConfig, Oqtane.Client\", \"DBTYpe\": \"Oqtane.Database.SqlServer.SqlServerDatabase, Oqtane.Database.SqlServer\" }"; + databases += "]"; + _configManager.AddOrUpdateSetting(SettingKeys.AvailableDatabasesSection, databases, true); + } } } }