From 8b6c6beceb96e427262aed47381e6bbeeb80b83a Mon Sep 17 00:00:00 2001 From: sbwalker Date: Tue, 12 Dec 2023 13:32:33 -0500 Subject: [PATCH] refactor fix for #3539 to avoid string comparison --- .../Modules/Admin/Dashboard/Index.razor | 2 +- .../Themes/Controls/Theme/LoginBase.cs | 31 ++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Dashboard/Index.razor b/Oqtane.Client/Modules/Admin/Dashboard/Index.razor index 98729f76..69f3d9cb 100644 --- a/Oqtane.Client/Modules/Admin/Dashboard/Index.razor +++ b/Oqtane.Client/Modules/Admin/Dashboard/Index.razor @@ -13,7 +13,7 @@ { string url = NavigateUrl(p.Path);

- +

@((MarkupString)SharedLocalizer[p.Name].ToString().Replace(" ", "
"))

diff --git a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs index 0b3ce9b8..f8f71ee9 100644 --- a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs +++ b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs @@ -26,23 +26,26 @@ namespace Oqtane.Themes.Controls var allowexternallogin = (SettingService.GetSetting(PageState.Site.Settings, "ExternalLogin:ProviderType", "") != "") ? true : false; var allowsitelogin = bool.Parse(SettingService.GetSetting(PageState.Site.Settings, "LoginOptions:AllowSiteLogin", "true")); - var returnurl = WebUtility.UrlEncode(PageState.Route.PathAndQuery); - - // Check if not already actioned Login - if(!NavigationManager.Uri.ToString().Contains("login?returnurl=%2F")) + var returnurl = ""; + if (!PageState.QueryString.ContainsKey("returnurl")) { - if (allowexternallogin && !allowsitelogin) - { - // external login - NavigationManager.NavigateTo(Utilities.TenantUrl(PageState.Alias, "/pages/external?returnurl=" + returnurl), true); - } - else - { - // local login - NavigationManager.NavigateTo(NavigateUrl("login", "?returnurl=" + returnurl)); - } + returnurl = WebUtility.UrlEncode(PageState.Route.PathAndQuery); // remember current url + } + else + { + returnurl = PageState.QueryString["returnurl"]; // use existing value } + if (allowexternallogin && !allowsitelogin) + { + // external login + NavigationManager.NavigateTo(Utilities.TenantUrl(PageState.Alias, "/pages/external?returnurl=" + returnurl), true); + } + else + { + // local login + NavigationManager.NavigateTo(NavigateUrl("login", "?returnurl=" + returnurl)); + } } protected async Task LogoutUser()