diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 59e10be5..0ceec1fd 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -683,7 +683,7 @@ { var tenants = await TenantService.GetTenantsAsync(); var _databases = await DatabaseService.GetDatabasesAsync(); - var tenant = tenants.Find(item => item.TenantId == site.TenantId); + var tenant = tenants.Find(item => item.TenantId == PageState.Alias.TenantId); if (tenant != null) { _tenant = tenant.Name; @@ -886,17 +886,17 @@ try { var aliases = await AliasService.GetAliasesAsync(); - if (aliases.Any(item => item.SiteId != PageState.Site.SiteId || item.TenantId != PageState.Site.TenantId)) + if (aliases.Any(item => item.SiteId != PageState.Site.SiteId || item.TenantId != PageState.Alias.TenantId)) { await SiteService.DeleteSiteAsync(PageState.Site.SiteId); await logger.LogInformation("Site Deleted {SiteId}", PageState.Site.SiteId); - foreach (Alias alias in aliases.Where(item => item.SiteId == PageState.Site.SiteId && item.TenantId == PageState.Site.TenantId)) + foreach (Alias alias in aliases.Where(item => item.SiteId == PageState.Site.SiteId && item.TenantId == PageState.Alias.TenantId)) { await AliasService.DeleteAliasAsync(alias.AliasId); } - var redirect = aliases.First(item => item.SiteId != PageState.Site.SiteId || item.TenantId != PageState.Site.TenantId); + var redirect = aliases.First(item => item.SiteId != PageState.Site.SiteId || item.TenantId != PageState.Alias.TenantId); NavigationManager.NavigateTo(PageState.Uri.Scheme + "://" + redirect.Name, true); } else @@ -993,7 +993,7 @@ if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { _aliases = await AliasService.GetAliasesAsync(); - _aliases = _aliases.Where(item => item.SiteId == PageState.Site.SiteId && item.TenantId == PageState.Site.TenantId).OrderBy(item => item.AliasId).ToList(); + _aliases = _aliases.Where(item => item.SiteId == PageState.Site.SiteId && item.TenantId == PageState.Alias.TenantId).OrderBy(item => item.AliasId).ToList(); } } @@ -1046,7 +1046,7 @@ { if (_aliasid == 0) { - alias = new Alias { SiteId = PageState.Site.SiteId, TenantId = PageState.Site.TenantId, Name = _aliasname, IsDefault = bool.Parse(_defaultalias) }; + alias = new Alias { SiteId = PageState.Site.SiteId, TenantId = PageState.Alias.TenantId, Name = _aliasname, IsDefault = bool.Parse(_defaultalias) }; await AliasService.AddAliasAsync(alias); } else diff --git a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor index 6f7c4b02..c64070ff 100644 --- a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor +++ b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor @@ -271,7 +271,7 @@ } var tenants = await TenantService.GetTenantsAsync(); - _tenant = tenants.Find(item => item.TenantId == PageState.Site.TenantId).Name; + _tenant = tenants.Find(item => item.TenantId == PageState.Alias.TenantId).Name; _history = await MigrationHistoryService.GetMigrationHistoryAsync(); _initialized = true; diff --git a/Oqtane.Server/Infrastructure/DatabaseManager.cs b/Oqtane.Server/Infrastructure/DatabaseManager.cs index 1d4debe7..afad9465 100644 --- a/Oqtane.Server/Infrastructure/DatabaseManager.cs +++ b/Oqtane.Server/Infrastructure/DatabaseManager.cs @@ -579,7 +579,6 @@ namespace Oqtane.Infrastructure site = new Site { - TenantId = tenant.TenantId, Name = install.SiteName, LogoFileId = null, FaviconFileId = null, @@ -596,7 +595,8 @@ namespace Oqtane.Infrastructure RenderMode = rendermode, Runtime = runtime, Prerender = (rendermode == RenderModes.Interactive), - Hybrid = false + Hybrid = false, + TenantId = tenant.TenantId }; site = sites.AddSite(site); diff --git a/Oqtane.Server/Migrations/Tenant/10000102_RemoveSiteTenantId.cs b/Oqtane.Server/Migrations/Tenant/10000102_RemoveSiteTenantId.cs new file mode 100644 index 00000000..3ac75cbe --- /dev/null +++ b/Oqtane.Server/Migrations/Tenant/10000102_RemoveSiteTenantId.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Oqtane.Databases.Interfaces; +using Oqtane.Migrations.EntityBuilders; +using Oqtane.Repository; + +namespace Oqtane.Migrations.Tenant +{ + [DbContext(typeof(TenantDBContext))] + [Migration("Tenant.10.00.01.02")] + public class RemoveSiteTenantId : MultiDatabaseMigration + { + public RemoveSiteTenantId(IDatabase database) : base(database) + { + } + + protected override void Up(MigrationBuilder migrationBuilder) + { + var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase); + siteEntityBuilder.DropIndex("IX_Site"); // TenantId, Name + siteEntityBuilder.DropColumn("TenantId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + // not implemented + } + } +} diff --git a/Oqtane.Server/Services/SiteService.cs b/Oqtane.Server/Services/SiteService.cs index 25a9ec92..5e43299b 100644 --- a/Oqtane.Server/Services/SiteService.cs +++ b/Oqtane.Server/Services/SiteService.cs @@ -148,6 +148,8 @@ namespace Oqtane.Services // installation date used for fingerprinting static assets site.Fingerprint = Utilities.GenerateSimpleHash(_configManager.GetSetting("InstallationDate", DateTime.UtcNow.ToString("yyyyMMddHHmm"))); + + site.TenantId = alias.TenantId; } else { @@ -181,7 +183,7 @@ namespace Oqtane.Services { var alias = _tenantManager.GetAlias(); var current = _sites.GetSite(site.SiteId, false); - if (site.SiteId == alias.SiteId && site.TenantId == alias.TenantId && current != null) + if (site.SiteId == alias.SiteId && current != null) { site = _sites.UpdateSite(site); _syncManager.AddSyncEvent(alias, EntityNames.Site, site.SiteId, SyncEventActions.Update); diff --git a/Oqtane.Shared/Models/Site.cs b/Oqtane.Shared/Models/Site.cs index a00fa5b1..2b2cb78b 100644 --- a/Oqtane.Shared/Models/Site.cs +++ b/Oqtane.Shared/Models/Site.cs @@ -16,11 +16,6 @@ namespace Oqtane.Models /// public int SiteId { get; set; } - /// - /// Reference to the the Site is in - /// - public int TenantId { get; set; } - /// /// The site Name /// @@ -203,12 +198,17 @@ namespace Oqtane.Models [NotMapped] public string Fingerprint { get; set; } + /// + /// Reference to the the Site belongs to + /// + [NotMapped] + public int TenantId { get; set; } + public Site Clone() { return new Site { SiteId = SiteId, - TenantId = TenantId, Name = Name, TimeZoneId = TimeZoneId, LogoFileId = LogoFileId, @@ -246,7 +246,8 @@ namespace Oqtane.Models Pages = Pages.ConvertAll(page => page.Clone()), Languages = Languages.ConvertAll(language => language.Clone()), Themes = Themes, - Fingerprint = Fingerprint + Fingerprint = Fingerprint, + TenantId = TenantId }; }