diff --git a/Oqtane.Client/Modules/Admin/Sites/Add.razor b/Oqtane.Client/Modules/Admin/Sites/Add.razor index da72dac1..448c6682 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Add.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Add.razor @@ -19,136 +19,140 @@ } else { -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
- @if (_tenantid == "+") - { +
+
-
-
-
- +
- +
- +
- +
+
+
+ +
+
- if (_databaseConfigType != null) +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ @if (_tenantid == "+") { - @DatabaseConfigComponent; +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ if (_databaseConfigType != null) + { + @DatabaseConfigComponent; + } +
+ +
+ +
+
+
+ +
+ +
+
} -
- -
- -
-
-
- -
- -
-
- } -
-
-
- - @SharedLocalizer["Cancel"] +
+
+
+ + @SharedLocalizer["Cancel"] + } @code { private List _databases; + private ElementReference form; + private bool validated = false; private string _databaseName = "LocalDB"; private Type _databaseConfigType; private object _databaseConfig; @@ -164,7 +168,7 @@ else private string _tenantName = string.Empty; - private string _hostusername = string.Empty; + private string _hostUserName = UserNames.Host; private string _hostpassword = string.Empty; private string _name = string.Empty; @@ -252,112 +256,120 @@ else private async Task SaveSite() { - if (_tenantid != "-" && _name != string.Empty && _urls != string.Empty && _themetype != "-" && _containertype != "-" && _sitetemplatetype != "-") + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) { - var duplicates = new List(); - var aliases = await AliasService.GetAliasesAsync(); - foreach (string name in _urls.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) + if (_tenantid != "-" && _name != string.Empty && _urls != string.Empty && _themetype != "-" && _containertype != "-" && _sitetemplatetype != "-") { - if (aliases.Exists(item => item.Name == name)) + var duplicates = new List(); + var aliases = await AliasService.GetAliasesAsync(); + foreach (string name in _urls.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { - duplicates.Add(name); - } - } - - if (duplicates.Count == 0) - { - InstallConfig config = new InstallConfig(); - - if (_tenantid == "+") - { - if (!string.IsNullOrEmpty(_tenantName) && _tenants.FirstOrDefault(item => item.Name == _tenantName) == null) + if (aliases.Exists(item => item.Name == name)) { - // validate host credentials - var user = new User(); - user.SiteId = PageState.Site.SiteId; - user.Username = _hostusername; - user.Password = _hostpassword; - user = await UserService.LoginUserAsync(user, false, false); - if (user.IsAuthenticated) - { - var connectionString = String.Empty; - if (_databaseConfig is IDatabaseConfigControl databaseConfigControl) - { - connectionString = databaseConfigControl.GetConnectionString(); - } - var database = _databases.SingleOrDefault(d => d.Name == _databaseName); + duplicates.Add(name); + } + } - if (connectionString != "") + if (duplicates.Count == 0) + { + InstallConfig config = new InstallConfig(); + + if (_tenantid == "+") + { + if (!string.IsNullOrEmpty(_tenantName) && _tenants.FirstOrDefault(item => item.Name == _tenantName) == null) + { + // validate host credentials + var user = new User(); + user.SiteId = PageState.Site.SiteId; + user.Username = UserNames.Host; + user.Password = _hostpassword; + user = await UserService.LoginUserAsync(user, false, false); + if (user.IsAuthenticated) { - config.TenantName = _tenantName; - config.DatabaseType = database.DBType; - config.ConnectionString = connectionString; - config.HostUsername = _hostusername; - config.HostPassword = _hostpassword; - config.HostEmail = user.Email; - config.HostName = user.DisplayName; - config.IsNewTenant = true; + var connectionString = String.Empty; + if (_databaseConfig is IDatabaseConfigControl databaseConfigControl) + { + connectionString = databaseConfigControl.GetConnectionString(); + } + var database = _databases.SingleOrDefault(d => d.Name == _databaseName); + + if (connectionString != "") + { + config.TenantName = _tenantName; + config.DatabaseType = database.DBType; + config.ConnectionString = connectionString; + config.HostEmail = user.Email; + config.HostPassword = _hostpassword; + config.HostName = user.DisplayName; + config.IsNewTenant = true; + } + else + { + AddModuleMessage(Localizer["Error.Required.ServerDatabase"], MessageType.Error); + } } else { - AddModuleMessage(Localizer["Error.Required.ServerDatabase"], MessageType.Error); + AddModuleMessage(Localizer["Error.InvalidPassword"], MessageType.Error); } } else { - AddModuleMessage(Localizer["Error.InvalidPassword"], MessageType.Error); + AddModuleMessage(Localizer["Error.TenantName.Exists"], MessageType.Error); } } else { - AddModuleMessage(Localizer["Error.TenantName.Exists"], MessageType.Error); + var tenant = _tenants.FirstOrDefault(item => item.TenantId == int.Parse(_tenantid)); + if (tenant != null) + { + config.TenantName = tenant.Name; + config.DatabaseType = tenant.DBType; + config.ConnectionString = tenant.DBConnectionString; + config.IsNewTenant = false; + } + } + + if (!string.IsNullOrEmpty(config.TenantName)) + { + config.SiteName = _name; + config.Aliases = _urls; + config.DefaultTheme = _themetype; + config.DefaultContainer = _containertype; + config.DefaultAdminContainer = _admincontainertype; + config.SiteTemplate = _sitetemplatetype; + + ShowProgressIndicator(); + + var installation = await InstallationService.Install(config); + if (installation.Success) + { + var aliasname = config.Aliases.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0]; + var uri = new Uri(NavigationManager.Uri); + NavigationManager.NavigateTo(uri.Scheme + "://" + aliasname, true); + } + else + { + await logger.LogError("Error Creating Site {Error}", installation.Message); + AddModuleMessage(installation.Message, MessageType.Error); + } } } else { - var tenant = _tenants.FirstOrDefault(item => item.TenantId == int.Parse(_tenantid)); - if (tenant != null) - { - config.TenantName = tenant.Name; - config.DatabaseType = tenant.DBType; - config.ConnectionString = tenant.DBConnectionString; - config.IsNewTenant = false; - } - } - - if (!string.IsNullOrEmpty(config.TenantName)) - { - config.SiteName = _name; - config.Aliases = _urls; - config.DefaultTheme = _themetype; - config.DefaultContainer = _containertype; - config.DefaultAdminContainer = _admincontainertype; - config.SiteTemplate = _sitetemplatetype; - - ShowProgressIndicator(); - - var installation = await InstallationService.Install(config); - if (installation.Success) - { - var aliasname = config.Aliases.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0]; - var uri = new Uri(NavigationManager.Uri); - NavigationManager.NavigateTo(uri.Scheme + "://" + aliasname, true); - } - else - { - await logger.LogError("Error Creating Site {Error}", installation.Message); - AddModuleMessage(installation.Message, MessageType.Error); - } + AddModuleMessage(string.Format(Localizer["Message.SiteName.InUse"], string.Join(", ", duplicates.ToArray())), MessageType.Warning); } } else { - AddModuleMessage(string.Format(Localizer["Message.SiteName.InUse"], string.Join(", ", duplicates.ToArray())), MessageType.Warning); + AddModuleMessage(Localizer["Message.Required.Tenant"], MessageType.Warning); } } else { - AddModuleMessage(Localizer["Message.Required.Tenant"], MessageType.Warning); + AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } }