public User Login(string login, string password, bool onLogin) { var user = dataBase.Users.FirstOrDefault(u => u.UserName.Equals(login, StringComparison.CurrentCultureIgnoreCase) || u.Email == login); if (user == null) { return(null); } if (onLogin) { if (hasher.HashWithSalt(password, hasher.GetSalt(user.Password)) == hasher.GetHashedPasswordWithoutSalt(user.Password)) { return(user); } } else { if (password == hasher.GetHashedPasswordWithoutSalt(user.Password)) { return(user); } } return(null); }
public void Handle(RegisterNewUserCommand message) { if (!message.IsValid()) { NotifyValidationErrors(message); return; } if (userRepository.GetByEmail(message.Email) != null) { mediatorHandler.RaiseEvent(new DomainNotification(message.MessageType, "The user e-mail has already been taken.")); return; } var role = this.roleRepository.GetById(message.RoleId); var user = new User(Guid.NewGuid(), message.Name, true, message.Email, role); var hashPassword = passwordHasher.HashPassword(message.Password); user.Password = hashPassword; user.PasswordSalt = passwordHasher.GetSalt(); this.userRepository.Add(user); if (this.Commit()) { mediatorHandler.RaiseEvent(new ClientRegisteredEvent(user.Id, user.Name, user.Email)); } }
public async Task Handle(ChangeUserPasswordCommand command) { string salt = await _passwordHasher.GetSalt(); string passwordHash = await _passwordHasher.HashString(command.Password, salt); await _repository.UpdatePassword(command.UserId, passwordHash, salt); }
private async Task CopyDataToSaga(BehaviorContext <UserRegistrationSagaData, RegisterUserCommand> context) { string salt = await _passwordHasher.GetSalt(); context.Instance.Id = context.Data.Id; context.Instance.BaseUrl = context.Data.BaseUrl; context.Instance.LoginName = context.Data.LoginName; context.Instance.Name = context.Data.Name; context.Instance.Surname = context.Data.Surname; context.Instance.PasswordHash = await _passwordHasher.HashString(context.Data.Password, salt); context.Instance.PasswordSalt = salt; context.Instance.Email = context.Data.Email; context.Instance.TelephoneNumber = context.Data.TelephoneNumber; }