diff --git a/Oqtane.Client/Modules/Admin/Login/Index.razor b/Oqtane.Client/Modules/Admin/Login/Index.razor index 71667d96..106ee57f 100644 --- a/Oqtane.Client/Modules/Admin/Login/Index.razor +++ b/Oqtane.Client/Modules/Admin/Login/Index.razor @@ -99,7 +99,7 @@ var interop = new Interop(JsRuntime); string antiforgerytoken = await interop.GetElementByName("__RequestVerificationToken"); var fields = new { __RequestVerificationToken = antiforgerytoken, username = _username, password = _password, remember = _remember, returnurl = _returnUrl }; - await interop.SubmitForm("/pages/login/", fields); + await interop.SubmitForm($"/{PageState.Alias.AliasId}/pages/login/", fields); } else { diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 7774b379..e4bae61e 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -171,7 +171,7 @@
- +
- + @@ -190,7 +190,7 @@
- + diff --git a/Oqtane.Client/Themes/Controls/LoginBase.cs b/Oqtane.Client/Themes/Controls/LoginBase.cs index a4282c08..60bbb781 100644 --- a/Oqtane.Client/Themes/Controls/LoginBase.cs +++ b/Oqtane.Client/Themes/Controls/LoginBase.cs @@ -35,7 +35,7 @@ namespace Oqtane.Themes.Controls var interop = new Interop(jsRuntime); string antiforgerytoken = await interop.GetElementByName("__RequestVerificationToken"); var fields = new { __RequestVerificationToken = antiforgerytoken, returnurl = (PageState.Alias.Path + "/" + PageState.Page.Path) }; - await interop.SubmitForm("/pages/logout/", fields); + await interop.SubmitForm($"/{PageState.Alias.AliasId}/pages/logout/", fields); } else { diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 070e872f..a384fc58 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -471,7 +471,7 @@ } private Runtime GetRuntime() - => RuntimeInformation.IsOSPlatform(OSPlatform.Create("WEBASSEMBLY")) + => RuntimeInformation.IsOSPlatform(OSPlatform.Create("BROWSER")) ? Runtime.WebAssembly : Runtime.Server; } diff --git a/Oqtane.Server/Controllers/AliasController.cs b/Oqtane.Server/Controllers/AliasController.cs index 46dff2de..0bbdde97 100644 --- a/Oqtane.Server/Controllers/AliasController.cs +++ b/Oqtane.Server/Controllers/AliasController.cs @@ -14,7 +14,7 @@ using Microsoft.AspNetCore.Http; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class AliasController : Controller { private readonly IAliasRepository _aliases; diff --git a/Oqtane.Server/Controllers/FileController.cs b/Oqtane.Server/Controllers/FileController.cs index d6e94644..6c3223c9 100644 --- a/Oqtane.Server/Controllers/FileController.cs +++ b/Oqtane.Server/Controllers/FileController.cs @@ -21,7 +21,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class FileController : Controller { private readonly IWebHostEnvironment _environment; diff --git a/Oqtane.Server/Controllers/FolderController.cs b/Oqtane.Server/Controllers/FolderController.cs index d8c06445..68a01e23 100644 --- a/Oqtane.Server/Controllers/FolderController.cs +++ b/Oqtane.Server/Controllers/FolderController.cs @@ -14,7 +14,7 @@ using System.IO; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class FolderController : Controller { private readonly IFolderRepository _folders; diff --git a/Oqtane.Server/Controllers/InstallationController.cs b/Oqtane.Server/Controllers/InstallationController.cs index b930db48..b16f54f6 100644 --- a/Oqtane.Server/Controllers/InstallationController.cs +++ b/Oqtane.Server/Controllers/InstallationController.cs @@ -7,7 +7,7 @@ using Oqtane.Infrastructure; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class InstallationController : Controller { private readonly IConfigurationRoot _config; diff --git a/Oqtane.Server/Controllers/JobController.cs b/Oqtane.Server/Controllers/JobController.cs index 6d5c5c7b..8e1993aa 100644 --- a/Oqtane.Server/Controllers/JobController.cs +++ b/Oqtane.Server/Controllers/JobController.cs @@ -12,7 +12,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class JobController : Controller { private readonly IJobRepository _jobs; diff --git a/Oqtane.Server/Controllers/JobLogController.cs b/Oqtane.Server/Controllers/JobLogController.cs index 15b2714b..0c3f8bc5 100644 --- a/Oqtane.Server/Controllers/JobLogController.cs +++ b/Oqtane.Server/Controllers/JobLogController.cs @@ -9,7 +9,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class JobLogController : Controller { private readonly IJobLogRepository _jobLogs; diff --git a/Oqtane.Server/Controllers/LogController.cs b/Oqtane.Server/Controllers/LogController.cs index 9e62bd0c..8cccfd12 100644 --- a/Oqtane.Server/Controllers/LogController.cs +++ b/Oqtane.Server/Controllers/LogController.cs @@ -9,7 +9,7 @@ using Oqtane.Shared; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class LogController : Controller { private readonly ILogManager _logger; diff --git a/Oqtane.Server/Controllers/ModuleController.cs b/Oqtane.Server/Controllers/ModuleController.cs index e87a7a5a..1afc13d6 100644 --- a/Oqtane.Server/Controllers/ModuleController.cs +++ b/Oqtane.Server/Controllers/ModuleController.cs @@ -11,7 +11,7 @@ using Oqtane.Security; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class ModuleController : Controller { private readonly IModuleRepository _modules; diff --git a/Oqtane.Server/Controllers/ModuleDefinitionController.cs b/Oqtane.Server/Controllers/ModuleDefinitionController.cs index 673e42b3..7ef9f7e1 100644 --- a/Oqtane.Server/Controllers/ModuleDefinitionController.cs +++ b/Oqtane.Server/Controllers/ModuleDefinitionController.cs @@ -17,7 +17,7 @@ using Microsoft.Extensions.DependencyInjection; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class ModuleDefinitionController : Controller { private readonly IModuleDefinitionRepository _moduleDefinitions; diff --git a/Oqtane.Server/Controllers/NotificationController.cs b/Oqtane.Server/Controllers/NotificationController.cs index ebf7489b..5310f5c7 100644 --- a/Oqtane.Server/Controllers/NotificationController.cs +++ b/Oqtane.Server/Controllers/NotificationController.cs @@ -10,7 +10,7 @@ using Oqtane.Security; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class NotificationController : Controller { private readonly INotificationRepository _notifications; diff --git a/Oqtane.Server/Controllers/PackageController.cs b/Oqtane.Server/Controllers/PackageController.cs index a6ea13ef..51194245 100644 --- a/Oqtane.Server/Controllers/PackageController.cs +++ b/Oqtane.Server/Controllers/PackageController.cs @@ -15,7 +15,7 @@ using Oqtane.Shared; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class PackageController : Controller { private readonly IWebHostEnvironment _environment; diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs index 09210bce..16afb06e 100644 --- a/Oqtane.Server/Controllers/PageController.cs +++ b/Oqtane.Server/Controllers/PageController.cs @@ -13,7 +13,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class PageController : Controller { private readonly IPageRepository _pages; diff --git a/Oqtane.Server/Controllers/PageModuleController.cs b/Oqtane.Server/Controllers/PageModuleController.cs index d4712be6..f2c0d489 100644 --- a/Oqtane.Server/Controllers/PageModuleController.cs +++ b/Oqtane.Server/Controllers/PageModuleController.cs @@ -11,7 +11,7 @@ using Oqtane.Security; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class PageModuleController : Controller { private readonly IPageModuleRepository _pageModules; diff --git a/Oqtane.Server/Controllers/ProfileController.cs b/Oqtane.Server/Controllers/ProfileController.cs index aad21208..aa1158ac 100644 --- a/Oqtane.Server/Controllers/ProfileController.cs +++ b/Oqtane.Server/Controllers/ProfileController.cs @@ -9,7 +9,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class ProfileController : Controller { private readonly IProfileRepository _profiles; diff --git a/Oqtane.Server/Controllers/RoleController.cs b/Oqtane.Server/Controllers/RoleController.cs index 956fad8f..418382c5 100644 --- a/Oqtane.Server/Controllers/RoleController.cs +++ b/Oqtane.Server/Controllers/RoleController.cs @@ -9,7 +9,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class RoleController : Controller { private readonly IRoleRepository _roles; diff --git a/Oqtane.Server/Controllers/SettingController.cs b/Oqtane.Server/Controllers/SettingController.cs index 44437344..e9be3798 100644 --- a/Oqtane.Server/Controllers/SettingController.cs +++ b/Oqtane.Server/Controllers/SettingController.cs @@ -10,7 +10,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class SettingController : Controller { private readonly ISettingRepository _settings; diff --git a/Oqtane.Server/Controllers/SiteController.cs b/Oqtane.Server/Controllers/SiteController.cs index e619e67f..c358ea3c 100644 --- a/Oqtane.Server/Controllers/SiteController.cs +++ b/Oqtane.Server/Controllers/SiteController.cs @@ -10,7 +10,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class SiteController : Controller { private readonly ISiteRepository _sites; diff --git a/Oqtane.Server/Controllers/SiteTemplateController.cs b/Oqtane.Server/Controllers/SiteTemplateController.cs index c74e69a4..2f709fb1 100644 --- a/Oqtane.Server/Controllers/SiteTemplateController.cs +++ b/Oqtane.Server/Controllers/SiteTemplateController.cs @@ -5,7 +5,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class SiteTemplateController : Controller { private readonly ISiteTemplateRepository _siteTemplates; diff --git a/Oqtane.Server/Controllers/SqlController.cs b/Oqtane.Server/Controllers/SqlController.cs index a884ab35..5bce5a92 100644 --- a/Oqtane.Server/Controllers/SqlController.cs +++ b/Oqtane.Server/Controllers/SqlController.cs @@ -14,7 +14,7 @@ using System; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class SqlController : Controller { private readonly ITenantRepository _tenants; diff --git a/Oqtane.Server/Controllers/SystemController.cs b/Oqtane.Server/Controllers/SystemController.cs index bfd8d97a..2f5d7339 100644 --- a/Oqtane.Server/Controllers/SystemController.cs +++ b/Oqtane.Server/Controllers/SystemController.cs @@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Hosting; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class SystemController : Controller { private readonly IWebHostEnvironment _environment; diff --git a/Oqtane.Server/Controllers/TenantController.cs b/Oqtane.Server/Controllers/TenantController.cs index bfacbd1c..0f76fc78 100644 --- a/Oqtane.Server/Controllers/TenantController.cs +++ b/Oqtane.Server/Controllers/TenantController.cs @@ -9,7 +9,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class TenantController : Controller { private readonly ITenantRepository _tenants; diff --git a/Oqtane.Server/Controllers/ThemeController.cs b/Oqtane.Server/Controllers/ThemeController.cs index 5f516851..fa182dfa 100644 --- a/Oqtane.Server/Controllers/ThemeController.cs +++ b/Oqtane.Server/Controllers/ThemeController.cs @@ -15,7 +15,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class ThemeController : Controller { private readonly IThemeRepository _themes; diff --git a/Oqtane.Server/Controllers/UserController.cs b/Oqtane.Server/Controllers/UserController.cs index 14ff6f60..fce08020 100644 --- a/Oqtane.Server/Controllers/UserController.cs +++ b/Oqtane.Server/Controllers/UserController.cs @@ -16,7 +16,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class UserController : Controller { private readonly IUserRepository _users; diff --git a/Oqtane.Server/Controllers/UserRoleController.cs b/Oqtane.Server/Controllers/UserRoleController.cs index ca1d1929..b4398aa9 100644 --- a/Oqtane.Server/Controllers/UserRoleController.cs +++ b/Oqtane.Server/Controllers/UserRoleController.cs @@ -9,7 +9,7 @@ using Oqtane.Repository; namespace Oqtane.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class UserRoleController : Controller { private readonly IUserRoleRepository _userRoles; diff --git a/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs b/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs index 5eb6f37f..fc9495fc 100644 --- a/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs +++ b/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs @@ -11,7 +11,7 @@ using Oqtane.Infrastructure; namespace Oqtane.Modules.HtmlText.Controllers { - [Route("{site}/api/[controller]")] + [Route("{alias}/api/[controller]")] public class HtmlTextController : Controller { private readonly IHtmlTextRepository _htmlText; diff --git a/Oqtane.Server/Pages/Login.cshtml b/Oqtane.Server/Pages/Login.cshtml index f2eab15f..92433015 100644 --- a/Oqtane.Server/Pages/Login.cshtml +++ b/Oqtane.Server/Pages/Login.cshtml @@ -1,3 +1,3 @@ -@page "/pages/login" +@page "/{alias}/pages/login" @namespace Oqtane.Pages @model Oqtane.Pages.LoginModel diff --git a/Oqtane.Server/Pages/Logout.cshtml b/Oqtane.Server/Pages/Logout.cshtml index f114ee1e..d477046c 100644 --- a/Oqtane.Server/Pages/Logout.cshtml +++ b/Oqtane.Server/Pages/Logout.cshtml @@ -1,3 +1,3 @@ -@page "/pages/logout" +@page "/{alias}/pages/logout" @namespace Oqtane.Pages @model Oqtane.Pages.LogoutModel diff --git a/Oqtane.Server/Repository/TenantResolver.cs b/Oqtane.Server/Repository/TenantResolver.cs index 47f0e0bd..cd273b3a 100644 --- a/Oqtane.Server/Repository/TenantResolver.cs +++ b/Oqtane.Server/Repository/TenantResolver.cs @@ -27,7 +27,7 @@ namespace Oqtane.Repository if (accessor.HttpContext != null) { string[] segments = accessor.HttpContext.Request.Path.Value.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); - if (segments.Length > 1 && segments[1] == "api" && segments[0] != "~") + if (segments.Length > 1 && (segments[1] == "api" || segments[1] == "pages") && segments[0] != "~") { aliasId = int.Parse(segments[0]); }