Newer
Older
GHFX_REFACTOR / FrmChangePassword.cs
using System;
using System.Data;
using System.Data.OracleClient;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Cyberpipe.SM4;
using DevComponents.DotNetBar;

namespace Cyberpipe
{
    public partial class FrmChangePassword : Office2007Form
    {
        public static bool IS_OPEN;

        public FrmChangePassword()
        {
            InitializeComponent();
        }

        private void btn_ok_Click(object sender, EventArgs e)
        {
            try
            {
                if (String.IsNullOrEmpty(txt_pwd_new.Text.Trim()))
                {
                    MessageBox.Show("新密码不能为空!");
                    return;
                }
                if (!txt_pwd_new.Text.Trim().Equals(txt_pwd_cfm.Text.Trim()))
                {
                    MessageBox.Show("请确认要修改的密码!");
                    return;
                }

                // 验证密码的复杂度——大小写字母+数字+特殊字符,长度不低于8位
                bool regMatch = Regex.IsMatch(txt_pwd_new.Text.Trim(), "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}$");
                if (regMatch == false)
                {
                    MessageBox.Show("请确保密码强度:至少包含字母、数字和特殊字符,不少于8位!");
                    return;
                }
                string sql = "select count(*) from casic_userinfotest where SYSNAME='GHFX' and USERNAME=:username and PASSWORD=:passwordOld";

                OracleParameter usernameParam = new OracleParameter(":username", Utility.userName);
                OracleParameter passwordOldParam = new OracleParameter(":passwordOld", SM4Utils.SM4EncryptStr(txt_pwd_old.Text.Trim()));

                int count = int.Parse(OledbHelper.ExecuteScalar(sql, usernameParam, passwordOldParam).ToString());
                if (count <= 0)
                {
                    MessageBox.Show("密码错误!");
                    return;
                }
                sql = "update casic_userinfotest set password='" + SM4Utils.SM4EncryptStr(txt_pwd_new.Text.Trim()) + "' where sysname='GHFX' and username='" + Utility.userName + "'";
                int rowCount = OracleUtils.ExecuteNonQuery(OracleUtils.ConnectionString, CommandType.Text, sql);
                if (rowCount == 1)
                {
                    MessageBox.Show("修改成功!请退出系统后重新登录");
                } else
                {
                    MessageBox.Show("修改失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("修改失败:" + ex);
                this.Hide();
            }

            this.Hide();

        }

        private void FrmChangePassword_Load(object sender, EventArgs e)
        {
            IS_OPEN = true;
        }

        private void FrmChangePassword_FormClosing(object sender, FormClosingEventArgs e)
        {
            IS_OPEN = false;
        }
    }
}