commit
e627e14233
@ -12,9 +12,9 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-preview5.20216.8" />-->
|
||||
<!-- <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-preview5.20216.8" PrivateAssets="all" />-->
|
||||
<PackageReference Include="System.Net.Http.Json" Version="3.2.0-preview5.20210.3" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-rc1.20223.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-rc1.20223.4" PrivateAssets="all" />
|
||||
<PackageReference Include="System.Net.Http.Json" Version="3.2.0-rc1.20217.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -21,8 +21,11 @@
|
||||
</metadata>
|
||||
<files>
|
||||
<file src="..\Client\bin\Release\netstandard2.1\[Owner].[Module]s.Module.Client.dll" target="lib" />
|
||||
<file src="..\Client\bin\Release\netstandard2.1\[Owner].[Module]s.Module.Client.pdb" target="lib" />
|
||||
<file src="..\Server\bin\Release\netcoreapp3.1\[Owner].[Module]s.Module.Server.dll" target="lib" />
|
||||
<file src="..\Server\bin\Release\netcoreapp3.1\[Owner].[Module]s.Module.Server.pdb" target="lib" />
|
||||
<file src="..\Shared\bin\Release\netstandard2.1\[Owner].[Module]s.Module.Shared.dll" target="lib" />
|
||||
<file src="..\Shared\bin\Release\netstandard2.1\[Owner].[Module]s.Module.Shared.pdb" target="lib" />
|
||||
<file src="..\wwwroot\**\*.*" target="wwwroot" />
|
||||
</files>
|
||||
</package>
|
@ -18,7 +18,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.0-preview5.20216.8" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.0-rc1.20223.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.2" />
|
||||
|
@ -359,7 +359,7 @@
|
||||
Page page = null;
|
||||
try
|
||||
{
|
||||
if (_name != string.Empty && !string.IsNullOrEmpty(_themetype) && (_panelayouts.Count == 0 || !string.IsNullOrEmpty(_layouttype)))
|
||||
if (_name != string.Empty)
|
||||
{
|
||||
page = PageState.Pages.FirstOrDefault(item => item.PageId == _pageId);
|
||||
string currentPath = page.Path;
|
||||
@ -375,7 +375,7 @@
|
||||
{
|
||||
_path = _path.Substring(_path.LastIndexOf("/") + 1);
|
||||
}
|
||||
if (string.IsNullOrEmpty(_parentid))
|
||||
if (string.IsNullOrEmpty(_parentid) || _parentid == "-1")
|
||||
{
|
||||
page.ParentId = null;
|
||||
page.Path = Utilities.GetFriendlyUrl(_path);
|
||||
@ -459,7 +459,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
AddModuleMessage("You Must Provide Page Name And Theme", MessageType.Warning);
|
||||
AddModuleMessage("You Must Provide Page Name", MessageType.Warning);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -6,7 +6,7 @@
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<RazorLangVersion>3.0</RazorLangVersion>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
<Version>0.0.9</Version>
|
||||
<Version>0.9.0</Version>
|
||||
<Product>Oqtane</Product>
|
||||
<Authors>Shaun Walker</Authors>
|
||||
<Company>.NET Foundation</Company>
|
||||
@ -27,10 +27,10 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-preview5.20216.8" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-preview5.20216.8" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-rc1.20223.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-rc1.20223.4" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="3.1.2" />
|
||||
<PackageReference Include="System.Net.Http.Json" Version="3.2.0-preview5.20210.3" />
|
||||
<PackageReference Include="System.Net.Http.Json" Version="3.2.0-rc1.20217.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -6,9 +6,9 @@ namespace Oqtane.Services
|
||||
{
|
||||
public interface ISettingService
|
||||
{
|
||||
Task<Dictionary<string, string>> GetHostSettingsAsync();
|
||||
Task<Dictionary<string, string>> GetTenantSettingsAsync();
|
||||
|
||||
Task UpdateHostSettingsAsync(Dictionary<string, string> hostSettings);
|
||||
Task UpdateTenantSettingsAsync(Dictionary<string, string> tenantSettings);
|
||||
|
||||
Task<Dictionary<string, string>> GetSiteSettingsAsync(int siteId);
|
||||
|
||||
|
@ -26,14 +26,14 @@ namespace Oqtane.Services
|
||||
get { return CreateApiUrl(_siteState.Alias, _navigationManager.Uri, "Setting"); }
|
||||
}
|
||||
|
||||
public async Task<Dictionary<string, string>> GetHostSettingsAsync()
|
||||
public async Task<Dictionary<string, string>> GetTenantSettingsAsync()
|
||||
{
|
||||
return await GetSettingsAsync(EntityNames.Host, -1);
|
||||
return await GetSettingsAsync(EntityNames.Tenant, -1);
|
||||
}
|
||||
|
||||
public async Task UpdateHostSettingsAsync(Dictionary<string, string> hostSettings)
|
||||
public async Task UpdateTenantSettingsAsync(Dictionary<string, string> tenantSettings)
|
||||
{
|
||||
await UpdateSettingsAsync(hostSettings, EntityNames.Host, -1);
|
||||
await UpdateSettingsAsync(tenantSettings, EntityNames.Tenant, -1);
|
||||
}
|
||||
|
||||
public async Task<Dictionary<string, string>> GetSiteSettingsAsync(int siteId)
|
||||
|
@ -2,7 +2,7 @@
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Oqtane.Framework</id>
|
||||
<version>0.0.9</version>
|
||||
<version>0.9.0</version>
|
||||
<authors>Shaun Walker</authors>
|
||||
<owners>.NET Foundation</owners>
|
||||
<title>Oqtane Framework</title>
|
||||
|
@ -123,7 +123,7 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
switch (entityName)
|
||||
{
|
||||
case EntityNames.Host:
|
||||
case EntityNames.Tenant:
|
||||
authorized = User.IsInRole(Constants.HostRole);
|
||||
break;
|
||||
case EntityNames.Site:
|
||||
|
@ -26,7 +26,6 @@ namespace Oqtane.Infrastructure
|
||||
private readonly IServiceScopeFactory _serviceScopeFactory;
|
||||
private readonly IMemoryCache _cache;
|
||||
|
||||
|
||||
public DatabaseManager(IConfigurationRoot config, IServiceScopeFactory serviceScopeFactory, IMemoryCache cache)
|
||||
{
|
||||
_config = config;
|
||||
@ -198,7 +197,7 @@ namespace Oqtane.Infrastructure
|
||||
var upgradeConfig = DeployChanges
|
||||
.To
|
||||
.SqlDatabase(NormalizeConnectionString(install.ConnectionString))
|
||||
.WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly(), s => s.Contains("Master."));
|
||||
.WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly(), s => s.Contains("Master.") && s.EndsWith(".sql",StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var upgrade = upgradeConfig.Build();
|
||||
if (upgrade.IsUpgradeRequired())
|
||||
@ -217,7 +216,6 @@ namespace Oqtane.Infrastructure
|
||||
|
||||
if (result.Success)
|
||||
{
|
||||
CreateApplicationVersion(install.ConnectionString);
|
||||
UpdateConnectionString(install.ConnectionString);
|
||||
}
|
||||
}
|
||||
@ -277,21 +275,43 @@ namespace Oqtane.Infrastructure
|
||||
{
|
||||
var result = new Installation { Success = false, Message = string.Empty };
|
||||
|
||||
using (var db = new InstallationContext(NormalizeConnectionString(_config.GetConnectionString(SettingKeys.ConnectionStringKey))))
|
||||
{
|
||||
foreach (var tenant in db.Tenant.ToList())
|
||||
{
|
||||
var upgradeConfig = DeployChanges.To.SqlDatabase(NormalizeConnectionString(tenant.DBConnectionString))
|
||||
.WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly(), s => s.Contains("Tenant"));
|
||||
string[] versions = Constants.ReleaseVersions.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
var upgrade = upgradeConfig.Build();
|
||||
if (upgrade.IsUpgradeRequired())
|
||||
using (var scope = _serviceScopeFactory.CreateScope())
|
||||
{
|
||||
var upgrades = scope.ServiceProvider.GetRequiredService<IUpgradeManager>();
|
||||
|
||||
using (var db = new InstallationContext(NormalizeConnectionString(_config.GetConnectionString(SettingKeys.ConnectionStringKey))))
|
||||
{
|
||||
foreach (var tenant in db.Tenant.ToList())
|
||||
{
|
||||
var upgradeResult = upgrade.PerformUpgrade();
|
||||
result.Success = upgradeResult.Successful;
|
||||
if (!result.Success)
|
||||
var upgradeConfig = DeployChanges.To.SqlDatabase(NormalizeConnectionString(tenant.DBConnectionString))
|
||||
.WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly(), s => s.Contains("Tenant.") && s.EndsWith(".sql", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var upgrade = upgradeConfig.Build();
|
||||
if (upgrade.IsUpgradeRequired())
|
||||
{
|
||||
result.Message = upgradeResult.Error.Message;
|
||||
var upgradeResult = upgrade.PerformUpgrade();
|
||||
result.Success = upgradeResult.Successful;
|
||||
if (!result.Success)
|
||||
{
|
||||
result.Message = upgradeResult.Error.Message;
|
||||
}
|
||||
}
|
||||
|
||||
// execute any version specific upgrade logic
|
||||
string version = tenant.Version;
|
||||
int index = Array.FindIndex(versions, item => item == version);
|
||||
if (index != (versions.Length - 1))
|
||||
{
|
||||
if (index == -1) index = 0;
|
||||
for (int i = index; i < versions.Length; i++)
|
||||
{
|
||||
upgrades.Upgrade(tenant, versions[i]);
|
||||
}
|
||||
tenant.Version = versions[versions.Length - 1];
|
||||
db.Entry(tenant).State = EntityState.Modified;
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -460,6 +480,9 @@ namespace Oqtane.Infrastructure
|
||||
aliases.UpdateAlias(alias);
|
||||
}
|
||||
|
||||
tenant.Version = Constants.Version;
|
||||
tenants.UpdateTenant(tenant);
|
||||
|
||||
log.Log(site.SiteId, LogLevel.Trace, this, LogFunction.Create, "Site Created {Site}", site);
|
||||
}
|
||||
}
|
||||
@ -470,20 +493,6 @@ namespace Oqtane.Infrastructure
|
||||
return result;
|
||||
}
|
||||
|
||||
private void CreateApplicationVersion(string connectionString)
|
||||
{
|
||||
using (var db = new InstallationContext(NormalizeConnectionString(connectionString)))
|
||||
{
|
||||
var version = db.ApplicationVersion.FirstOrDefault(item => item.Version == Constants.Version);
|
||||
if (version == null)
|
||||
{
|
||||
version = new ApplicationVersion { Version = Constants.Version, CreatedOn = DateTime.UtcNow };
|
||||
db.ApplicationVersion.Add(version);
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string NormalizeConnectionString(string connectionString)
|
||||
{
|
||||
var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString();
|
||||
|
@ -0,0 +1,9 @@
|
||||
using Oqtane.Models;
|
||||
|
||||
namespace Oqtane.Infrastructure
|
||||
{
|
||||
public interface IUpgradeManager
|
||||
{
|
||||
void Upgrade(Tenant tenant, string version);
|
||||
}
|
||||
}
|
93
Oqtane.Server/Infrastructure/UpgradeManager.cs
Normal file
93
Oqtane.Server/Infrastructure/UpgradeManager.cs
Normal file
@ -0,0 +1,93 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Oqtane.Extensions;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Repository;
|
||||
using Oqtane.Shared;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Oqtane.Infrastructure
|
||||
{
|
||||
public class UpgradeManager : IUpgradeManager
|
||||
{
|
||||
private readonly IAliasRepository _aliases;
|
||||
private readonly IServiceScopeFactory _serviceScopeFactory;
|
||||
|
||||
public UpgradeManager(IAliasRepository aliases, IServiceScopeFactory serviceScopeFactory)
|
||||
{
|
||||
_aliases = aliases;
|
||||
_serviceScopeFactory = serviceScopeFactory;
|
||||
}
|
||||
|
||||
public void Upgrade(Tenant tenant, string version)
|
||||
{
|
||||
// core framework upgrade logic - note that you can check if current tenant is Master if you only want to execute logic once
|
||||
var pageTemplates = new List<PageTemplate>();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case "0.9.0":
|
||||
// add a page to all existing sites on upgrade
|
||||
|
||||
//pageTemplates.Add(new PageTemplate
|
||||
//{
|
||||
// Name = "Test",
|
||||
// Parent = "",
|
||||
// Path = "test",
|
||||
// Icon = Icons.Badge,
|
||||
// IsNavigation = true,
|
||||
// IsPersonalizable = false,
|
||||
// EditMode = false,
|
||||
// PagePermissions = new List<Permission>
|
||||
// {
|
||||
// new Permission(PermissionNames.View, Constants.AdminRole, true),
|
||||
// new Permission(PermissionNames.View, Constants.AllUsersRole, true),
|
||||
// new Permission(PermissionNames.Edit, Constants.AdminRole, true)
|
||||
// }.EncodePermissions(),
|
||||
// PageTemplateModules = new List<PageTemplateModule>
|
||||
// {
|
||||
// new PageTemplateModule
|
||||
// {
|
||||
// ModuleDefinitionName = typeof(Oqtane.Modules.Admin.Login.Index).ToModuleDefinitionName(), Title = "Test", Pane = "Content",
|
||||
// ModulePermissions = new List<Permission>
|
||||
// {
|
||||
// new Permission(PermissionNames.View, Constants.AdminRole, true),
|
||||
// new Permission(PermissionNames.View, Constants.AllUsersRole, true),
|
||||
// new Permission(PermissionNames.Edit, Constants.AdminRole, true)
|
||||
// }.EncodePermissions(),
|
||||
// Content = ""
|
||||
// }
|
||||
// }
|
||||
//});
|
||||
CreateSitePages(tenant, pageTemplates);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateSitePages(Tenant tenant, List<PageTemplate> pageTemplates)
|
||||
{
|
||||
if (pageTemplates.Count != 0)
|
||||
{
|
||||
var processed = new List<Site>();
|
||||
foreach (Alias alias in _aliases.GetAliases().Where(item => item.TenantId == tenant.TenantId))
|
||||
{
|
||||
if (!processed.Exists(item => item.SiteId == alias.SiteId))
|
||||
{
|
||||
using (var scope = _serviceScopeFactory.CreateScope())
|
||||
{
|
||||
var siteState = scope.ServiceProvider.GetRequiredService<SiteState>();
|
||||
siteState.Alias = alias;
|
||||
var sites = scope.ServiceProvider.GetRequiredService<ISiteRepository>();
|
||||
var site = sites.GetSite(alias.SiteId);
|
||||
if (site != null)
|
||||
{
|
||||
sites.CreatePages(site, pageTemplates);
|
||||
}
|
||||
processed.Add(site);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
<Version>0.0.9</Version>
|
||||
<Version>0.9.0</Version>
|
||||
<Product>Oqtane</Product>
|
||||
<Authors>Shaun Walker</Authors>
|
||||
<Company>.NET Foundation</Company>
|
||||
@ -20,15 +20,13 @@
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Modules\HtmlText\Scripts\HtmlText.1.0.0.sql" />
|
||||
<EmbeddedResource Include="Modules\HtmlText\Scripts\HtmlText.Uninstall.sql" />
|
||||
<EmbeddedResource Include="Scripts\Master.00.00.00.sql" />
|
||||
<EmbeddedResource Include="Scripts\Master.00.00.01.sql" />
|
||||
<EmbeddedResource Include="Scripts\Tenant.00.00.00.sql" />
|
||||
<EmbeddedResource Include="Scripts\Tenant.00.00.01.sql" />
|
||||
<EmbeddedResource Include="Scripts\Master.0.9.0.sql" />
|
||||
<EmbeddedResource Include="Scripts\Tenant.0.9.0.sql" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="dbup" Version="4.3.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.0-preview5.20216.8" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.0-rc1.20223.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.2" />
|
||||
|
@ -21,7 +21,5 @@ namespace Oqtane.Repository
|
||||
public virtual DbSet<Tenant> Tenant { get; set; }
|
||||
public virtual DbSet<ModuleDefinition> ModuleDefinition { get; set; }
|
||||
public virtual DbSet<Job> Job { get; set; }
|
||||
|
||||
public virtual DbSet<ApplicationVersion> ApplicationVersion { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -10,5 +10,6 @@ namespace Oqtane.Repository
|
||||
Site UpdateSite(Site site);
|
||||
Site GetSite(int siteId);
|
||||
void DeleteSite(int siteId);
|
||||
void CreatePages(Site site, List<PageTemplate> pageTemplates);
|
||||
}
|
||||
}
|
||||
|
@ -731,7 +731,7 @@ namespace Oqtane.Repository
|
||||
CreatePages(site, CreateAdminPages());
|
||||
}
|
||||
|
||||
private void CreatePages(Site site, List<PageTemplate> pageTemplates)
|
||||
public void CreatePages(Site site, List<PageTemplate> pageTemplates)
|
||||
{
|
||||
List<ModuleDefinition> moduledefinitions = _moduleDefinitionRepository.GetModuleDefinitions(site.SiteId).ToList();
|
||||
foreach (PageTemplate pagetemplate in pageTemplates)
|
||||
|
@ -7,6 +7,7 @@ CREATE TABLE [dbo].[Tenant](
|
||||
[TenantId] [int] IDENTITY(1,1) NOT NULL,
|
||||
[Name] [nvarchar](100) NOT NULL,
|
||||
[DBConnectionString] [nvarchar](1024) NOT NULL,
|
||||
[Version] [nvarchar](50) NULL,
|
||||
[CreatedBy] [nvarchar](256) NOT NULL,
|
||||
[CreatedOn] [datetime] NOT NULL,
|
||||
[ModifiedBy] [nvarchar](256) NOT NULL,
|
||||
@ -91,17 +92,6 @@ CREATE TABLE [dbo].[JobLog] (
|
||||
)
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[ApplicationVersion](
|
||||
[ApplicationVersionId] [int] IDENTITY(1,1) NOT NULL,
|
||||
[Version] [nvarchar](50) NOT NULL,
|
||||
[CreatedOn] [datetime] NOT NULL
|
||||
CONSTRAINT [PK_ApplicationVersion] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[ApplicationVersionId] ASC
|
||||
)
|
||||
)
|
||||
GO
|
||||
|
||||
/*
|
||||
|
||||
Create foreign key relationships
|
@ -1,5 +0,0 @@
|
||||
/*
|
||||
|
||||
schema updates
|
||||
|
||||
*/
|
@ -457,3 +457,72 @@ CREATE UNIQUE NONCLUSTERED INDEX IX_Folder ON [dbo].Folder
|
||||
[Path]
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
/*
|
||||
|
||||
ASP.NET Identity Minimal Schema
|
||||
|
||||
*/
|
||||
|
||||
CREATE TABLE [dbo].[AspNetUsers](
|
||||
[Id] [nvarchar](450) NOT NULL,
|
||||
[UserName] [nvarchar](256) NULL,
|
||||
[NormalizedUserName] [nvarchar](256) NULL,
|
||||
[Email] [nvarchar](256) NULL,
|
||||
[NormalizedEmail] [nvarchar](256) NULL,
|
||||
[EmailConfirmed] [bit] NOT NULL,
|
||||
[PasswordHash] [nvarchar](max) NULL,
|
||||
[SecurityStamp] [nvarchar](max) NULL,
|
||||
[ConcurrencyStamp] [nvarchar](max) NULL,
|
||||
[PhoneNumber] [nvarchar](max) NULL,
|
||||
[PhoneNumberConfirmed] [bit] NOT NULL,
|
||||
[TwoFactorEnabled] [bit] NOT NULL,
|
||||
[LockoutEnd] [datetimeoffset](7) NULL,
|
||||
[LockoutEnabled] [bit] NOT NULL,
|
||||
[AccessFailedCount] [int] NOT NULL,
|
||||
CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[Id] ASC
|
||||
) ON [PRIMARY]
|
||||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[AspNetUserClaims](
|
||||
[Id] [int] IDENTITY(1,1) NOT NULL,
|
||||
[UserId] [nvarchar](450) NOT NULL,
|
||||
[ClaimType] [nvarchar](max) NULL,
|
||||
[ClaimValue] [nvarchar](max) NULL,
|
||||
CONSTRAINT [PK_AspNetUserClaims] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[Id] ASC
|
||||
) ON [PRIMARY]
|
||||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX [IX_AspNetUserClaims_UserId] ON [dbo].[AspNetUserClaims]
|
||||
(
|
||||
[UserId] ASC
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX [EmailIndex] ON [dbo].[AspNetUsers]
|
||||
(
|
||||
[NormalizedEmail] ASC
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex] ON [dbo].[AspNetUsers]
|
||||
(
|
||||
[NormalizedUserName] ASC
|
||||
)
|
||||
WHERE ([NormalizedUserName] IS NOT NULL)
|
||||
ON [PRIMARY]
|
||||
GO
|
||||
|
||||
ALTER TABLE [dbo].[AspNetUserClaims] WITH CHECK ADD CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId] FOREIGN KEY([UserId])
|
||||
REFERENCES [dbo].[AspNetUsers] ([Id])
|
||||
ON DELETE CASCADE
|
||||
GO
|
||||
|
||||
ALTER TABLE [dbo].[AspNetUserClaims] CHECK CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId]
|
||||
GO
|
@ -1,68 +0,0 @@
|
||||
/*
|
||||
|
||||
ASP.NET Identity Minimal Schema
|
||||
|
||||
*/
|
||||
|
||||
CREATE TABLE [dbo].[AspNetUsers](
|
||||
[Id] [nvarchar](450) NOT NULL,
|
||||
[UserName] [nvarchar](256) NULL,
|
||||
[NormalizedUserName] [nvarchar](256) NULL,
|
||||
[Email] [nvarchar](256) NULL,
|
||||
[NormalizedEmail] [nvarchar](256) NULL,
|
||||
[EmailConfirmed] [bit] NOT NULL,
|
||||
[PasswordHash] [nvarchar](max) NULL,
|
||||
[SecurityStamp] [nvarchar](max) NULL,
|
||||
[ConcurrencyStamp] [nvarchar](max) NULL,
|
||||
[PhoneNumber] [nvarchar](max) NULL,
|
||||
[PhoneNumberConfirmed] [bit] NOT NULL,
|
||||
[TwoFactorEnabled] [bit] NOT NULL,
|
||||
[LockoutEnd] [datetimeoffset](7) NULL,
|
||||
[LockoutEnabled] [bit] NOT NULL,
|
||||
[AccessFailedCount] [int] NOT NULL,
|
||||
CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[Id] ASC
|
||||
) ON [PRIMARY]
|
||||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[AspNetUserClaims](
|
||||
[Id] [int] IDENTITY(1,1) NOT NULL,
|
||||
[UserId] [nvarchar](450) NOT NULL,
|
||||
[ClaimType] [nvarchar](max) NULL,
|
||||
[ClaimValue] [nvarchar](max) NULL,
|
||||
CONSTRAINT [PK_AspNetUserClaims] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[Id] ASC
|
||||
) ON [PRIMARY]
|
||||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX [IX_AspNetUserClaims_UserId] ON [dbo].[AspNetUserClaims]
|
||||
(
|
||||
[UserId] ASC
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE NONCLUSTERED INDEX [EmailIndex] ON [dbo].[AspNetUsers]
|
||||
(
|
||||
[NormalizedEmail] ASC
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex] ON [dbo].[AspNetUsers]
|
||||
(
|
||||
[NormalizedUserName] ASC
|
||||
)
|
||||
WHERE ([NormalizedUserName] IS NOT NULL)
|
||||
ON [PRIMARY]
|
||||
GO
|
||||
|
||||
ALTER TABLE [dbo].[AspNetUserClaims] WITH CHECK ADD CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId] FOREIGN KEY([UserId])
|
||||
REFERENCES [dbo].[AspNetUsers] ([Id])
|
||||
ON DELETE CASCADE
|
||||
GO
|
||||
|
||||
ALTER TABLE [dbo].[AspNetUserClaims] CHECK CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId]
|
||||
GO
|
@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
@ -186,6 +185,7 @@ namespace Oqtane
|
||||
services.AddTransient<IFileRepository, FileRepository>();
|
||||
services.AddTransient<ISiteTemplateRepository, SiteTemplateRepository>();
|
||||
services.AddTransient<ISqlRepository, SqlRepository>();
|
||||
services.AddTransient<IUpgradeManager, UpgradeManager>();
|
||||
|
||||
// load the external assemblies into the app domain
|
||||
services.AddOqtaneModules();
|
||||
|
@ -1,11 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Oqtane.Models
|
||||
{
|
||||
public class ApplicationVersion
|
||||
{
|
||||
public int ApplicationVersionId { get; set; }
|
||||
public string Version { get; set; }
|
||||
public DateTime CreatedOn { get; set; }
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ namespace Oqtane.Models
|
||||
public int TenantId { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string DBConnectionString { get; set; }
|
||||
public string Version { get; set; }
|
||||
public string CreatedBy { get; set; }
|
||||
public DateTime CreatedOn { get; set; }
|
||||
public string ModifiedBy { get; set; }
|
||||
|
@ -4,7 +4,7 @@
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
<Version>0.0.9</Version>
|
||||
<Version>0.9.0</Version>
|
||||
<Product>Oqtane</Product>
|
||||
<Authors>Shaun Walker</Authors>
|
||||
<Company>.NET Foundation</Company>
|
||||
|
@ -3,7 +3,8 @@
|
||||
public class Constants
|
||||
{
|
||||
public const string PackageId = "Oqtane.Framework";
|
||||
public const string Version = "0.0.9";
|
||||
public const string Version = "0.9.0";
|
||||
public const string ReleaseVersions = "0.9.0";
|
||||
|
||||
public const string PageComponent = "Oqtane.UI.ThemeBuilder, Oqtane.Client";
|
||||
public const string ContainerComponent = "Oqtane.UI.ContainerBuilder, Oqtane.Client";
|
||||
|
@ -5,7 +5,7 @@
|
||||
public const string Module = "Module";
|
||||
public const string ModuleDefinition = "ModuleDefinition";
|
||||
public const string PageModule = "PageModule";
|
||||
public const string Host = "Host";
|
||||
public const string Tenant = "Tenant";
|
||||
public const string Site = "Site";
|
||||
public const string Page = "Page";
|
||||
public const string Folder = "Folder";
|
||||
|
@ -4,7 +4,7 @@
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<OutputType>Exe</OutputType>
|
||||
<Version>0.0.9</Version>
|
||||
<Version>0.9.0</Version>
|
||||
<Product>Oqtane</Product>
|
||||
<Authors>Shaun Walker</Authors>
|
||||
<Company>.NET Foundation</Company>
|
||||
|
Reference in New Issue
Block a user