public async System.Threading.Tasks.Task <IActionResult> RegisterEmployee(CustomerWithPassword customerWithPassword) { if (ModelState.IsValid) { Customer customer = customerWithPassword.Customer; if (_northwindContext.Customers.Any(c => c.CompanyName == customer.CompanyName)) { ModelState.AddModelError("", "Company Name must be unique"); } else { if (ModelState.IsValid) { AppUser user = new AppUser { // email and username are synced - this is by choice Email = customer.Email, UserName = customer.Email }; // Add user to Identity DB IdentityResult result = await _userManager.CreateAsync(user, customerWithPassword.Password); if (!result.Succeeded) { AddErrorsFromResult(result); } else { // Assign user to employees Role result = await _userManager.AddToRoleAsync(user, "employee"); if (!result.Succeeded) { // Delete User from Identity DB await _userManager.DeleteAsync(user); AddErrorsFromResult(result); } else { // Create customer (Northwind) _northwindContext.AddCustomer(customer); return(RedirectToAction("Index", "Home")); } } } } } return(View()); }
public async Task <IActionResult> Register(CustomerWithPassword customerWithPassword) { if (!ModelState.IsValid) { return(View()); } var customer = customerWithPassword.Customer; if (repository.Customers.Any(c => c.CompanyName == customer.CompanyName)) { ModelState.AddModelError("", "The company name must be unique!"); } else { if (ModelState.IsValid) { var user = new AppUser { Email = customer.Email, UserName = customer.Email }; var result = await userManager.CreateAsync(user, customerWithPassword.Password); if (!result.Succeeded) { AddErrorsFromResult(result); } else { result = await userManager.AddToRoleAsync(user, "Customer"); if (!result.Succeeded) { await userManager.DeleteAsync(user); AddErrorsFromResult(result); } else { repository.AddCustomer(customer); return(RedirectToAction("Index", "Home")); } } } } return(View()); }
public async System.Threading.Tasks.Task <IActionResult> Register(CustomerWithPassword customerWithPassword) { if (ModelState.IsValid) { Customer customer = customerWithPassword.Customer; if (ModelState.IsValid) { AppUser user = new AppUser { // email and username are synced - this is by choice Email = customer.Email, UserName = customer.Email }; // Add user to Identity DB IdentityResult result = await userManager.CreateAsync(user, customerWithPassword.Password); if (!result.Succeeded) { AddErrorsFromResult(result); } else { // Assign user to customers Role result = await userManager.AddToRoleAsync(user, "Customer"); if (!result.Succeeded) { // Delete User from Identity DB await userManager.DeleteAsync(user); AddErrorsFromResult(result); } else { // Send email logger.LogDebug("User created a new account with password."); logger.LogDebug("Sending email confirmation."); var code = await userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(System.Text.Encoding.UTF8.GetBytes(code)); var callbackUrl = Request.Scheme + "://" + Request.Host.Value + "/Account/ConfirmEmail?" + "userId=" + user.Id + "&code=" + code; await emailSender.SendEmailAsync(customer.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); // End Send Email // Create customer (Northwind) logger.LogDebug("Adding user to database."); repository.AddCustomer(customer); return(RedirectToAction("Index", "Home")); } } } } return(View()); }