public void Constructor_GiveValidArguments_PropertiesAreSet()
        {
            var @event =
                new PasswordChangedEvent("email-address", "first-name", "last-name");

            Assert.Equal("email-address", @event.EmailAddress);
            Assert.Equal("first-name", @event.FirstName);
            Assert.Equal("last-name", @event.LastName);
        }
Exemple #2
0
        public void ApplyPasswordChangedEvent()
        {
            var user = new User(Guid.NewGuid());

            var @event = new PasswordChangedEvent(user.Id, 0, HashedTestPassword);

            user.ApplyEvents(new Event[] { @event });

            user.PasswordCorrect(TestPassword).Should().BeTrue();
        }
 public void Handle(PasswordChangedEvent <CustomUserAccount> evt)
 {
     using (var db = new CustomDatabase())
     {
         var oldEntires =
             db.PasswordHistory.Where(x => x.UserID == evt.Account.ID).OrderByDescending(x => x.DateChanged).ToArray();
         for (var i = 0; i < 3 && oldEntires.Length > i; i++)
         {
             var oldHash = oldEntires[i].PasswordHash;
             if (new DefaultCrypto().VerifyHashedPassword(oldHash, evt.NewPassword))
             {
                 throw new ValidationException("New Password must not be same as the past three");
             }
         }
     }
 }
Exemple #4
0
        public void ChangePassword(string newPassword)
        {
            if (!ValidatePassword(newPassword))
            {
                throw new ArgumentException("Password is not valid");
            }

            var hashedPassword = HashPassword(newPassword);

            if (hashedPassword == _Password)
            {
                throw new ArgumentException("Password must not be the same as your existing password");
            }

            var @event = new PasswordChangedEvent(Id, Version, hashedPassword);

            Apply(@event);
            PublishEvent(@event);
        }
Exemple #5
0
        public async Task <IActionResult> UpdatePassword([FromBody] ChangePasswordRequest request)
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound());
            }
            var result = await _userManager.ChangePasswordAsync(user, request.OldPassword, request.NewPassword);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors.ToValidationProblemDetails()));
            }
            var @event = new PasswordChangedEvent(SingleUserInfo.FromUser(user));
            await _eventService.Publish(@event);

            return(NoContent());
        }
Exemple #6
0
        public void Handle(PasswordChangedEvent args)
        {
            if (String.IsNullOrWhiteSpace(args.Email))
            {
                return;
            }

            var sb = new StringBuilder();

            sb.AppendLine("Ваш пароль для сайта семейного архива был изменен:");
            sb.AppendLine();
            sb.AppendLine($"Адрес сайта: {this.Infrastructure.WebSiteUrl}");
            sb.AppendLine($"Логин: {args.Login}");
            sb.AppendLine($"Пароль: {args.Password}");
            sb.AppendLine();
            sb.AppendLine("С уважением,");
            sb.AppendLine("Семейный Архив Лицкевичей");

            try { this.EmailService.SendNotification(args.Email, new Message("Смена пароля на сайте семейного архива", sb.ToString())); }
            catch { }
        }
Exemple #7
0
        public async Task <IActionResult> ForgotPasswordConfirmation([FromBody] ForgotPasswordVerifyModel request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = await _userManager.FindByEmailAsync(request.Email);

            if (user == null)
            {
                return(NoContent());
            }
            var result = await _userManager.ResetPasswordAsync(user, request.Token, request.NewPassword);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors.ToValidationProblemDetails()));
            }
            var @event = new PasswordChangedEvent(SingleUserInfo.FromUser(user));
            await _eventService.Publish(@event);

            return(NoContent());
        }
Exemple #8
0
        public async Task <IActionResult> SetPassword([FromRoute] string userId, [FromBody] SetPasswordRequest request)
        {
            var user = await _dbContext.Users.SingleOrDefaultAsync(x => x.Id == userId);

            if (user == null)
            {
                return(NotFound());
            }
            var result = await _userManager.ResetPasswordAsync(user, request.Password, validatePassword : !request.BypassPasswordValidation.GetValueOrDefault());

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors.ToValidationProblemDetails()));
            }
            var @event = new PasswordChangedEvent(SingleUserInfo.FromUser(user));
            await _eventService.Publish(@event);

            if (request.ChangePasswordAfterFirstSignIn == true)
            {
                await _userManager.SetPasswordExpiredAsync(user, true);
            }
            return(NoContent());
        }
 public void Handle(PasswordChangedEvent evt) => Process(evt);
Exemple #10
0
        public void Apply(PasswordChangedEvent @event)
        {
            Version++;

            _Password = @event.Password;
        }
Exemple #11
0
 protected void When(PasswordChangedEvent passwordChangedEvent) => Password = passwordChangedEvent.Password;
Exemple #12
0
 public void RestoreFrom(PasswordChangedEvent e)
 {
     PasswordSalt          = e.PasswordSalt;
     PasswordHash          = e.PasswordHash;
     PasswordHashAlgorithm = e.PasswordHashAlgorithm;
 }
 public void Handle(PasswordChangedEvent evt)
 {
     Process(evt, new { evt.NewPassword });
 }
 public Task Handle(PasswordChangedEvent notification, CancellationToken cancellationToken)
 {
     return(Task.CompletedTask);
 }
Exemple #15
0
 public void Handle(PasswordChangedEvent <HierarchicalUserAccount> evt)
 {
     Process(evt);
 }
 public void Handle(PasswordChangedEvent <CustomUserAccount> evt)
 {
     AddPasswordHistoryEntry(evt.Account.ID, evt.NewPassword);
 }
        public virtual void Process(PasswordChangedEvent evt, object extra = null)
        {
            var data = GetExtraProperties(evt.Account, extra);

            Send(evt, evt.Account.Email, data);
        }