/// <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"); }
/// <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; } }
/// <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"); }
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!"); }
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); }