public ActionResult RegisterConfirmation(RegisterConfirmationViewModel rcvm) { RegisterConfirmationPartialModel rcpm = new RegisterConfirmationPartialModel(); ApplicationDbContext dbContext = new ApplicationDbContext(); List <ApplicationUser> unconfirmedUsers = new List <ApplicationUser>(); unconfirmedUsers = dbContext.Users.Where(m => !m.EmailConfirmed).ToList(); if (!String.IsNullOrEmpty(rcvm.SearchPhrase)) { unconfirmedUsers = unconfirmedUsers.Where(a => a.Name.ToLower().Contains(rcvm.SearchPhrase.ToLower()) || a.Surname.ToLower().Contains(rcvm.SearchPhrase.ToLower()) || a.Affiliation.ToLower().Contains(rcvm.SearchPhrase.ToLower())).ToList(); } switch (rcvm.SortBy) { case UserSortBy.Name: unconfirmedUsers = unconfirmedUsers.OrderBy(r => r.Name).ToList(); break; case UserSortBy.Surname: unconfirmedUsers = unconfirmedUsers.OrderBy(r => r.Surname).ToList(); break; case UserSortBy.Affiliation: unconfirmedUsers = unconfirmedUsers.OrderBy(r => r.Affiliation).ToList(); break; } rcpm.MaxPages = (int)Math.Ceiling((double)unconfirmedUsers.Count / (double)rcvm.ResultsForPage); rcpm.UnconfirmedUsers = unconfirmedUsers.Skip((rcvm.CurrentPage - 1) * rcvm.ResultsForPage).Take(rcvm.ResultsForPage).ToList(); return(PartialView("_RegisterConfirmation", rcpm)); }
public async Task <IActionResult> RegisterConfirmation(RegisterConfirmationViewModel model, string returnUrl = null) { if (model.UserId == null || model.Code == null) { throw new ApplicationException("User Id and code shouldn't be null."); } var user = await _userManager.FindByIdAsync(model.UserId); if (user == null) { throw new ApplicationException($"Unable to load user with ID '{model.UserId}'."); } if (ModelState.IsValid) { user.PasswordHash = _userManager.PasswordHasher.HashPassword(user, model.Password); var result = await _userManager.UpdateAsync(user); if (result.Succeeded) { result = _userManager.AddClaimsAsync(user, new Claim[] { new Claim(JwtClaimTypes.GivenName, model.FirstName), new Claim(JwtClaimTypes.FamilyName, model.LastName), new Claim(JwtClaimTypes.Name, model.FirstName + " " + model.LastName), new Claim("RegisterConfirmationDateTimeOffsetUtc", DateTimeOffset.UtcNow.ToString()) }).Result; if (!result.Succeeded) { throw new Exception(result.Errors.First().Description); } _logger.LogInformation("User details updated."); var confirmationResult = await _userManager.ConfirmEmailAsync(user, model.Code); if (confirmationResult.Succeeded) { return(Redirect(_portalConfig.RegistrationConfirmedRedirectUri)); } /* Failed to confirm email code. */ return(View("Error")); } /* Failed to update user details. */ return(View("Error")); } ViewData["UserId"] = model.UserId; ViewData["Code"] = model.Code; ViewData["ReturnUrl"] = returnUrl; /* If we got this far, something failed, redisplay form. */ return(View(model)); }
public ActionResult RegisterConfirmation() { RegisterConfirmationViewModel rcVM = new RegisterConfirmationViewModel(); ApplicationDbContext dbContext = new ApplicationDbContext(); rcVM.UnconfirmedUsers = dbContext.Users.Where(m => !m.EmailConfirmed).OrderBy(a => a.Surname).Take(10).ToList(); rcVM.CurrentPage = 1; rcVM.ResultsForPage = 10; rcVM.SortBy = Enums.UserSortBy.Surname; rcVM.NumberOfPages = (int)Math.Ceiling((double)dbContext.Users.Where(m => !m.EmailConfirmed).Count() / rcVM.ResultsForPage); return(View(rcVM)); }
public async Task <IActionResult> Confirmation(string email) { if (email == null) { return(this.RedirectToAction("Index")); } var user = await this._userService.GetByEmailAsync(email); if (user == null) { return(this.NotFound($"Unable to load user with email '{email}'.")); } var viewModel = new RegisterConfirmationViewModel(); viewModel.DisplayConfirmAccountLink = false; return(this.View(viewModel)); }
public async Task <IActionResult> RegisterConfirmationAsync(string email) { if (email == null) { return(BadRequest()); } var user = await _userManager.FindByEmailAsync(email); if (user == null) { return(NotFound($"Unable to load user with email '{email}'.")); } var model = new RegisterConfirmationViewModel() { Email = email, }; return(View(model)); }
public async Task <IActionResult> RegisterConfirmation(string email, string returnUrl = null) { if (email == null) { return(RedirectToAction(nameof(Register))); } var user = await _userManager.FindByEmailAsync(email); if (user == null) { return(NotFound($"Unable to load user with email '{email}'.")); } var registerConfirmationViewModel = new RegisterConfirmationViewModel() { Email = email, DisplayConfirmAccountLink = true//set to true if you want to display page for registerconfirmation }; //TODO: add email sender and confirmation https://app.sendgrid.com/ if (registerConfirmationViewModel.DisplayConfirmAccountLink) { var userId = await _userManager.GetUserIdAsync(user); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); registerConfirmationViewModel.EmailConfirmationUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = userId, code = code, returnUrl = returnUrl }, protocol: Request.Scheme); } return(View(registerConfirmationViewModel)); }
public async Task <IActionResult> RegisterConfirmation(string email) { if (email == null) { return(Redirect("~/")); } var user = await _userManager.FindByEmailAsync(email); if (user == null) { return(NotFound($"Unable to load user with email '{email}'.")); } var vm = new RegisterConfirmationViewModel { Email = email, #if DEBUG // Once you add a real email sender, you should remove this code that lets you confirm the account DisplayConfirmAccountLink = true #endif }; if (!vm.DisplayConfirmAccountLink) { return(View(vm)); } var userId = await _userManager.GetUserIdAsync(user); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); vm.EmailConfirmationUrl = Url.Action("ConfirmEmail", new { userId, code }); return(View(vm)); }
public async Task <IActionResult> RegisterConfirmation(string email, string returnUrl) { if (email == null) { return(RedirectToAction("Index", "Home")); } var user = await _userManager.FindByEmailAsync(email); if (user == null) { return(NotFound($"Không có user với email: '{email}'.")); } if (user.EmailConfirmed) { // Tài khoản đã xác thực email return(RedirectToAction("Index", "Home")); } var model = new RegisterConfirmationViewModel { Email = email }; if (returnUrl != null) { model.UrlContinue = Url.Action("ConfirmEmail", "Account", new { email = model.Email, returnUrl = returnUrl }); } else { model.UrlContinue = Url.Action("ConfirmEmail", "Account", new { email = model.Email }); } return(View(model)); }