using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Wellan.Data; using Wellan.Common; using System.Data.Common; /// /// 使用者變更密碼 /// public partial class forms_BPSN_UNBPSNP : Wellan.Web.UI.WUserControlBase { protected void Page_Load(object sender, EventArgs e) { } protected override void OnInit(EventArgs e) { base.OnInit(e); SetClientFocus(txtOldPassword); } protected void btnOK_Click(object sender, EventArgs e) { lbErrMsg.Text = ""; if (txtNewPassword.Text == "") { lbErrMsg.Text = GetString("BPSN.NEWEMPTY"); } else if (txtConfirmNewPassword.Text == "") { lbErrMsg.Text = GetString("BPSN.CONFEMPTY"); } else if (txtNewPassword.Text != txtConfirmNewPassword.Text) { lbErrMsg.Text = GetString("BPSN.NEWDIFFER"); } lbErrMsg.Visible = lbErrMsg.Text != ""; if (lbErrMsg.Visible) return; // 驗證舊密碼是否正確 WQuery query = new WQuery(ConnectionType, ConnectionString); DataTable ds; if (!UserId.ToUpper().StartsWith("Z")) ds = query.Select("SELECT BPAWD FROM BPSNView WHERE BPENO='" + UserId + "'"); else ds = query.Select("SELECT BPPWD AS BPAWD FROM BPAP WHERE BPENO='" + UserId + "'"); string bpawd = ds.Rows[0]["BPAWD"].ToString(); if (bpawd == "\u007f\u007f\u007f\u007f") bpawd = ""; else bpawd = WGuard1.KeyDec(bpawd); if (txtOldPassword.Text != bpawd) { lbErrMsg.Text = GetString("BPSN.OLDERR"); lbErrMsg.Visible = true; return; } // 驗證新密碼是否合乎格式 string newPass = WGuard1.KeyEnc(txtNewPassword.Text); if (WGuard1.KeyDec(newPass) != txtNewPassword.Text) { lbErrMsg.Text = GetString("BPSN.NEWERR"); lbErrMsg.Visible = true; return; } // 寫入新密碼 DbCommand cmd = query.NewCommand(); DbConnection conn = query.NewConnection(); cmd.Connection = conn; if (!UserId.ToUpper().StartsWith("Z")) { cmd.CommandText = "UPDATE BPSN SET BPAWD=@BPAWD,TRDAT=GETDATE(), TRMOD='UPDATE', TRUSR=@TRUSR WHERE BPENO=@BPENO"; } else { cmd.CommandText = "UPDATE BPAP SET BPPWD=@BPAWD,TRDAT=GETDATE(), TRMOD='UPDATE', TRUSR=@TRUSR WHERE BPENO=@BPENO"; } cmd.Parameters.Add(query.NewParameter("@BPAWD", newPass)); cmd.Parameters.Add(query.NewParameter("@TRUSR", UserId)); cmd.Parameters.Add(query.NewParameter("@BPENO", UserId)); conn.Open(); DbTransaction tran = conn.BeginTransaction(); cmd.Transaction = tran; try { int i = cmd.ExecuteNonQuery(); if (i == 1) { tran.Commit(); MultiView1.ActiveViewIndex = 1; Session["NOPASSWORD"] = "FALSE"; return; } else { tran.Rollback(); lbErrMsg.Text = GetString("BPSN.NEWERR"); lbErrMsg.Visible = true; return; } } catch { tran.Rollback(); lbErrMsg.Text = GetString("BPSN.NEWERR"); lbErrMsg.Visible = true; } finally { conn.Close(); cmd.Dispose(); } } }