Advertisement
Guest User

Register

a guest
Aug 20th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.Text.Encodings.Web;
  5. using System.Threading.Tasks;
  6. using Microsoft.AspNetCore.Authorization;
  7. using Microsoft.AspNetCore.Identity;
  8. using Microsoft.AspNetCore.Identity.UI.Services;
  9. using Microsoft.AspNetCore.Mvc;
  10. using Microsoft.AspNetCore.Mvc.RazorPages;
  11. using Microsoft.Extensions.Logging;
  12.  
  13. namespace SparksAuto.Areas.Identity.Pages.Account
  14. {
  15. [AllowAnonymous]
  16. public class RegisterModel : PageModel
  17. {
  18. private readonly SignInManager<IdentityUser> _signInManager;
  19. private readonly UserManager<IdentityUser> _userManager;
  20. private readonly ILogger<RegisterModel> _logger;
  21. private readonly IEmailSender _emailSender;
  22.  
  23. public RegisterModel(
  24. UserManager<IdentityUser> userManager,
  25. SignInManager<IdentityUser> signInManager,
  26. ILogger<RegisterModel> logger,
  27. IEmailSender emailSender)
  28. {
  29. _userManager = userManager;
  30. _signInManager = signInManager;
  31. _logger = logger;
  32. _emailSender = emailSender;
  33. }
  34.  
  35. [BindProperty]
  36. public InputModel Input { get; set; }
  37.  
  38. public string ReturnUrl { get; set; }
  39.  
  40. public class InputModel
  41. {
  42. [Required]
  43. [EmailAddress]
  44. [Display(Name = "Email")]
  45. public string Email { get; set; }
  46.  
  47. [Required]
  48. [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
  49. [DataType(DataType.Password)]
  50. [Display(Name = "Password")]
  51. public string Password { get; set; }
  52.  
  53. [DataType(DataType.Password)]
  54. [Display(Name = "Confirm password")]
  55. [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
  56. public string ConfirmPassword { get; set; }
  57. }
  58.  
  59. public void OnGet(string returnUrl = null)
  60. {
  61. ReturnUrl = returnUrl;
  62. }
  63.  
  64. public async Task<IActionResult> OnPostAsync(string returnUrl = null)
  65. {
  66. returnUrl = returnUrl ?? Url.Content("~/");
  67. if (ModelState.IsValid)
  68. {
  69. var user = new IdentityUser { UserName = Input.Email, Email = Input.Email };
  70. var result = await _userManager.CreateAsync(user, Input.Password);
  71. if (result.Succeeded)
  72. {
  73. _logger.LogInformation("User created a new account with password.");
  74.  
  75. var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
  76. var callbackUrl = Url.Page(
  77. "/Account/ConfirmEmail",
  78. pageHandler: null,
  79. values: new { userId = user.Id, code = code },
  80. protocol: Request.Scheme);
  81.  
  82. await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
  83. $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");
  84.  
  85. await _signInManager.SignInAsync(user, isPersistent: false);
  86. return LocalRedirect(returnUrl);
  87. }
  88. foreach (var error in result.Errors)
  89. {
  90. ModelState.AddModelError(string.Empty, error.Description);
  91. }
  92. }
  93.  
  94. // If we got this far, something failed, redisplay form
  95. return Page();
  96. }
  97. }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement