public ModifyPasswordWindowViewModel(ChildWindow aChileWindow) { this.ChildWindow = aChileWindow; ModifyPasswordEntity = new ModifyPasswordEntity(); OnModifyPassword = new DelegateCommand(OnModifyPasswordCommand); OnCancel = new DelegateCommand(OnCancelCommand); }
private void OnModifyPasswordCommand() { if (ModifyPasswordEntity.Validate()) { IsBusy = true; DocumentManager.Web.OperationDomainContext operationDomainContext = new DocumentManager.Web.OperationDomainContext(); App app = Application.Current as App; if (app.MainPageViewModel.User.Password == Cryptography.MD5.GetMd5String(ModifyPasswordEntity.NewPassword)) { NotifyWindow notifyWindow = new NotifyWindow("密码验证", "请输入新密码"); notifyWindow.Show(); IsBusy = false; return; } InvokeOperation <bool> lModifyPassword = operationDomainContext.ModifyPassword(app.MainPageViewModel.User.UserID, Cryptography.MD5.GetMd5String(ModifyPasswordEntity.NewPassword)); lModifyPassword.Completed += ModifyPassword_Completed; } }
private void buttonControl1_Click(object sender, EventArgs e) { if (!dc.Validate()) { return; } ModifyPasswordEntity modifyPassword = new ModifyPasswordEntity(); dc.GetValue(modifyPassword); if (modifyPassword.oldPassword.Equals(modifyPassword.newPassword)) { dc.ShowError(teNewPassword, "新密码不能与旧密码一样"); return; } if (!modifyPassword.newPassword.Equals(modifyPassword.againPassword)) { dc.ShowError(teAgainPassword, "密码不一致"); return; } cmd.ShowOpaqueLayer(); //获取用户角色,密码复杂度验证需要 String param = "?" + PackReflectionEntity <ModifyPasswordEntity> .GetEntityToRequestParameters(modifyPassword); String url = AppContext.AppConfig.serverUrl + "itf/System/getUser" + param; this.DoWorkAsync(500, (o) => //耗时逻辑处理(此处不能操作UI控件,因为是在异步中) { String data = HttpClass.httpPost(url); return(data); }, null, (data) => //显示结果(此处用于对上面结果的处理,比如显示到界面上) { JObject objT = JObject.Parse(data.ToString()); if (string.Compare(objT["state"].ToString(), "true", true) == 0) { UserEntity user = objT["result"].ToObject <UserEntity>(); if (user.userType.Equals("1")) { //密码复杂度验证 var regex = new Regex(@" (?=.*[0-9]) #必须包含数字 (?=.*[a-zA-Z]) #必须包含小写或大写字母 (?=([\x21-\x7e]+)[^a-zA-Z0-9]) #必须包含特殊符号 .{8,16} #至少8个字符,最多16个字符 ", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace); if (!regex.IsMatch(modifyPassword.newPassword)) { cmd.HideOpaqueLayer(); dc.ShowError(teNewPassword, "管理员密码数字+字母+符号三种组合以上,至少8位数,最多16位数"); return; } } else { //密码复杂度验证 var regex = new Regex(@" (?=.*[0-9]) #必须包含数字 (?=.*[a-zA-Z]) #必须包含小写或大写字母 (?=([\x21-\x7e]+)[^a-zA-Z0-9]) #必须包含特殊符号 .{6,16} #至少6个字符,最多16个字符 ", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace); if (!regex.IsMatch(modifyPassword.newPassword)) { cmd.HideOpaqueLayer(); dc.ShowError(teNewPassword, "密码数字+字母+符号三种组合以上,至少6位数,最多16位数"); return; } } url = AppContext.AppConfig.serverUrl + "itf/System/modifyPassword" + param; this.DoWorkAsync(500, (o) => //耗时逻辑处理(此处不能操作UI控件,因为是在异步中) { data = HttpClass.httpPost(url); return(data); }, null, (data2) => //显示结果(此处用于对上面结果的处理,比如显示到界面上) { cmd.HideOpaqueLayer(); objT = JObject.Parse(data2.ToString()); if (string.Compare(objT["state"].ToString(), "true", true) == 0) { DialogResult = DialogResult.OK; } else { MessageBoxUtils.Show(objT["message"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, this); } }); } else { cmd.HideOpaqueLayer(); MessageBoxUtils.Show(objT["message"].ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, this); } }); }