public virtual void Add(User user) { #region Validate data List <DataViolationItem> violations = new List <DataViolationItem>(); if (UserProvider.Get(user) != null) { violations.Add(new DataViolationItem("UserName", user.UserName, "DuplicateUserName".Localize())); } if (string.IsNullOrEmpty(user.Password)) { violations.Add(new DataViolationItem("Password", user.Password, "InvalidPassword".Localize())); } if (string.IsNullOrEmpty(user.Email)) { violations.Add(new DataViolationItem("Email", user.Email, "InvalidEmail".Localize())); } if (UserProvider.FindUserByEmail(user.Email) != null) { violations.Add(new DataViolationItem("Email", user.Email, "DuplicateEmail".Localize())); } if (violations.Count > 0) { throw new DataViolationException(violations); } #endregion var salt = _passwordProvider.GenerateSalt(); var encodedPassword = _passwordProvider.EncryptPassword(user.Password, salt); user.Password = encodedPassword; user.PasswordSalt = salt; UserProvider.Add(user); }