Beispiel #1
0
        /// <summary>
        /// 尝试更新用户信息
        /// </summary>
        /// <param name="entity">对象实体</param>
        /// <param name="currentPassword">当前密码</param>
        /// <param name="newPassword">新密码</param>
        /// <param name="newPassword2">重复新密码</param>
        /// <param name="result">执行结果</param>
        /// <returns>执行结果</returns>
        public static IMethodResult UpdateUserInfo(UserEntity entity, String currentPassword, String newPassword, String newPassword2)
        {
            if (String.IsNullOrEmpty(currentPassword))
            {
                return MethodResult.Failed("Current password can not be NULL!");
            }
            else
            {
                entity.UserName = UserManager.CurrentUserName;
                entity.NickName = HtmlEncoder.HtmlEncode(entity.NickName);
                currentPassword = PassWordEncrypt.Encrypt(entity.UserName, currentPassword);
            }

            if (!String.Equals(newPassword, newPassword2))
            {
                return MethodResult.Failed("Two new passwords are not match!");
            }

            if (String.IsNullOrEmpty(entity.Email))
            {
                return MethodResult.Failed("Email address can not be NULL!");
            }

            if (!RegexVerify.IsEmail(entity.Email))
            {
                return MethodResult.Failed("Email address is INVALID!");
            }

            if (entity.Email.Length > UserRepository.EMAIL_MAXLEN)
            {
                return MethodResult.Failed("Email address is too long!");
            }

            if (!String.IsNullOrEmpty(entity.NickName) && entity.NickName.Length > UserRepository.NICKNAME_MAXLEN)
            {
                return MethodResult.Failed("Nick Name is too long!");
            }

            if (!KeywordsFilterManager.IsUserNameLegal(entity.NickName))
            {
                return MethodResult.Failed("Nick Name can not contain illegal keywords!");
            }

            if (!String.IsNullOrEmpty(entity.School) && entity.School.Length > UserRepository.SCHOOL_MAXLEN)
            {
                return MethodResult.Failed("School Name is too long!");
            }

            if (!String.IsNullOrEmpty(newPassword))
            {
                entity.PassWord = PassWordEncrypt.Encrypt(entity.UserName, newPassword);
            }

            try
            {
                if (UserRepository.Instance.UpdateEntityForUser(entity, currentPassword) <= 0)
                {
                    return MethodResult.Failed("Current password is wrong!");
                }
            }
            catch (System.Exception ex)
            {
                return MethodResult.Failed(ex.Message);
            }

            return MethodResult.SuccessAndLog("User update info");
        }
Beispiel #2
0
        /// <summary>
        /// 尝试将使用用户名密码登陆系统
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="passWord">密码</param>
        /// <param name="user">若成功返回用户实体</param>
        /// <returns>失败则返回出错信息,成功则不返回任何信息</returns>
        public static String TryGetUserByUsernameAndPassword(String userName, String passWord, out UserEntity user)
        {
            user = null;

            try
            {
                if (String.IsNullOrEmpty(userName))
                {
                    return "Username can not be NULL!";
                }

                if (String.IsNullOrEmpty(passWord))
                {
                    return "Password can not be NULL!";
                }

                if (!RegexVerify.IsUserName(userName) || !SQLValidator.IsNonNullANDSafe(userName))
                {
                    return "Username is INVALID!";
                }

                passWord = PassWordEncrypt.Encrypt(userName, passWord);
                user = UserRepository.Instance.GetEntityByNameAndPassword(userName, passWord);

                if (user == null)
                {
                    return "No such user or wrong password!";
                }

                if (!String.Equals(user.PassWord, passWord, StringComparison.OrdinalIgnoreCase))
                {
                    return "Password is wrong!";
                }

                if (user.IsLocked)
                {
                    return "The user is locked, please contact the administrator!";
                }

                if ("NULL".Equals(user.PassWord, StringComparison.OrdinalIgnoreCase))
                {
                    return "The user's password is INVALID, please visit \"Forget Password\" and reset your password!";
                }

                return String.Empty;
            }
            catch (System.Exception ex)
            {
                return ex.Message;
            }
        }
