#region
using System;
using System.Windows.Forms;
using CSFrameworkV5.Business;
using CSFrameworkV5.Business.BLL_Permission;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Core.Common;
using CSFrameworkV5.Library.CommonClass;
using CSFrameworkV5.Models;
#endregion
namespace CSFrameworkV5.Library.PermissionForms
{
///
/// 修改密码
///
public partial class frmModifyPwd : frmBaseDialog
{
private ModifyPwdType _type;
private LoginUser _user;
//私有构造器
private frmModifyPwd()
{
InitializeComponent();
}
private void BindingDataSet()
{
var data = CommonData.GetSystemDataSet();
DataBinder.BindingLookupEditDataSource(txtDataset, data,
"DataSetName", "DataSetID");
txtDataset.EditValue = _user.DBID;
}
private void btnCancel_Click(object sender, EventArgs e)
{
Close();
}
private void btnOk_Click(object sender, EventArgs e)
{
if (txtAccount.Text.Trim() == string.Empty)
{
Msg.Warning("请输入登录帐号!");
txtAccount.Focus();
return;
}
if (txtOldPwd.EditValue == null ||
txtOldPwd.EditValue.ToStringEx().Trim() == string.Empty)
{
Msg.Warning("请输入旧密码!");
txtOldPwd.Focus();
return;
}
//取用户的资料
var dt = new bllUser().GetUser(txtAccount.Text);
if (dt.Rows.Count > 0)
{
var pwd = dt.Rows[0][tb_MyUser.Password].ToStringEx();
pwd = KeyProvider.Default.Decrypt(pwd);
//管理员修改用户密码不需要验证旧密码
if (Loginer.CurrentUser.IsAdmin())
{
txtOldPwd.Text = pwd;
}
else
{
if (pwd != txtOldPwd.Text.Trim())
{
Msg.Warning("所输入旧密码不正确!");
txtOldPwd.Focus();
return;
}
}
}
else
{
Msg.Warning("登录帐号'" + txtAccount.Text + "'不存在!");
return;
}
if (txtPwdF.EditValue == null ||
txtPwdF.EditValue.ToStringEx().Trim() == string.Empty)
{
Msg.Warning("请输入新密码!");
txtPwdF.Focus();
return;
}
if (txtPwdF.Text.Trim().Length < 3)
{
Msg.Warning("密码长度必须大于2位!");
txtPwdF.Focus();
return;
}
if (txtPwdS.EditValue == null ||
txtPwdS.EditValue.ToStringEx().Trim() == string.Empty)
{
Msg.Warning("请确认新密码!");
txtPwdS.Focus();
return;
}
if (txtPwdF.EditValue.ToStringEx() !=
txtPwdS.EditValue.ToStringEx())
{
Msg.Warning("两次新密码不相同!");
txtPwdF.Focus();
return;
}
if (Msg.AskQuestion("要修改密码?"))
try
{
frmWaitingEx.ShowMe(this);
var pwd1 = KeyProvider.Default.Encrypt(txtOldPwd.Text);
var pwd2 = KeyProvider.Default.Encrypt(txtPwdF.Text);
var success =
new bllUser().ModifyPassword(txtAccount.Text, pwd1,
pwd2);
if (success)
{
_user.Password = txtPwdF.Text;
Msg.ShowInformation("修改成功!");
Close();
}
else
{
Msg.Warning("修改出错!");
}
}
finally
{
frmWaitingEx.HideMe(this);
}
}
///
/// 执行窗体.参数:loginInfo为登录对象ss
///
public static void Execute(LoginUser user, ModifyPwdType type,
Form owner)
{
var form = new frmModifyPwd();
form.txtAccount.Text = user.Account;
form._user = user;
form._type = type;
form.Owner = owner;
form.ShowDialog();
}
private void frmModifyPwd_Activated(object sender, EventArgs e)
{
if (txtAccount.CanFocus)
txtAccount.Focus();
else
txtOldPwd.Focus();
}
private void frmModifyPwd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) SendKeys.Send("{Tab}"); //发送Tab键
}
private void frmModifyPwd_Load(object sender, EventArgs e)
{
BindingDataSet();
//此段代码仅用户管理窗体修改密码有效
if (ModifyPwdType.UserManage == _type)
{
if (Loginer.CurrentUser.IsAdmin())
{
txtOldPwd.Text = "************"; //仅用于显示
txtOldPwd.Enabled = false;
}
//普通用户仅修改本人的密码
if (false == Loginer.CurrentUser.IsAdmin())
//如果已经登录,修改当前用户的密码
if (Loginer.CurrentUser.Account != string.Empty)
{
txtAccount.Text = Loginer.CurrentUser.Account;
txtAccount.Enabled = false;
}
}
}
}
///
/// 修改密码类型
///
public enum ModifyPwdType
{
///
/// 登录窗体直接修改密码
///
LoginWindowDirect,
///
/// 用户管理窗体修改密码
///
UserManage
}
}