public async Task <IActionResult> ResendActivation(ResendActivationViewModel model) { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(model.Email); if (user == null) { // Don't reveal that the user does not exist or is not confirmed return(View("ResendActivationConfirmation")); } // Send an email with this link var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); var welcomeModel = new NameLinkViewModel() { Name = user.UserName, Link = callbackUrl, BaseURL = Url.Action("Index", "Home", null, protocol: HttpContext.Request.Scheme), }; var messgaeBody = base.RenderViewAsString(welcomeModel, "EmailTemplates/Welcome"); await _emailSender.SendEmailAsync(model.Email, "Confirm your account", messgaeBody); return(View("ResendActivationConfirmation")); } // If we got this far, something failed, redisplay form return(View(model)); }
public async Task <IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var department = _context.Department.Where(d => d.DepartmentId == model.DepartmentId).First(); var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FullName = model.Name }; user.DepartmentId = model.DepartmentId; user.Department = department; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { if (department.Users == null) { department.Users = new List <ApplicationUser>(); } department.Users.Add(user); _context.Update(department); _context.SaveChanges(); // if this is the first User in the DB, // then make him the super admin if (_context.Users.Count() == 1) { await _userManager.AddToRoleAsync(user, RoleHelper.SuperAdmin); user.Verified = true; _context.Update(user); _context.SaveChanges(); } // Adds the Selected Role await _userManager.AddToRoleAsync(user, RoleHelper.Teacher); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); var welcomeModel = new NameLinkViewModel() { Name = model.Name, Link = callbackUrl, BaseURL = Url.Action("Index", "Home", null, protocol: HttpContext.Request.Scheme), }; var messgaeBody = base.RenderViewAsString(welcomeModel, "EmailTemplates/Welcome"); await _emailSender.SendEmailAsync(model.Email, "Confirm your account", messgaeBody); _logger.LogInformation(3, "User created a new account with password."); return(RedirectToAction(nameof(HomeController.Index), "Home")); } AddErrors(result); } var departments = _context.Department .Select(s => new { Text = s.Name, Value = s.DepartmentId }) .ToList(); ViewBag.Departments = new SelectList(departments, "Value", "Text"); return(View(model)); }