Example #1
0
        public ActionResult ForgotPassword(Kullanici model)
        {
            var validator = new ForgotPasswordValidator().Validate(model);

            if (validator.IsValid)
            {
                int forgotPasswordUserId = _uow.GetRepo <Kullanici>()
                                           .Where(x => x.Email == model.Email)
                                           .FirstOrDefault()
                                           .Id;

                if (forgotPasswordUserId != 0)
                {
                    _kod = Guid.NewGuid().ToString();

                    _uow.GetRepo <Kullanici>()
                    .GetById(forgotPasswordUserId)
                    .Kod = _kod;
                    _uow.Commit();

                    string url        = Path.Combine("http://localhost:2815/Admin/Account/PasswordConfirm/", "?kod=" + _kod);
                    string htmlString = "<a href=" + url + ">Parolamı sıfırla</a>";

                    var message = (MailMessage)_mesaj;
                    message.To = model.Email;
                    bool Ok = message.SendMessage("Şifre Sıfırlama Talimatı", htmlString);

                    ModelState.Clear();
                    if (Ok)
                    {
                        IsSuccess         = true;
                        ViewBag.IsSuccess = IsSuccess;
                        ViewBag.Msg       = "E-postanıza onay linki gönderilmiştir";
                    }
                    else
                    {
                        IsSuccess         = false;
                        ViewBag.IsSuccess = IsSuccess;
                        ViewBag.Msg       = "E-posta gönderilirken bir hata oluştu,lütfen tekrar deneyiniz!";
                    }
                    return(View());
                }
                IsSuccess   = false;
                ViewBag.Msg = "Böyle bir kayıt bulunamadı!";
                return(View());
            }
            else
            {
                validator.Errors.ToList().ForEach(x => ModelState.AddModelError(x.PropertyName, x.ErrorMessage));
                return(View());
            }
        }
Example #2
0
        public void ValidWhenEmailAndPasswordProvided()
        {
            // arrange
            var validator = new ForgotPasswordValidator();
            var login     = new ForgotPasswordDto
            {
                Email = validEmail
            };
            // act
            var result = validator.Validate(login);

            // assert
            Assert.True(result.IsValid);
        }
Example #3
0
        public void InvalidWhenEmailNotProvided(string email)
        {
            // arrange
            var validator = new ForgotPasswordValidator();
            var dto       = new ForgotPasswordDto
            {
                Email = email
            };
            // act
            var result = validator.Validate(dto);

            // assert
            Assert.False(result.IsValid);
        }
Example #4
0
        public async Task Should_ReturnFalse_WhenRequiredInfo_IsNotProvided()
        {
            // Arrange
            var forgotPasswordDto = new ForgotPasswordDto
            {
                Email = ""
            };

            var passwordValidator = new ForgotPasswordValidator();

            // Act
            var validatorResult = await passwordValidator.ValidateAsync(forgotPasswordDto);

            // Assert
            validatorResult.IsValid.ShouldBeFalse();
        }
            public void IsInvalidWhen_IsNull()
            {
                var validated = new ForgotPasswordForm();
                var validator = new ForgotPasswordValidator(null, null);

                var results = validator.Validate(validated);

                results.IsValid.ShouldBeFalse();
                results.Errors.Count.ShouldBeInRange(1, int.MaxValue);
                var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName);
                error.ShouldNotBeNull();
                // ReSharper disable PossibleNullReferenceException
                error.ErrorMessage.ShouldEqual(
                    ForgotPasswordValidator.FailedBecauseEmailAddressWasEmpty);
                // ReSharper restore PossibleNullReferenceException
            }
Example #6
0
        public async Task <IActionResult> ForgotPassword([FromBody] ForgotPasswordDto forgotPasswordDto, [FromServices] IForgotPasswordService service)
        {
            var forgotPasswordValidator = new ForgotPasswordValidator();
            var validatorResult         = await forgotPasswordValidator.ValidateAsync(forgotPasswordDto);

            if (validatorResult.IsValid)
            {
                await service.RequestPasswordReset(forgotPasswordDto);

                if (!service.Status.HasErrors)
                {
                    return(Ok());
                }
                return(BadRequest(service.Status.Errors));
            }

            var validationErrors = validatorResult.Errors.Select(error => new ValidationResult(error.ErrorMessage))
                                   .ToImmutableList();

            return(BadRequest(validationErrors));
        }
