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);
		}
Beispiel #2
0
        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."
            });
        }