diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 4e73d383..a2d6c815 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -154,10 +154,6 @@
Cancel - @if (UserSecurity.IsAuthorized(PageState.User, Constants.HostRole)) - { - - }

@@ -202,7 +198,7 @@ { Themes = await ThemeService.GetThemesAsync(); aliases = await AliasService.GetAliasesAsync(); - Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId); + Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId, PageState.Alias); if (site != null) { name = site.Name; @@ -275,55 +271,70 @@ { if (name != "" && urls != "" && !string.IsNullOrEmpty(themetype) && (panelayouts.Count == 0 || !string.IsNullOrEmpty(layouttype)) && !string.IsNullOrEmpty(containertype)) { - Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId); - if (site != null) + bool unique = true; + foreach (string name in urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { - site.Name = name; - site.LogoFileId = null; - int logofileid = filemanager.GetFileId(); - if (logofileid != -1) + if (aliases.Exists(item => item.Name == name && item.SiteId != PageState.Alias.SiteId && item.TenantId != PageState.Alias.TenantId)) { - site.LogoFileId = logofileid; + unique = false; } - site.DefaultThemeType = themetype; - site.DefaultLayoutType = (layouttype == null ? "" : layouttype); - site.DefaultContainerType = containertype; - site.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); - - site = await SiteService.UpdateSiteAsync(site); - - urls = urls.Replace("\n", ","); - string[] names = urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - foreach (Alias alias in aliases) + } + if (unique) + { + Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId, PageState.Alias); + if (site != null) { - if (!names.Contains(alias.Name)) + site.Name = name; + site.LogoFileId = null; + int logofileid = filemanager.GetFileId(); + if (logofileid != -1) { - await AliasService.DeleteAliasAsync(alias.AliasId); + site.LogoFileId = logofileid; } - } - foreach (string name in names) - { - if (!aliases.Exists(item => item.Name == name)) + site.DefaultThemeType = themetype; + site.DefaultLayoutType = (layouttype == null ? "" : layouttype); + site.DefaultContainerType = containertype; + site.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); + + site = await SiteService.UpdateSiteAsync(site, PageState.Alias); + + urls = urls.Replace("\n", ","); + string[] names = urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (Alias alias in aliases.Where(item => item.SiteId == site.SiteId && item.TenantId == site.TenantId).ToList()) { - Alias alias = new Alias(); - alias.Name = name; - alias.TenantId = site.TenantId; - alias.SiteId = site.SiteId; - await AliasService.AddAliasAsync(alias); + if (!names.Contains(alias.Name)) + { + await AliasService.DeleteAliasAsync(alias.AliasId); + } } + foreach (string name in names) + { + if (!aliases.Exists(item => item.Name == name)) + { + Alias alias = new Alias(); + alias.Name = name; + alias.TenantId = site.TenantId; + alias.SiteId = site.SiteId; + await AliasService.AddAliasAsync(alias); + } + } + + Dictionary settings = await SettingService.GetSiteSettingsAsync(site.SiteId); + SettingService.SetSetting(settings, "SMTPHost", smtphost); + SettingService.SetSetting(settings, "SMTPPort", smtpport); + SettingService.SetSetting(settings, "SMTPSSL", smtpssl); + SettingService.SetSetting(settings, "SMTPUsername", smtpusername); + SettingService.SetSetting(settings, "SMTPPassword", smtppassword); + await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId); + + await logger.LogInformation("Site Saved {Site}", site); + + NavigationManager.NavigateTo(NavigateUrl(Reload.Site)); } - - Dictionary settings = await SettingService.GetSiteSettingsAsync(site.SiteId); - SettingService.SetSetting(settings, "SMTPHost", smtphost); - SettingService.SetSetting(settings, "SMTPPort", smtpport); - SettingService.SetSetting(settings, "SMTPSSL", smtpssl); - SettingService.SetSetting(settings, "SMTPUsername", smtpusername); - SettingService.SetSetting(settings, "SMTPPassword", smtppassword); - await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId); - - await logger.LogInformation("Site Saved {Site}", site); - - NavigationManager.NavigateTo(NavigateUrl(Reload.Site)); + } + else + { + AddModuleMessage("An Alias Specified Has Already Been Used For Another Site", MessageType.Warning); } } else @@ -337,19 +348,4 @@ AddModuleMessage("Error Saving Site", MessageType.Error); } } - - private async Task DeleteSite() - { - try - { - await SiteService.DeleteSiteAsync(PageState.Site.SiteId); - await logger.LogInformation("Sited Deleted {SiteId}", PageState.Site.SiteId); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Deleting Site {SiteId} {Error}", PageState.Site.SiteId, ex.Message); - AddModuleMessage("Error Deleting Site", MessageType.Error); - } - } } diff --git a/Oqtane.Client/Modules/Admin/Sites/Add.razor b/Oqtane.Client/Modules/Admin/Sites/Add.razor index 7afb961f..36d08a26 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Add.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Add.razor @@ -187,75 +187,91 @@ else { if (tenantid != "-1" && name != "" && urls != "" && !string.IsNullOrEmpty(themetype) && (panelayouts.Count == 0 || !string.IsNullOrEmpty(layouttype)) && !string.IsNullOrEmpty(containertype)) { - bool isvalid = true; - - if (!isinitialized) + bool unique = true; + List aliases = await AliasService.GetAliasesAsync(); + foreach (string name in urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { - User user = new User(); - user.SiteId = PageState.Site.SiteId; - user.Username = username; - user.Password = password; - user = await UserService.LoginUserAsync(user, false, false); - isvalid = user.IsAuthenticated; + if (aliases.Exists(item => item.Name == name)) + { + unique = false; + } } - - if (isvalid) + if (unique) { - ShowProgressIndicator(); - - List aliases = new List(); - urls = urls.Replace("\n", ","); - foreach (string name in urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) - { - Alias alias = new Alias(); - alias.Name = name; - alias.TenantId = int.Parse(tenantid); - alias.SiteId = -1; - alias = await AliasService.AddAliasAsync(alias); - aliases.Add(alias); - } - - Site site = new Site(); - site.TenantId = int.Parse(tenantid); - site.Name = name; - site.LogoFileId = null; - site.DefaultThemeType = themetype; - site.DefaultLayoutType = (layouttype == null ? "" : layouttype); - site.DefaultContainerType = containertype; - site = await SiteService.AddSiteAsync(site, aliases[0]); - - foreach(Alias alias in aliases) - { - alias.SiteId = site.SiteId; - await AliasService.UpdateAliasAsync(alias); - } + bool isvalid = true; if (!isinitialized) { User user = new User(); - user.SiteId = site.SiteId; + user.SiteId = PageState.Site.SiteId; user.Username = username; user.Password = password; - user.Email = PageState.User.Email; - user.DisplayName = PageState.User.DisplayName; - user = await UserService.AddUserAsync(user, aliases[0]); - - if (user != null) - { - Tenant tenant = tenants.Where(item => item.TenantId == int.Parse(tenantid)).FirstOrDefault(); - tenant.IsInitialized = true; - await TenantService.UpdateTenantAsync(tenant); - } + user = await UserService.LoginUserAsync(user, false, false); + isvalid = user.IsAuthenticated; } - await logger.LogInformation("Site Created {Site}", site); - Uri uri = new Uri(NavigationManager.Uri); - NavigationManager.NavigateTo(uri.Scheme + "://" + aliases[0].Name, true); + if (isvalid) + { + ShowProgressIndicator(); + + aliases = new List(); + urls = urls.Replace("\n", ","); + foreach (string name in urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) + { + Alias alias = new Alias(); + alias.Name = name; + alias.TenantId = int.Parse(tenantid); + alias.SiteId = -1; + alias = await AliasService.AddAliasAsync(alias); + aliases.Add(alias); + } + + Site site = new Site(); + site.TenantId = int.Parse(tenantid); + site.Name = name; + site.LogoFileId = null; + site.DefaultThemeType = themetype; + site.DefaultLayoutType = (layouttype == null ? "" : layouttype); + site.DefaultContainerType = containertype; + site = await SiteService.AddSiteAsync(site, aliases[0]); + + foreach (Alias alias in aliases) + { + alias.SiteId = site.SiteId; + await AliasService.UpdateAliasAsync(alias); + } + + if (!isinitialized) + { + User user = new User(); + user.SiteId = site.SiteId; + user.Username = username; + user.Password = password; + user.Email = PageState.User.Email; + user.DisplayName = PageState.User.DisplayName; + user = await UserService.AddUserAsync(user, aliases[0]); + + if (user != null) + { + Tenant tenant = tenants.Where(item => item.TenantId == int.Parse(tenantid)).FirstOrDefault(); + tenant.IsInitialized = true; + await TenantService.UpdateTenantAsync(tenant); + } + } + await Log(aliases[0], LogLevel.Information, "", null, "Site Created {Site}", site); + + Uri uri = new Uri(NavigationManager.Uri); + NavigationManager.NavigateTo(uri.Scheme + "://" + aliases[0].Name, true); + } + else + { + await logger.LogError("Invalid Password Entered For Host {Username}", username); + AddModuleMessage("Invalid Host Password", MessageType.Error); + } } else { - await logger.LogError("Invalid Password Entered For Host {Username}", username); - AddModuleMessage("Invalid Host Password", MessageType.Error); + AddModuleMessage("An Alias Specified Has Already Been Used For Another Site", MessageType.Warning); } } else diff --git a/Oqtane.Client/Modules/Admin/Sites/Edit.razor b/Oqtane.Client/Modules/Admin/Sites/Edit.razor new file mode 100644 index 00000000..70f5cac0 --- /dev/null +++ b/Oqtane.Client/Modules/Admin/Sites/Edit.razor @@ -0,0 +1,265 @@ +@namespace Oqtane.Modules.Admin.Sites +@inherits ModuleBase +@inject NavigationManager NavigationManager +@inject ISiteService SiteService +@inject ITenantService TenantService +@inject IAliasService AliasService +@inject IThemeService ThemeService + +@if (themes != null) +{ + + + + + + + + + + + +
+ + + +
+ + + +
+ + +