Example #7
0
        public UserController(IMyUser user,
                              IMyFiles myFiles,
                              UserModelValidator userModelValidator,
                              UpdateUserModelValidator updateUserModelValidator,
                              SendEmailConfirmationValidator sendEmailConfirmationValidator,
                              ConfirmEmailValidator confirmEmailValidator,
                              ChangePasswordValidator changePasswordValidator,
                              ForgotPasswordValidator forgotPasswordValidator,
                              ResetPasswordValidator resetPasswordValidator,
                              ResponseBadRequest badRequest)
        {
            _user    = user;
            _myFiles = myFiles;

            _badRequest                     = badRequest;
            _userModelValidator             = userModelValidator;
            _updateUserModelValidator       = updateUserModelValidator;
            _sendEmailConfirmationValidator = sendEmailConfirmationValidator;
            _confirmEmailValidator          = confirmEmailValidator;
            _changePasswordValidator        = changePasswordValidator;
            _forgotPasswordValidator        = forgotPasswordValidator;
            _resetPasswordValidator         = resetPasswordValidator;
        }
Example #8
0
        private async void SendMyPassword()
        {
            View.HideKeyboard();

            ForgotPasswordValidator validator = new ForgotPasswordValidator();

            string email = ForgotEmail;

            var result = validator.Validate(email);

            if (result.IsValid)
            {
                mPlatformService.ShowNetworkIndicator();
                mProgressDialogService.ShowProgressDialog();

                var response = await mApiService.PostForgotPassword(email);

                mPlatformService.HideNetworkIndicator();
                mProgressDialogService.HideProgressDialog();

                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    mMessageboxService.Show("Forgot password", Messages.ForgotPasswordSuccess);
                    View.HidePopupForgotPassword();
                }
                else
                {
                    mMessageboxService.Show("Opps...", Messages.FotgotPasswordFail);
                }
            }
            else if (result.Errors != null)
            {
                var firstError = result.Errors.First();
                mMessageboxService.ShowToast(firstError.ErrorMessage);
            }
        }
