public Task SendResetPasswordConfirmation(string confirmationLink, CharityUser user) { _emailService.SendAsync( user.Email, $"{user.Name}, zlecono zmianę hasła", "<h3>Otrzymujesz ten email, bo uruchomiono opcję resetowania hasła do serwisu 'Charity'</h3><br />" + $"Kliknij <a href=\"{confirmationLink}\">link</a>, by potwierdzić operację<br />" + "Nastąpi przekierowanie do formularza zmiany hasła.<br />" + "Zignoruj tę wiadomość, jeśli nie zlecełeś(aś) operacji.", true); return(Task.CompletedTask); }
public Task SendRegistrationConfirmation(string confirmationLink, CharityUser user) { _emailService.SendAsync( user.Email, //"*****@*****.**", $"{user.Name}, potwierdź rejestrację", "<h3>Kliknij link, by potwierdzić rejestrację do serwisu 'Charity'</h3><br />" + $"<a href=\"{confirmationLink}\">Potwierdź adres email</a><br />" + "Zignoruj tę wiadomość, jeśli nie dokowywałeś(aś) rejestracji.", true); return(Task.CompletedTask); }
public async Task <IActionResult> Registration(RegistrationViewModel model) { if (!ModelState.IsValid) { return(View(model)); } try { if (!_userManagerService.IsEmailUnique(model.Email)) { ModelState.AddModelError("", "Ten adres email jest już zarejestrowany"); return(View(model)); } var random = new Random(); var user = new CharityUser() { Name = model.Name, Surname = model.Surname, Email = model.Email, }; user.UserName = $"{user.Name}{user.Surname}"; user.UserName = RemoveDiacritics(user.UserName); user.UserName = RemoveNotLetterNorDigit(user.UserName); user.UserName += random.Next(1000).ToString("D3"); user.NormalizedUserName = user.UserName.ToUpper(); user.NormalizedEmail = user.Email.ToUpper(); // Create user var createUserResult = await _userManager.CreateAsync(user, model.Password); if (createUserResult.Succeeded) { await _userManager.AddToRoleAsync(user, "User"); _logger.LogInformation("Created user with email {User}.", user.Email); // Prepare token & send it via email _ = GenerateAndSendEmailConfirmationToken(user); return(RedirectToAction(nameof(ConfirmRegistration))); } ModelState.AddModelError("", "Nie udało się dodać użytkownika"); return(View(model)); } catch (Exception e) { _logger.LogError(e, "Error creating user."); } return(View(model)); }
private async Task GenerateAndSendEmailConfirmationToken(CharityUser user) { var token = await _userManager.GenerateEmailConfirmationTokenAsync(user); var confirmationLink = Url.Action( nameof(RegistrationConfirmed), nameof(Account), new { token, user = user.Id }, Request.Scheme, Request.Host.ToString()); _ = _emailService.SendRegistrationConfirmation(confirmationLink, user); }
public async Task <IActionResult> Register([FromForm] RegisterInputModel model) { if (ModelState.IsValid) { var user = new CharityUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); //code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); //var callbackUrl = Url.Page( // "/Account/ConfirmEmail", // pageHandler: null, // values: new { area = "Identity", userId = user.Id, code = code }, // protocol: Request.Scheme); //await _emailSender.SendEmailAsync(model.Email, "Confirm your email", // $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(Content($"confirmation required ({model.Email})")); } else { await _signInManager.SignInAsync(user, isPersistent : false); return(PartialView("_RegistrationSuccessPartial")); } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, ErrorMessages.ResourceManager.GetString(error.Code)); } } // If we got this far, something failed, redisplay form return(PartialView("Register")); }
public async Task ConfirmEmailAsync(CharityUser user) { _context.Users.FirstOrDefault(u => u.Email == user.Email).EmailConfirmed = true; await _context.SaveChangesAsync(); }