public async Task SendConfirmEmailChangeMessage(DbUser user, string newEmail, CancellationToken cancellationToken) { var code = await _userManager.GenerateChangeEmailTokenAsync(user, newEmail); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var messageModel = new ConfirmEmailMessageModel { CallbackUrl = _appUrlBuilder.Build($"{ClientRoutes.ConfirmEmailChange}/{user.Id}/{newEmail}/{code}") }; var message = await _templateRenderer.Render(MessageTemplateCode.EmailConfirmation, messageModel, cancellationToken); await _emailSender.Send(newEmail, message.Subject, message.Body, cancellationToken); }
public async Task <ApiResult> Handle(ForgotPassword request, CancellationToken cancellationToken) { var user = await _userManager.FindByEmailAsync(request.Email); if (user != null && await _userManager.IsEmailConfirmedAsync(user)) { var code = await _userManager.GeneratePasswordResetTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var messageModel = new ConfirmEmailMessageModel { CallbackUrl = _appUrlBuilder.Build($"{ClientRoutes.ResetPassword}/{code}") }; var message = await _templateRenderer.Render(MessageTemplateCode.PasswordReset, messageModel, cancellationToken); await _emailSender.Send(user.Email, message.Subject, message.Body, cancellationToken); } return(new ApiResult { Message = "Please check your email to reset your password." }); }