예제 #1
0
        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);
        }