Skip to content

Commit

Permalink
feat(templates): improve return-url implementation in Boilerplate #9854
Browse files Browse the repository at this point in the history
… (#9856)
  • Loading branch information
ysmoradi authored Feb 11, 2025
1 parent e2ede27 commit 4fcf1a9
Show file tree
Hide file tree
Showing 7 changed files with 10 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
<BitStack Horizontal Gap="0.5rem" VerticalAlign="BitAlignment.Center">
@if (isCrossLayoutPage is true)
{
<BitButton Href="@($"{Urls.SignUpPage}?return-url={NavigationManager.GetRelativePath()}")">
<BitButton Href="@($"{Urls.SignUpPage}?return-url={Uri.EscapeDataString(NavigationManager.GetRelativePath())}")">
@Localizer[nameof(AppStrings.SignUp)]
</BitButton>
<BitButton Href="@($"{Urls.SignInPage}?return-url={NavigationManager.GetRelativePath()}")" Variant="BitVariant.Text" Color="BitColor.Tertiary">
<BitButton Href="@($"{Urls.SignInPage}?return-url={Uri.EscapeDataString(NavigationManager.GetRelativePath())}")" Variant="BitVariant.Text" Color="BitColor.Tertiary">
@Localizer[nameof(AppStrings.SignIn)]
</BitButton>
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@

<BitText Align="BitTextAlign.Center" Typography="BitTypography.Body2">
@Localizer[nameof(AppStrings.DontHaveAccountMessage)]
<BitLink Href="@($"{Urls.SignUpPage}?return-url={ReturnUrlQueryString}")">@Localizer[nameof(AppStrings.SignUp)]</BitLink>
<BitLink Href="@($"{Urls.SignUpPage}?return-url={Uri.EscapeDataString(ReturnUrlQueryString ?? "")}")">@Localizer[nameof(AppStrings.SignUp)]</BitLink>
</BitText>
</BitStack>
</BitStack>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@
<br />
<BitText Typography="BitTypography.Body2">
@Localizer[nameof(AppStrings.SignInMessageInSignUp)]
<BitLink Href="@($"{Urls.SignInPage}?return-url={ReturnUrlQueryString}")">@Localizer[nameof(AppStrings.SignIn)]</BitLink>
<BitLink Href="@($"{Urls.SignInPage}?return-url={Uri.EscapeDataString(ReturnUrlQueryString ?? "")}")">@Localizer[nameof(AppStrings.SignIn)]</BitLink>
@Localizer[nameof(AppStrings.Or)]
<BitLink Href="@($"{Urls.ConfirmPage}?email={Uri.EscapeDataString(signUpModel.Email??"")}&phoneNumber={Uri.EscapeDataString(signUpModel.PhoneNumber??"")}&return-url={ReturnUrlQueryString}")">
<BitLink Href="@($"{Urls.ConfirmPage}?email={Uri.EscapeDataString(signUpModel.Email??"")}&phoneNumber={Uri.EscapeDataString(signUpModel.PhoneNumber??"")}&return-url={Uri.EscapeDataString(ReturnUrlQueryString)}")">
@Localizer[nameof(AppStrings.Confirm)]
</BitLink>
</BitText>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ private async Task SignOut()
{
await AuthManager.SignOut(CurrentCancellationToken);
var returnUrl = ReturnUrl ?? NavigationManager.GetRelativePath();
NavigationManager.NavigateTo(Urls.SignInPage + (string.IsNullOrEmpty(returnUrl) ? string.Empty : $"?return-url={returnUrl}"));
NavigationManager.NavigateTo(Urls.SignInPage + (string.IsNullOrEmpty(returnUrl) ? string.Empty : $"?return-url={Uri.EscapeDataString(returnUrl)}"));
}
}

Expand All @@ -58,6 +58,6 @@ protected override async Task OnAfterFirstRenderAsync()

await AuthManager.SignOut(CurrentCancellationToken);
var returnUrl = ReturnUrl ?? NavigationManager.GetRelativePath();
NavigationManager.NavigateTo(Urls.SignInPage + (string.IsNullOrEmpty(returnUrl) ? string.Empty : $"?return-url={returnUrl}"));
NavigationManager.NavigateTo(Urls.SignInPage + (string.IsNullOrEmpty(returnUrl) ? string.Empty : $"?return-url={Uri.EscapeDataString(returnUrl)}"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ private async Task SendConfirmEmailToken(User user, string? returnUrl, Cancellat

var email = user.Email!;
var token = await userManager.GenerateUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, FormattableString.Invariant($"VerifyEmail:{email},{user.EmailTokenRequestedOn?.ToUniversalTime()}"));
var link = new Uri(HttpContext.Request.GetWebAppUrl(), $"{Urls.ConfirmPage}?email={Uri.EscapeDataString(email)}&emailToken={Uri.EscapeDataString(token)}&culture={CultureInfo.CurrentUICulture.Name}&return-url={returnUrl}");
var link = new Uri(HttpContext.Request.GetWebAppUrl(), $"{Urls.ConfirmPage}?email={Uri.EscapeDataString(email)}&emailToken={Uri.EscapeDataString(token)}&culture={CultureInfo.CurrentUICulture.Name}&return-url={Uri.EscapeDataString(returnUrl)}");

await emailService.SendEmailToken(user, email, token, link, cancellationToken);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ public async Task<ActionResult> SocialSignedIn()

if (string.IsNullOrEmpty(returnUrl) is false)
{
qs += $"&return-url={Uri.EscapeDataString(returnUrl)}";
qs += $"&return-url={Uri.EscapeDataString(Uri.EscapeDataString(returnUrl))}";
}

var url = $"{Urls.SignInPage}?otp={Uri.EscapeDataString(token)}&{qs}&culture={CultureInfo.CurrentUICulture.Name}";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public override async Task AssertSignOut()
if (ReturnUrl is null)
await Assertions.Expect(Page).ToHaveURLAsync(new Uri(WebAppServerAddress, Urls.SignInPage).ToString());
else
await Assertions.Expect(Page).ToHaveURLAsync(new Uri(WebAppServerAddress, $"{Urls.SignInPage}?return-url={ReturnUrl}").ToString());
await Assertions.Expect(Page).ToHaveURLAsync(new Uri(WebAppServerAddress, $"{Urls.SignInPage}?return-url={Uri.EscapeDataString(ReturnUrl)}").ToString());
}

private void AssertReturnUrl()
Expand Down

0 comments on commit 4fcf1a9

Please sign in to comment.