allow custom urls in UserProfile component

This commit is contained in:
sbwalker
2025-03-31 08:38:30 -04:00
parent a57fbea0cc
commit 99f2158e55

View File

@ -2,19 +2,18 @@
@using System.Net @using System.Net
@inherits ThemeControlBase @inherits ThemeControlBase
@inject IStringLocalizer<UserProfile> Localizer @inject IStringLocalizer<UserProfile> Localizer
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
<span class="app-profile"> <span class="app-profile">
@if (PageState.User != null) @if (PageState.User != null)
{ {
<a href="@NavigateUrl("profile", "returnurl=" + _returnurl)" class="@CssClass">@PageState.User.Username</a> <a href="@_profileurl" class="@CssClass">@PageState.User.Username</a>
} }
else else
{ {
@if (ShowRegister && PageState.Site.AllowRegistration) @if (ShowRegister && PageState.Site.AllowRegistration)
{ {
<a href="@NavigateUrl("register", "returnurl=" + _returnurl)" class="@CssClass">@Localizer["Register"]</a> <a href="@_registerurl" class="@CssClass">@Localizer["Register"]</a>
} }
} }
</span> </span>
@ -23,23 +22,50 @@
[Parameter] [Parameter]
public bool ShowRegister { get; set; } public bool ShowRegister { get; set; }
[Parameter] [Parameter]
public string CssClass { get; set; } = "btn btn-primary"; public string CssClass { get; set; } = "btn btn-primary";
[Parameter]
public string RegisterUrl { get; set; } // optional parameter to specify a custom registration url
[Parameter]
public string ProfileUrl { get; set; } // optional parameter to specify a custom user profile url
private string _registerurl = "";
private string _profileurl = "";
private string _returnurl = ""; private string _returnurl = "";
protected override void OnParametersSet() protected override void OnParametersSet()
{ {
if (!PageState.QueryString.ContainsKey("returnurl")) if (!PageState.QueryString.ContainsKey("returnurl"))
{ {
// remember current url // remember current url
_returnurl = WebUtility.UrlEncode(PageState.Route.PathAndQuery); _returnurl = WebUtility.UrlEncode(PageState.Route.PathAndQuery);
} }
else else
{ {
// use existing value // use existing value
_returnurl = PageState.QueryString["returnurl"]; _returnurl = PageState.QueryString["returnurl"];
} }
if (!string.IsNullOrEmpty(RegisterUrl))
{
_registerurl = RegisterUrl + "?returnurl=" + (RegisterUrl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl);
}
else
{
_registerurl = NavigateUrl("register", "returnurl=" + _returnurl);
}
if (!string.IsNullOrEmpty(ProfileUrl))
{
_registerurl = ProfileUrl + "?returnurl=" + (ProfileUrl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl);
}
else
{
_registerurl = NavigateUrl("profile", "returnurl=" + _returnurl);
}
} }
} }