profileShare

rasmusjy / splitapp-backend-modular-monolith

Read-only snapshot

No repository description.

main default branch 418 files Expires Sep 13, 2026, 9:06 AM
Register.cshtml.cs 2,779 bytes
1 using System.ComponentModel.DataAnnotations;
2 using SplitApp.Modules.Users.Domain.Entities;
3 using Microsoft.AspNetCore.Identity;
4 using Microsoft.AspNetCore.Mvc;
5 using Microsoft.AspNetCore.Mvc.RazorPages;
6
7 namespace SplitApp.WebApp.Areas.Identity.Pages.Account;
8
9 public class RegisterModel : PageModel
10 {
11 private readonly SignInManager<AppUser> _signInManager;
12 private readonly UserManager<AppUser> _userManager;
13
14 public RegisterModel(
15 UserManager<AppUser> userManager,
16 SignInManager<AppUser> signInManager)
17 {
18 _userManager = userManager;
19 _signInManager = signInManager;
20 }
21
22 [BindProperty]
23 public InputModel Input { get; set; } = default!;
24
25 public string? ReturnUrl { get; set; }
26
27 public class InputModel
28 {
29 [Required]
30 [StringLength(128)]
31 [Display(Name = "First Name")]
32 public string FirstName { get; set; } = default!;
33
34 [Required]
35 [StringLength(128)]
36 [Display(Name = "Last Name")]
37 public string LastName { get; set; } = default!;
38
39 [Required]
40 [EmailAddress]
41 [Display(Name = "Email")]
42 public string Email { get; set; } = default!;
43
44 [Required]
45 [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
46 [DataType(DataType.Password)]
47 [Display(Name = "Password")]
48 public string Password { get; set; } = default!;
49
50 [DataType(DataType.Password)]
51 [Display(Name = "Confirm password")]
52 [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
53 public string ConfirmPassword { get; set; } = default!;
54 }
55
56 public void OnGet(string? returnUrl = null)
57 {
58 ReturnUrl = returnUrl;
59 }
60
61 public async Task<IActionResult> OnPostAsync(string? returnUrl = null)
62 {
63 returnUrl ??= Url.Content("~/");
64
65 if (ModelState.IsValid)
66 {
67 var user = new AppUser
68 {
69 UserName = Input.Email,
70 Email = Input.Email,
71 FirstName = Input.FirstName,
72 LastName = Input.LastName,
73 EmailConfirmed = true
74 };
75
76 var result = await _userManager.CreateAsync(user, Input.Password);
77
78 if (result.Succeeded)
79 {
80 await _userManager.AddToRoleAsync(user, "user");
81 await _signInManager.SignInAsync(user, isPersistent: false);
82 return LocalRedirect(returnUrl);
83 }
84
85 foreach (var error in result.Errors)
86 {
87 ModelState.AddModelError(string.Empty, error.Description);
88 }
89 }
90
91 return Page();
92 }
93 }
94