DeviceManager/DeviceRepairAndOptimization/Pages/Users/frmPwdModify.cs

202 lines
7.9 KiB
C#
Raw Normal View History

2024-05-28 14:36:38 +00:00
using DevExpress.XtraBars.ToolbarForm;
using DeviceRepair.Models;
using DeviceRepair.Utils.Security;
using DeviceRepairAndOptimization.Biz;
using DeviceRepairAndOptimization.Common;
using System;
namespace DeviceRepairAndOptimization.Pages.Users
{
public partial class frmPwdModify : ToolbarForm
{
public frmPwdModify(bool CanClose = true)
{
InitializeComponent();
if (!CanClose)
{
this.ControlBox = false;
this.btn_Cancel.Visible = false;
}
}
private void btn_Submit_Click(object sender, EventArgs e)
{
splashScreenManager1.ShowWaitForm();
try
{
if (DataValid())
{
APIResponseData apiResponseData = UserManager.Instance.UpdateUserPassword(GlobalInfo.CurrentUser.LoginCode, EncryptionHelper.EncryptByMD5(txt_NewPassWord.Text));
if (apiResponseData.Code == -1)
throw new Exception(apiResponseData.Message);
splashScreenManager1.TryCloseWait();
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
splashScreenManager1.TryCloseWait();
}
catch (Exception ee)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ee.Message);
}
}
private void btn_Cancel_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
private void frmPwdModify_Load(object sender, EventArgs e)
{
txt_LoginCode.Text = GlobalInfo.CurrentUser.LoginCode;
txt_RealName.Text = GlobalInfo.CurrentUser.RealName;
lb_Description.Text = PassWordValidata.Instance.PassWordRulesText;
}
/// <summary>
/// 密码校验
/// </summary>
/// <returns></returns>
bool DataValid()
{
try
{
#region
string Password = txt_OldPassWord.Text;
if (string.IsNullOrWhiteSpace(Password))
{
dxErrorProvider1.SetError(txt_OldPassWord, "密码不可以为空!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (EncryptionHelper.EncryptByMD5(Password).Length > 50)
{
dxErrorProvider1.SetError(txt_OldPassWord, "密码长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
dxErrorProvider1.SetError(txt_OldPassWord, "");
}
#endregion
#region
string nPassword = txt_NewPassWord.Text;
if (string.IsNullOrWhiteSpace(nPassword))
{
dxErrorProvider1.SetError(txt_NewPassWord, "新密码不可以为空!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (EncryptionHelper.EncryptByMD5(nPassword).Length > 50)
{
dxErrorProvider1.SetError(txt_NewPassWord, "新密码长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (Password.Equals(nPassword))
{
dxErrorProvider1.SetError(txt_NewPassWord, "新密码不能与旧密码相同!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (PassWordValidata.Instance.PasswordMinLength != 0 && nPassword.Length < PassWordValidata.Instance.PasswordMinLength)
{
dxErrorProvider1.SetError(txt_NewPassWord, PassWordValidata.Instance.PasswordMinLengthText, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
int MinPasswordStrategyTypeCounts = PassWordValidata.Instance.GetTrueNumber(nPassword);
if (MinPasswordStrategyTypeCounts < 3)
{
dxErrorProvider1.SetError(txt_NewPassWord, $"密码不合符密码强度策略(大写字母/小写字母/数字/特殊字符中必须满足其中3种", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
#endregion
#region
string cPassword = txt_ConfirmPassWord.Text;
if (string.IsNullOrWhiteSpace(cPassword))
{
dxErrorProvider1.SetError(txt_ConfirmPassWord, "确认密码不可以为空!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (EncryptionHelper.EncryptByMD5(cPassword).Length > 50)
{
dxErrorProvider1.SetError(txt_ConfirmPassWord, "确认密码长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (!nPassword.Equals(cPassword))
{
dxErrorProvider1.SetError(txt_ConfirmPassWord, "两次密码输入必须相同!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
#endregion
#region
//if (!PassWordValidata.Instance.CheckAll(nPassword))
//{
// dxErrorProvider1.SetError(txt_NewPassWord, PassWordValidata.Instance.PassWordRulesText, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
// return false;
//}
#endregion
#region
APIResponseData apiResponseData = UserManager.Instance.ValidePassWord(GlobalInfo.CurrentUser.LoginCode, EncryptionHelper.EncryptByMD5(txt_OldPassWord.Text));
if (apiResponseData.Code == -1)
{
dxErrorProvider1.SetError(txt_OldPassWord, apiResponseData.Message, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
#endregion
#region 3
//apiResponseData = HistoryManager.Instance.GetUserPwdHis(GlobalInfo.CurrentUser.AutoID);
//if (apiResponseData.Code == -1)
//{
// dxErrorProvider1.SetError(txt_NewPassWord, $"新密码校验失败,请重试!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
// return false;
//}
//else if (apiResponseData.Code == 1)
//{
// List<UserPassChangeLogInfo> lst = apiResponseData.ToDeserializeObject<List<UserPassChangeLogInfo>>();
// if (lst.Any(x => x.PwdNew == EncryptionHelper.EncryptByMD5(nPassword)))
// {
// dxErrorProvider1.SetError(txt_NewPassWord, $"新密码校验失败与最近的3次密码不可重复", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
// return false;
// }
//}
#endregion
dxErrorProvider1.SetError(txt_OldPassWord, "");
dxErrorProvider1.SetError(txt_NewPassWord, "");
dxErrorProvider1.SetError(txt_ConfirmPassWord, "");
return true;
}
catch (Exception ex)
{
throw ex;
}
}
}
}