mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
74 lines
2.0 KiB
Plaintext
74 lines
2.0 KiB
Plaintext
@page "/Account/ConfirmEmailChange"
|
|
|
|
@using System.Text
|
|
@using Microsoft.AspNetCore.Identity
|
|
@using Microsoft.AspNetCore.WebUtilities
|
|
@using Aaru.Server.New.Data
|
|
|
|
@inject UserManager<ApplicationUser> UserManager
|
|
@inject SignInManager<ApplicationUser> SignInManager
|
|
@inject IdentityRedirectManager RedirectManager
|
|
|
|
<PageTitle>Confirm email change</PageTitle>
|
|
|
|
<h1>Confirm email change</h1>
|
|
|
|
<StatusMessage Message="@message"/>
|
|
|
|
@code {
|
|
private string? message;
|
|
|
|
[CascadingParameter]
|
|
private HttpContext HttpContext { get; set; } = default!;
|
|
|
|
[SupplyParameterFromQuery]
|
|
private string? UserId { get; set; }
|
|
|
|
[SupplyParameterFromQuery]
|
|
private string? Email { get; set; }
|
|
|
|
[SupplyParameterFromQuery]
|
|
private string? Code { get; set; }
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if(UserId is null || Email is null || Code is null)
|
|
{
|
|
RedirectManager.RedirectToWithStatus("Account/Login", "Error: Invalid email change confirmation link.", HttpContext);
|
|
}
|
|
|
|
var user = await UserManager.FindByIdAsync(UserId);
|
|
|
|
if(user is null)
|
|
{
|
|
message = "Unable to find user with Id '{userId}'";
|
|
|
|
return;
|
|
}
|
|
|
|
var code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(Code));
|
|
var result = await UserManager.ChangeEmailAsync(user, Email, code);
|
|
|
|
if(!result.Succeeded)
|
|
{
|
|
message = "Error changing email.";
|
|
|
|
return;
|
|
}
|
|
|
|
// In our UI email and user name are one and the same, so when we update the email
|
|
// we need to update the user name.
|
|
var setUserNameResult = await UserManager.SetUserNameAsync(user, Email);
|
|
|
|
if(!setUserNameResult.Succeeded)
|
|
{
|
|
message = "Error changing user name.";
|
|
|
|
return;
|
|
}
|
|
|
|
await SignInManager.RefreshSignInAsync(user);
|
|
message = "Thank you for confirming your email change.";
|
|
}
|
|
|
|
} |