Files
marechai/Marechai/Areas/Identity/Pages/Account/RegisterConfirmation.cshtml.cs

65 lines
2.1 KiB
C#

using System.Text;
using System.Threading.Tasks;
using Marechai.Database.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.WebUtilities;
namespace Marechai.Areas.Identity.Pages.Account
{
[AllowAnonymous]
public class RegisterConfirmationModel : PageModel
{
readonly IEmailSender _sender;
readonly UserManager<ApplicationUser> _userManager;
public RegisterConfirmationModel(UserManager<ApplicationUser> userManager, IEmailSender sender)
{
_userManager = userManager;
_sender = sender;
}
public string Email { get; set; }
public bool DisplayConfirmAccountLink { get; set; }
public string EmailConfirmationUrl { get; set; }
public async Task<IActionResult> OnGetAsync(string email, string returnUrl = null)
{
if(email == null)
{
return RedirectToPage("/Index");
}
ApplicationUser user = await _userManager.FindByEmailAsync(email);
if(user == null)
{
return NotFound($"Unable to load user with email '{email}'.");
}
Email = email;
// Once you add a real email sender, you should remove this code that lets you confirm the account
DisplayConfirmAccountLink = true;
if(DisplayConfirmAccountLink)
{
string userId = await _userManager.GetUserIdAsync(user);
string code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
EmailConfirmationUrl = Url.Page("/Account/ConfirmEmail", null, new
{
area = "Identity", userId, code, returnUrl
}, Request.Scheme);
}
return Page();
}
}
}