public async Task <IActionResult> SendResetPassword(SendResetPasswordRequest request) { var response = await mediator.Send(request); logger.LogResponse($"User {request.Email} sent reset password email", response.Error); return(response.IsSucceeded ? (IActionResult)Ok(response) : BadRequest(response)); }
public async Task <IActionResult> SendResetPassword(SendResetPasswordRequest request) { var response = await mediator.Send(request); Log.Information($"User {request.Login} sent reset password link to their email address"); return(this.CreateResponse(response)); }
public async Task <IActionResult> SendResetPassword(SendResetPasswordRequest request) { var response = await mediator.Send(request); logger.LogResponse($"User {request.Email} sent reset password email", response.Error); return(this.CreateResponse(response)); }
public async Task SendResetPassword(SendResetPasswordRequest request) { var resetToken = string.Empty; UserEntity user; using (var uow = _uowFactory.GetUnitOfWork()) { user = await uow.UserRepo.GetUserById(new Infrastructure.Repositories.UserRepo.Models.GetUserByIdRequest() { Id = request.UserId }); resetToken = GenerateUniqueUserToken(uow); await uow.UserRepo.CreateUserToken(new Infrastructure.Repositories.UserRepo.Models.CreateUserTokenRequest() { User_Id = request.UserId, Token = new Guid(resetToken), Type_Id = (int)TokenTypeEnum.ResetPassword, Created_By = ApplicationConstants.SystemUserId, }); uow.Commit(); } var configuration = await _cache.Configuration(); var baseUrl = _httpContextAccessor.HttpContext.Request.GetBaseUrl(); var templates = await _cache.EmailTemplates(); var templateEntity = templates.FirstOrDefault(t => t.Key == EmailTemplateKeys.ForgotPassword); var template = new ForgotPasswordTemplate(templateEntity.Body) { ResetPasswordUrl = $"{baseUrl}/reset-password?token={resetToken}", ApplicationUrl = baseUrl }; await _emailProvider.Send(new Infrastructure.Email.Models.SendRequest() { FromAddress = configuration.System_From_Email_Address, ToAddress = user.Email_Address, Subject = template.Subject, Body = template.GetHTMLContent() }); }
public void SetUp() { var generateResetPasswordTokenResult = new GenerateResetPasswordTokenResult { Email = Test, Token = Test, Username = Test }; var emailTemplate = new EmailTemplate { TemplateName = Test, Subject = Test, Content = Test, AllowedParameters = new[] { "{{username}}", "{{callbackUrl}}" } }; request = new SendResetPasswordRequest { Login = Test, CaptchaResponse = Test }; userTokenGenerator = new Mock <IUserTokenGenerator>(); cryptoService = new Mock <ICryptoService>(); emailSender = new Mock <IEmailSender>(); emailTemplateGenerator = new Mock <IEmailTemplateGenerator>(); captchaService = new Mock <ICaptchaService>(); configuration = new Mock <IConfiguration>(); userTokenGenerator.Setup(c => c.GenerateResetPasswordToken(It.IsAny <string>())) .ReturnsAsync(generateResetPasswordTokenResult); captchaService.Setup(c => c.VerifyCaptcha(It.IsAny <string>())) .ReturnsAsync(true); cryptoService.Setup(c => c.Encrypt(It.IsAny <string>())) .Returns(Test); configuration.Setup(c => c.GetSection(It.IsAny <string>())) .Returns(new Mock <IConfigurationSection>().Object); emailTemplateGenerator.Setup(etg => etg.FindEmailTemplate(It.IsAny <string>())) .ReturnsAsync(emailTemplate); emailSender.Setup(es => es.Send(It.IsAny <EmailMessage>())) .ReturnsAsync(true); sendResetPasswordCommand = new SendResetPasswordCommand(userTokenGenerator.Object, cryptoService.Object, emailSender.Object, emailTemplateGenerator.Object, captchaService.Object, configuration.Object); }