using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter.Safety { /// /// 修改管理员密码的画面 /// public class EdtiorAdminPasswordForm : UserCenterCommonForm { #region ■ 变量声明___________________________ /// /// 信息提示控件 /// private ViewNormalControl txtMsg = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// public void ShowForm() { //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedPassword)); //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { //请输入管理员密码 var btnTitle = new TitleViewControl(); btnTitle.TextColor = UserCenterColor.Current.TextGrayColor; btnTitle.Y = Application.GetRealHeight(40); btnTitle.TextID = R.MyInternationalizationString.uPleaseInputAdministratorPassword; bodyFrameLayout.AddChidren(btnTitle); //原密码 string placeholderText = Language.StringByID(R.MyInternationalizationString.uOldPassword); var rowPsw1 = new RowPasswordControl(); rowPsw1.Y = btnTitle.Bottom; bodyFrameLayout.AddChidren(rowPsw1); rowPsw1.Init(placeholderText); //忘记密码? var btnForgotPsw = new ViewNormalControl(800, true); btnForgotPsw.TextColor = UserCenterColor.Current.TextBlueColor; btnForgotPsw.TextID = R.MyInternationalizationString.ForgotPasswordMsg; btnForgotPsw.Y = rowPsw1.Bottom + Application.GetRealHeight(10); btnForgotPsw.X = ControlCommonResourse.XXLeft; bodyFrameLayout.AddChidren(btnForgotPsw); btnForgotPsw.MouseUpEventHandler += (sender, e) => { //检验身份然后显示重置画面 this.CheckUserAuthenticationAndShowForm(); }; //新密码 placeholderText = Language.StringByID(R.MyInternationalizationString.uNewPassword); var rowPsw2 = new RowPasswordControl(); rowPsw2.Y = btnForgotPsw.Bottom; bodyFrameLayout.AddChidren(rowPsw2); rowPsw2.Init(placeholderText); //确认新密码 placeholderText = Language.StringByID(R.MyInternationalizationString.uConfirmNewPassword); var rowPsw3 = new RowPasswordControl(); rowPsw3.Y = rowPsw2.Bottom; bodyFrameLayout.AddChidren(rowPsw3); rowPsw3.Init(placeholderText); //提示信息 this.txtMsg = new ViewNormalControl(800, true); txtMsg.X = ControlCommonResourse.XXLeft; txtMsg.Y = rowPsw3.Bottom + Application.GetRealHeight(5); txtMsg.TextColor = UserCenterColor.Current.Red; bodyFrameLayout.AddChidren(txtMsg); //完成 var btnfinish = new TopLayoutFinshView(); topFrameLayout.AddChidren(btnfinish); btnfinish.MouseUpEventHandler += (sender, e) => { //执行修改管理员密码 this.ChangedAdminPassword(rowPsw1.Text, rowPsw2.Text, rowPsw3.Text); }; } #endregion #region ■ 修改密码___________________________ /// /// 执行修改管理员密码 /// /// 旧密码 /// 新密码 /// 确认密码 private async void ChangedAdminPassword(string oldPassword, string pswValue1, string pswValue2) { //检测密码 string msg = this.CheckPassword(oldPassword, pswValue1, pswValue2); if (msg != string.Empty) { Application.RunOnMainThread(() => { txtMsg.Text = msg; }); return; } //执行修改 bool result = await Common.LocalSafeguard.Current.ChangedAdminPassword(oldPassword, pswValue1); if (result == false) { return; } //管理员密码已更新 string Refmsg = Language.StringByID(R.MyInternationalizationString.uAdminPasswordRefreshMsg); Application.RunOnMainThread(() => { var form = new PasswordRefreshMsgForm(); this.AddFromAndRemoveNowForm(form, Refmsg); }); } #endregion #region ■ 一般方法___________________________ /// /// 密码检查,返回错误信息,无错误信息(空字符串)则表示成功 /// /// /// /// /// private string CheckPassword(string oldPassword, string pswValue1, string pswValue2) { if (pswValue1 == string.Empty) { //请输入新密码 return Language.StringByID(R.MyInternationalizationString.uPleaseInputNewPassword); } if (pswValue2 == string.Empty) { //请输入确认密码 return Language.StringByID(R.MyInternationalizationString.PleaseInputConfirmPsw); } if (pswValue1.Length < UserCenterResourse.PasswordLength) { //密码长度不低于{0}位数 return string.Format(Language.StringByID(R.MyInternationalizationString.PswLengthMsg), UserCenterResourse.PasswordLength); } if (pswValue1 != pswValue2) { //两次输入的密码不一致 return Language.StringByID(R.MyInternationalizationString.SecondPswNotEqual); } return string.Empty; } #endregion #region ■ 身份验证___________________________ /// /// 身份验证 /// private void CheckUserAuthenticationAndShowForm() { //尝试验证的次数 int count = 3; var dialog = new DialogInputFrameControl(this, DialogFrameMode.OnlyPassword); dialog.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputAccountPswToCheckAdmin)); dialog.SetTitleText(Language.StringByID(R.MyInternationalizationString.uUserAuthentication)); dialog.SetOkButtonText(Language.StringByID(R.MyInternationalizationString.uVerification)); dialog.ComfirmClickEvent += () => { if (dialog.InputText == string.Empty) { //请输入账号的登录密码 this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uPleaseInputAccountPswToCheckAdmin)); return; } if (dialog.InputText == Common.Config.Instance.Password) { dialog.CloseDialog(); var from = new ResetAdminPasswordForm(); this.AddFromAndRemoveNowForm(from); return; } count--; if (count > 0) { //管理员身份验证失败 string msg = Language.StringByID(R.MyInternationalizationString.uCheckAdministratorFail); this.ShowErrorMsg(msg); } else { dialog.CloseDialog(); //管理员身份验证失败,请重新登录 string msg2 = Language.StringByID(R.MyInternationalizationString.uCheckAdministratorFailAndReload); this.ShowTip(msg2); UserCenterLogic.ReLoginAgain(Common.Config.Instance.Account); } }; } #endregion } }