/// <summary>
        /// 重置密码
        /// </summary>
        /// <param name="user">用户对象</param>
        /// <param name="password">需要加密的密码</param>
        /// <returns></returns>
        public bool ResetPassword(User user, string newPassword)
        {
            if (string.IsNullOrWhiteSpace(newPassword))
            {
                return(false);
            }

            var md5Password = UserPasswordHelper.EncodePassword(newPassword, UserPasswordFormat.MD5);
            var result      = userRepository.ResetPassword(user, md5Password);

            return(result);
        }
        /// <summary>
        /// 创建用户
        /// </summary>
        /// <param name="user"></param>
        /// <param name="password">密码</param>
        /// <param name="passwordQuestion">密码问题</param>
        /// <param name="passwordAnswer">密码答案</param>
        /// <param name="ignoreUsername">是否忽略禁用的用户名称</param>
        /// <param name="userCreateStatus">创建状态</param>
        /// <returns></returns>
        public User CreateUser(User user, string password, string passwordQuestion, string passwordAnswer, bool ignoreUsername, out UserCreateStatus userCreateStatus)
        {
            if (user == null)
            {
                userCreateStatus = UserCreateStatus.UnknownFailure;
                return(null);
            }
            string errorMessage = string.Empty;

            if (!Utility.ValidatePassword(password, out errorMessage))
            {
                userCreateStatus = UserCreateStatus.InvalidPassword;
                return(null);
            }
            user.PasswordFormat   = (int)UserPasswordFormat.MD5;
            user.Password         = UserPasswordHelper.EncodePassword(password, UserPasswordFormat.MD5);
            user.PasswordQuestion = passwordQuestion;
            user.PasswordAnswer   = passwordAnswer;
            user.IsModerated      = false;

            user = userRepository.CreateUser(user, ignoreUsername, out userCreateStatus);
            return(user);
        }
        /// <summary>
        /// 验证用户名和密码是否匹配
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="passWord">密码</param>
        /// <returns>登录状态枚举</returns>
        public UserLoginStatus ValidateUser(string userName, string passWord)
        {
            long userId = UserIdToUserNameDictionary.GetUserId(userName);
            User user   = userRepository.GetUser(userId);

            if (user == null)
            {
                return(UserLoginStatus.InvalidCredentials);
            }
            if (!userName.Equals(user.UserName, StringComparison.CurrentCulture))
            {
                return(UserLoginStatus.InvalidCredentials);
            }
            if (!UserPasswordHelper.CheckPassword(passWord, user.Password, (UserPasswordFormat)user.PasswordFormat))
            {
                return(UserLoginStatus.InvalidCredentials);
            }
            if (!user.IsActivated)
            {
                return(UserLoginStatus.NotActivated);
            }
            if (user.IsBanned)
            {
                if (user.BanDeadLine >= DateTime.UtcNow)
                {
                    return(UserLoginStatus.Banned);
                }
                else
                {
                    user.IsBanned    = false;
                    user.BanDeadLine = DateTime.UtcNow;
                    userRepository.Update(user);
                }
            }

            return(UserLoginStatus.Success);
        }