/// <summary> /// 重置用户密码 /// </summary> /// <param name="userName">用户名</param> /// <param name="passWord">新密码</param> /// <returns>是否成功更新</returns> public static IMethodResult AdminResetUserPassword(String userName, String passWord) { if (!AdminManager.HasPermission(PermissionType.SuperAdministrator)) { throw new NoPermissionException(); } if (!RegexVerify.IsUserName(userName)) { return(MethodResult.InvalidRequest(RequestType.User)); } if (String.IsNullOrEmpty(passWord)) { return(MethodResult.FailedAndLog("New password can not be NULL!")); } else { passWord = PassWordEncrypt.Encrypt(userName, passWord); } Boolean success = UserRepository.Instance.UpdateEntityPassword(userName, passWord) > 0; if (!success) { return(MethodResult.FailedAndLog("No user's password was reset!")); } return(MethodResult.SuccessAndLog("User reset password, name = {0}", userName)); }
/// <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="userName">用户名</param> /// <param name="passWord">新密码</param> /// <returns>是否成功更新</returns> internal static Boolean InternalResetUserPassword(String userName, String passWord) { passWord = PassWordEncrypt.Encrypt(userName, passWord); return(UserRepository.Instance.UpdateEntityPassword(userName, passWord) > 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")); }
/// <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")); }
/// <summary> /// 加密验证码 /// </summary> /// <param name="checkCode">验证码信息</param> /// <returns>加密后的验证码</returns> private static String EncryptCode(String checkCode) { return(PassWordEncrypt.Encrypt(CHECK_CODE_COOKIE_NAME, checkCode)); }