diff --git a/Volo.Abp.sln b/Volo.Abp.sln
index 3e482dc366..b4bf0d2be1 100644
--- a/Volo.Abp.sln
+++ b/Volo.Abp.sln
@@ -234,13 +234,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiTenancy.Domai
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiTenancy.Domain.Shared", "src\Volo.Abp.MultiTenancy.Domain.Shared\Volo.Abp.MultiTenancy.Domain.Shared.csproj", "{4605A64C-B4E0-4A04-9BF2-501027375258}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MultiTenancy.Application.Contracts", "src\Volo.Abp.MultiTenancy.Application.Contracts\Volo.Abp.MultiTenancy.Application.Contracts.csproj", "{6A99C679-EA3B-4324-8D6B-89DB8C7D3DA0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiTenancy.Application.Contracts", "src\Volo.Abp.MultiTenancy.Application.Contracts\Volo.Abp.MultiTenancy.Application.Contracts.csproj", "{6A99C679-EA3B-4324-8D6B-89DB8C7D3DA0}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MultiTenancy.Application", "src\Volo.Abp.MultiTenancy.Application\Volo.Abp.MultiTenancy.Application.csproj", "{FCEC7C9D-067F-452B-98C9-1878F7EA02EB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiTenancy.Application", "src\Volo.Abp.MultiTenancy.Application\Volo.Abp.MultiTenancy.Application.csproj", "{FCEC7C9D-067F-452B-98C9-1878F7EA02EB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Abp.MultiTenancy", "Abp.MultiTenancy", "{3CE22CAC-4B27-4EEC-A35E-C01219ED6E99}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MultiTenancy.Application.Tests", "test\Volo.Abp.MultiTenancy.Application.Tests\Volo.Abp.MultiTenancy.Application.Tests.csproj", "{B65973F1-9EE0-4914-B6F2-D88F753E1D21}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiTenancy.Application.Tests", "test\Volo.Abp.MultiTenancy.Application.Tests\Volo.Abp.MultiTenancy.Application.Tests.csproj", "{B65973F1-9EE0-4914-B6F2-D88F753E1D21}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MultiTenancy.Web", "src\Volo.Abp.MultiTenancy.Web\Volo.Abp.MultiTenancy.Web.csproj", "{0808036D-065B-4525-BF30-CBCEA062F8E9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -628,6 +630,10 @@ Global
{B65973F1-9EE0-4914-B6F2-D88F753E1D21}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B65973F1-9EE0-4914-B6F2-D88F753E1D21}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B65973F1-9EE0-4914-B6F2-D88F753E1D21}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0808036D-065B-4525-BF30-CBCEA062F8E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0808036D-065B-4525-BF30-CBCEA062F8E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0808036D-065B-4525-BF30-CBCEA062F8E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0808036D-065B-4525-BF30-CBCEA062F8E9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -745,6 +751,7 @@ Global
{FCEC7C9D-067F-452B-98C9-1878F7EA02EB} = {CA154803-3589-47B3-B7CB-B18F94FE1EB6}
{3CE22CAC-4B27-4EEC-A35E-C01219ED6E99} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{B65973F1-9EE0-4914-B6F2-D88F753E1D21} = {3CE22CAC-4B27-4EEC-A35E-C01219ED6E99}
+ {0808036D-065B-4525-BF30-CBCEA062F8E9} = {CA154803-3589-47B3-B7CB-B18F94FE1EB6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}
diff --git a/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj b/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj
index b98d7ce2f5..50e70c137d 100644
--- a/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj
+++ b/src/AbpDesk/AbpDesk.Web.Mvc/AbpDesk.Web.Mvc.csproj
@@ -27,6 +27,8 @@
+
+
diff --git a/src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs b/src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs
index d34ce6b15d..961e80f919 100644
--- a/src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs
+++ b/src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs
@@ -27,6 +27,8 @@ using Volo.Abp.Modularity;
using Volo.Abp.Ui.Navigation;
using Volo.Abp.VirtualFileSystem;
using Volo.Abp.IdentityServer.Jwt;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp.MultiTenancy.Web;
namespace AbpDesk.Web.Mvc
{
@@ -42,7 +44,9 @@ namespace AbpDesk.Web.Mvc
typeof(AbpAutofacModule),
typeof(AbpIdentityServerDomainModule),
typeof(AbpIdentityServerEntityFrameworkCoreModule),
- typeof(AbpAspNetCoreMultiTenancyModule)
+ typeof(AbpAspNetCoreMultiTenancyModule),
+ typeof(AbpMultiTenancyWebModule),
+ typeof(AbpMultiTenancyApplicationModule)
)]
public class AbpDeskWebMvcModule : AbpModule //TODO: Rename to AbpDeskWebModule, change default namespace to AbpDesk.Web
{
@@ -120,6 +124,7 @@ namespace AbpDesk.Web.Mvc
options.FileSets.ReplaceEmbeddedByPyhsical(Path.Combine(hostingEnvironment.ContentRootPath, "..\\..\\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap"));
options.FileSets.ReplaceEmbeddedByPyhsical(Path.Combine(hostingEnvironment.ContentRootPath, "..\\..\\Volo.Abp.Account.Web"));
options.FileSets.ReplaceEmbeddedByPyhsical(Path.Combine(hostingEnvironment.ContentRootPath, "..\\..\\Volo.Abp.Identity.Web"));
+ options.FileSets.ReplaceEmbeddedByPyhsical(Path.Combine(hostingEnvironment.ContentRootPath, "..\\..\\Volo.Abp.MultiTenancy.Web"));
});
}
}
diff --git a/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs b/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs
index 16b0be3c75..a0bb65dbef 100644
--- a/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs
+++ b/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs
@@ -41,7 +41,6 @@ namespace Volo.Abp.Identity.Web
services.Configure(options =>
{
- //options.Resources.AddVirtual("en");
options.Resources.AddVirtualJson("en", "/Localization/Resources/AbpIdentity");
});
diff --git a/src/Volo.Abp.MultiTenancy.Web/AbpMultiTenancyWebModule.cs b/src/Volo.Abp.MultiTenancy.Web/AbpMultiTenancyWebModule.cs
new file mode 100644
index 0000000000..c7ba169938
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/AbpMultiTenancyWebModule.cs
@@ -0,0 +1,38 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
+using Volo.Abp.AutoMapper;
+using Volo.Abp.Localization;
+using Volo.Abp.Modularity;
+using Volo.Abp.MultiTenancy.Web.Localization.Resources.AbpMultiTenancy;
+using Volo.Abp.MultiTenancy.Web.Navigation;
+using Volo.Abp.Ui.Navigation;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.MultiTenancy.Web
+{
+ [DependsOn(typeof(AbpMultiTenancyApplicationContractsModule))]
+ [DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))]
+ [DependsOn(typeof(AbpAutoMapperModule))]
+ public class AbpMultiTenancyWebModule : AbpModule
+ {
+ public override void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAssemblyOf();
+
+ services.Configure(options =>
+ {
+ options.MenuContributors.Add(new AbpMultiTenancyWebMainMenuContributor());
+ });
+
+ services.Configure(options =>
+ {
+ options.FileSets.AddEmbedded("Volo.Abp.MultiTenancy.Web");
+ });
+
+ services.Configure(options =>
+ {
+ options.Resources.AddVirtualJson("en", "/Localization/Resources/AbpMultiTenancy");
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/IdentityResource.cs b/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/IdentityResource.cs
new file mode 100644
index 0000000000..bdb618d6dc
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/IdentityResource.cs
@@ -0,0 +1,12 @@
+using Volo.Abp.Localization;
+using Volo.Abp.Localization.Resources.AbpValidation;
+
+namespace Volo.Abp.MultiTenancy.Web.Localization.Resources.AbpMultiTenancy
+{
+ [ShortLocalizationResourceName("AbpMultiTenancy")]
+ [InheritResource(typeof(AbpValidationResource))]
+ public class AbpMultiTenancyResource
+ {
+
+ }
+}
diff --git a/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/en.json b/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/en.json
new file mode 100644
index 0000000000..92e4e9582b
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/en.json
@@ -0,0 +1,6 @@
+{
+ "culture": "en",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/tr.json b/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/tr.json
new file mode 100644
index 0000000000..6c8cd12915
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Localization/Resources/AbpMultiTenancy/tr.json
@@ -0,0 +1,6 @@
+{
+ "culture": "tr",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.MultiTenancy.Web/Navigation/AbpIdentityWebMainMenuContributor.cs b/src/Volo.Abp.MultiTenancy.Web/Navigation/AbpIdentityWebMainMenuContributor.cs
new file mode 100644
index 0000000000..a1177dd623
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Navigation/AbpIdentityWebMainMenuContributor.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Volo.Abp.Ui.Navigation;
+
+namespace Volo.Abp.MultiTenancy.Web.Navigation
+{
+ public class AbpMultiTenancyWebMainMenuContributor : IMenuContributor
+ {
+ public Task ConfigureMenuAsync(MenuConfigurationContext context)
+ {
+ if (context.Menu.Name != StandardMenus.Main)
+ {
+ return Task.CompletedTask;
+ }
+
+ context.Menu
+ .AddItem(
+ new ApplicationMenuItem("MultiTenancy", "MultiTenancy")
+ .AddItem(new ApplicationMenuItem("Tenants", "Tenants", url: "/MultiTenancy/Tenants"))
+ );
+
+ return Task.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.MultiTenancy.Web/Pages/MultiTenancy/Tenants/Index.cshtml b/src/Volo.Abp.MultiTenancy.Web/Pages/MultiTenancy/Tenants/Index.cshtml
new file mode 100644
index 0000000000..1bcf45b39c
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Pages/MultiTenancy/Tenants/Index.cshtml
@@ -0,0 +1,7 @@
+@page
+@using Volo.Abp.MultiTenancy.Web.Pages.MultiTenancy.Tenants
+@model IndexModel
+@{
+}
+
+Tenants page...
\ No newline at end of file
diff --git a/src/Volo.Abp.MultiTenancy.Web/Pages/MultiTenancy/Tenants/Index.cshtml.cs b/src/Volo.Abp.MultiTenancy.Web/Pages/MultiTenancy/Tenants/Index.cshtml.cs
new file mode 100644
index 0000000000..f064c45145
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Pages/MultiTenancy/Tenants/Index.cshtml.cs
@@ -0,0 +1,12 @@
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Volo.Abp.MultiTenancy.Web.Pages.MultiTenancy.Tenants
+{
+ public class IndexModel : PageModel
+ {
+ public void OnGet()
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.MultiTenancy.Web/Properties/launchSettings.json b/src/Volo.Abp.MultiTenancy.Web/Properties/launchSettings.json
new file mode 100644
index 0000000000..81ae15bd19
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:62977/",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "Volo.Abp.MultiTenancy.Web": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "http://localhost:62978/"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.MultiTenancy.Web/Volo.Abp.MultiTenancy.Web.csproj b/src/Volo.Abp.MultiTenancy.Web/Volo.Abp.MultiTenancy.Web.csproj
new file mode 100644
index 0000000000..b08faeef89
--- /dev/null
+++ b/src/Volo.Abp.MultiTenancy.Web/Volo.Abp.MultiTenancy.Web.csproj
@@ -0,0 +1,29 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Abp.MultiTenancy.Web
+ Volo.Abp.MultiTenancy.Web
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ Library
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+