Beispiel #3
0
        /// <summary>
        /// 尝试注册用户
        /// </summary>
        /// <param name="entity">用户实体</param>
        /// <param name="password">密码</param>
        /// <param name="password2">重复密码</param>
        /// <param name="checkCode">验证码</param>
        /// <param name="userip">用户IP</param>
        /// <returns>执行结果</returns>
        public static IMethodResult SignUp(UserEntity entity, String password, String password2, String checkCode, String userip)
        {
            if (!CheckCodeStatus.VerifyCheckCode(checkCode))
            {
                return MethodResult.Failed("The verification code you input didn't match the picture, Please try again!");
            }

            if (String.IsNullOrEmpty(entity.UserName))
            {
                return MethodResult.Failed("Username can not be NULL!");
            }

            if (!RegexVerify.IsUserName(entity.UserName) || !SQLValidator.IsNonNullANDSafe(entity.UserName))
            {
                return MethodResult.Failed("Username can not contain illegal characters!");
            }

            if (!KeywordsFilterManager.IsUserNameLegal(entity.UserName))
            {
                return MethodResult.Failed("Username can not contain illegal keywords!");
            }

            if (entity.UserName.Length > UserRepository.USERNAME_MAXLEN)
            {
                return MethodResult.Failed("Username is too long!");
            }

            if (String.IsNullOrEmpty(password))
            {
                return MethodResult.Failed("Password can not be NULL!");
            }

            if (!String.Equals(password, password2))
            {
                return MethodResult.Failed("Two passwords are not match!");
            }

            if (String.IsNullOrEmpty(entity.Email))
            {
                return MethodResult.Failed("Email address can not be NULL!");
            }

            if (!RegexVerify.IsEmail(entity.Email))
            {
                return MethodResult.Failed("Email address is INVALID!");
            }

            if (entity.Email.Length > UserRepository.EMAIL_MAXLEN)
            {
                return MethodResult.Failed("Email address is too long!");
            }

            if (!String.IsNullOrEmpty(entity.NickName) && entity.NickName.Length > UserRepository.NICKNAME_MAXLEN)
            {
                return MethodResult.Failed("Nick Name is too long!");
            }

            if (!KeywordsFilterManager.IsUserNameLegal(entity.NickName))
            {
                return MethodResult.Failed("Nick Name can not contain illegal keywords!");
            }

            if (!String.IsNullOrEmpty(entity.School) && entity.School.Length > UserRepository.SCHOOL_MAXLEN)
            {
                return MethodResult.Failed("School Name is too long!");
            }

            if (UserRepository.Instance.ExistsEntity(entity.UserName))
            {
                return MethodResult.Failed("The username \"{0}\" has already existed!", entity.UserName);
            }

            if (!UserIPStatus.CheckLastRegisterTime(userip))
            {
                return MethodResult.Failed("You can only register one user from single ip in {0} seconds!", ConfigurationManager.RegisterInterval.ToString());
            }

            entity.PassWord = PassWordEncrypt.Encrypt(entity.UserName, password);
            entity.NickName = HtmlEncoder.HtmlEncode(entity.NickName);
            entity.Permission = PermissionType.None;
            entity.CreateIP = userip;
            entity.CreateDate = DateTime.Now;

            try
            {
                if (UserRepository.Instance.InsertEntity(entity) == 0)
                {
                    return MethodResult.Failed("User Registration Failed!");
                }
            }
            catch (System.Exception ex)
            {
                return MethodResult.Failed(ex.Message);
            }

            UserCache.RemoveRanklistUserCountCache();//删除缓存

            return MethodResult.SuccessAndLog("User sign up");
        }
Beispiel #4
0
        public ActionResult Control(FormCollection form)
        {
            UserEntity user = new UserEntity()
            {
                NickName = form["nickname"],
                School = form["school"],
                Email = form["email"]
            };

            IMethodResult result = UserManager.UpdateUserInfo(user, form["password"], form["newpassword"], form["newpassword2"]);
            this.LogUserOperation(result);

            if (!result.IsSuccess)
            {
                return RedirectToErrorMessagePage(result.Description);
            }

            return RedirectToSuccessMessagePage("Your user profile was updated successfully!");
        }
Beispiel #5
0
        public ActionResult Register(FormCollection form)
        {
            UserEntity user = new UserEntity()
            {
                UserName = form["username"],
                NickName = form["nickname"],
                School = form["school"],
                Email = form["email"]
            };

            String userip = this.GetCurrentUserIP();
            IMethodResult result = UserManager.SignUp(user, form["password"], form["password2"], form["checkcode"], userip);

            if (!result.IsSuccess)
            {
                return RedirectToErrorMessagePage(result.Description);
            }

            result = UserManager.SignIn(form["username"], form["password"], userip);
            this.LogUserOperation(result, user.UserName);

            if (!result.IsSuccess)
            {
                return RedirectToErrorMessagePage(result.Description);
            }

            return RedirectToAction("Index", "Home");
        }
        /// <summary>
        /// 向缓存中写入当前用户登录状态
        /// </summary>
        /// <param name="user">当前用户登录状态</param>
        public static void SetCurrentUserStatus(UserEntity user)
        {
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(UserStatus.USER_STAUTS_VERSION, user.UserName, DateTime.Now, DateTime.Now.AddMinutes(AUTH_COOKIE_TIME_OUT), false, ((Int32)user.Permission).ToString(), FormsAuthentication.FormsCookiePath);
            String hash = FormsAuthentication.Encrypt(ticket);

            Cookies.SetValue(FormsAuthentication.FormsCookieName, hash, true);
        }