Example #9
0
 public new void Setup()
 {
     _validator = new ForgotPasswordValidator();
 }
            public void IsValidWhen_MatchesPerson_WithNonSamlLocalUser_AndConfirmedEmailAddress()
            {
                var validated = new ForgotPasswordForm
                {
                    EmailAddress = "*****@*****.**",
                };
                var person = new Person
                {
                    User = new User
                    {
                        Name = "*****@*****.**",
                    },
                    Emails = new[]
                    {
                        new EmailAddress
                        {
                            Value = validated.EmailAddress,
                            IsConfirmed = true,
                        },
                    },
                };
                var establishment = new Establishment
                {
                    IsMember = true,
                    EmailDomains = new[] { new EstablishmentEmailDomain { Value = "@domain.tld" }, },
                };
                var passwords = new Mock<IStorePasswords>(MockBehavior.Strict);
                passwords.Setup(m => m
                    .Exists(It.Is(IsSignedUpBasedOn(person))))
                    .Returns(true);
                var entities = new Mock<IQueryEntities>(MockBehavior.Strict).Initialize();
                entities.Setup(m => m.Query<Establishment>()).Returns(new[] { establishment }.AsQueryable);
                entities.Setup(m => m.Query<Person>()).Returns(new[] { person }.AsQueryable);
                var validator = new ForgotPasswordValidator(entities.Object, passwords.Object);

                var results = validator.Validate(validated);

                var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName);
                error.ShouldBeNull();
            }
            public void IsInvalidWhen_MatchesUnconfirmedEmailAddress()
            {
                var validated = new ForgotPasswordForm
                {
                    EmailAddress = "*****@*****.**",
                };
                var person = new Person
                {
                    User = new User
                    {
                        Name = "*****@*****.**",
                    },
                    Emails = new[]
                    {
                        new EmailAddress
                        {
                            Value = validated.EmailAddress,
                        },
                    },
                };
                var establishment = new Establishment
                {
                    IsMember = true,
                    EmailDomains = new[] { new EstablishmentEmailDomain { Value = "@domain.tld" }, },
                };
                var passwords = new Mock<IStorePasswords>(MockBehavior.Strict);
                passwords.Setup(m => m
                    .Exists(It.Is(IsSignedUpBasedOn(person))))
                    .Returns(true);
                var entities = new Mock<IQueryEntities>(MockBehavior.Strict).Initialize();
                entities.Setup(m => m.Query<Establishment>()).Returns(new[] { establishment }.AsQueryable);
                entities.Setup(m => m.Query<Person>()).Returns(new[] { person }.AsQueryable);
                var validator = new ForgotPasswordValidator(entities.Object, passwords.Object);

                var results = validator.Validate(validated);

                results.IsValid.ShouldBeFalse();
                results.Errors.Count.ShouldBeInRange(1, int.MaxValue);
                var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName);
                error.ShouldNotBeNull();
                // ReSharper disable PossibleNullReferenceException
                error.ErrorMessage.ShouldEqual(string.Format(
                    ValidateEmailAddress.FailedBecauseIsNotConfirmed,
                        validated.EmailAddress));
                // ReSharper restore PossibleNullReferenceException
            }
            public void IsInvalidWhen_MatchesPerson_WithSamlUser()
            {
                var validated = new ForgotPasswordForm
                {
                    EmailAddress = "*****@*****.**",
                };
                var person = new Person
                {
                    User = new User
                    {
                        EduPersonTargetedId = "something",
                    },
                    Emails = new[] { new EmailAddress { Value = validated.EmailAddress, }, },
                };
                var establishment = new Establishment
                {
                    IsMember = true,
                    EmailDomains = new[] { new EstablishmentEmailDomain { Value = "@domain.tld" }, },
                };
                var entities = new Mock<IQueryEntities>(MockBehavior.Strict).Initialize();
                entities.Setup(m => m.Query<Establishment>()).Returns(new[] { establishment }.AsQueryable);
                entities.Setup(m => m.Query<Person>()).Returns(new[] { person }.AsQueryable);
                var validator = new ForgotPasswordValidator(entities.Object, null);

                var results = validator.Validate(validated);

                results.IsValid.ShouldBeFalse();
                results.Errors.Count.ShouldBeInRange(1, int.MaxValue);
                var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName);
                error.ShouldNotBeNull();
                // ReSharper disable PossibleNullReferenceException
                error.ErrorMessage.ShouldEqual(string.Format(
                    ForgotPasswordValidator.FailedBecauseEduPersonTargetedIdWasNotEmpty,
                        validated.EmailAddress.GetEmailDomain()));
                // ReSharper restore PossibleNullReferenceException
            }
            public void IsInvalidWhen_MatchesNoPerson()
            {
                var validated = new ForgotPasswordForm
                {
                    EmailAddress = "*****@*****.**",
                };
                var establishment = new Establishment
                {
                    IsMember = true,
                };
                var entities = new Mock<IQueryEntities>(MockBehavior.Strict).Initialize();
                entities.Setup(m => m.Query<Establishment>()).Returns(new[] { establishment }.AsQueryable);
                entities.Setup(m => m.Query<Person>()).Returns(new Person[] { }.AsQueryable);
                var validator = new ForgotPasswordValidator(entities.Object, null);

                var results = validator.Validate(validated);

                results.IsValid.ShouldBeFalse();
                results.Errors.Count.ShouldBeInRange(1, int.MaxValue);
                var error = results.Errors.SingleOrDefault(e => e.PropertyName == PropertyName);
                error.ShouldNotBeNull();
                // ReSharper disable PossibleNullReferenceException
                error.ErrorMessage.ShouldEqual(string.Format(
                    ForgotPasswordValidator.FailedBecauseUserNameMatchedNoLocalMember,
                        validated.EmailAddress));
                // ReSharper restore PossibleNullReferenceException
            }