| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Licensed to the .NET Foundation under one or more agreements.
- // The .NET Foundation licenses this file to you under the MIT license.
- #nullable disable
- using System;
- using System.Text;
- using System.Threading.Tasks;
- using bitforum.Models.User;
- 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 bitforum.Areas.Identity.Pages.Account
- {
- [AllowAnonymous]
- public class RegisterConfirmationModel : PageModel
- {
- private readonly UserManager<ApplicationUser> _userManager;
- private readonly IEmailSender _sender;
- public RegisterConfirmationModel(UserManager<ApplicationUser> userManager, IEmailSender sender)
- {
- _userManager = userManager;
- _sender = sender;
- }
- /// <summary>
- /// This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
- /// directly from your code. This API may change or be removed in future releases.
- /// </summary>
- public string Email { get; set; }
- /// <summary>
- /// This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
- /// directly from your code. This API may change or be removed in future releases.
- /// </summary>
- public bool DisplayConfirmAccountLink { get; set; }
- /// <summary>
- /// This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
- /// directly from your code. This API may change or be removed in future releases.
- /// </summary>
- public string EmailConfirmationUrl { get; set; }
- public async Task<IActionResult> OnGetAsync(string email, string returnUrl = null)
- {
- if (email == null)
- {
- return RedirectToPage("/Index");
- }
- returnUrl = returnUrl ?? Url.Content("~/");
- var 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)
- {
- var userId = await _userManager.GetUserIdAsync(user);
- var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
- code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
- EmailConfirmationUrl = Url.Page(
- "/Account/ConfirmEmail",
- pageHandler: null,
- values: new { area = "Identity", userId = userId, code = code, returnUrl = returnUrl },
- protocol: Request.Scheme);
- }
- return Page();
- }
- }
- }
|