Beispiel #1
0
        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));
        }
Beispiel #3
0
        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()
            });
        }
Beispiel #5
0
        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);
        }