New file |
| | |
| | | using Shared; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace HDL_ON.Stan |
| | | { |
| | | /// <summary> |
| | | /// 共通检测逻辑 |
| | | /// </summary> |
| | | public class HdlCheckLogic |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// 共通检测逻辑 |
| | | /// </summary> |
| | | private static HdlCheckLogic m_Current = null; |
| | | /// <summary> |
| | | /// 共通检测逻辑 |
| | | /// </summary> |
| | | public static HdlCheckLogic Current |
| | | { |
| | | get |
| | | { |
| | | if (m_Current == null) |
| | | { |
| | | m_Current = new HdlCheckLogic(); |
| | | } |
| | | return m_Current; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 验证认证的次数 |
| | | /// </summary> |
| | | private int checkSecurityCount = 3; |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 验证解锁认证_______________________ |
| | | |
| | | /// <summary> |
| | | /// 验证解锁认证 |
| | | /// </summary> |
| | | /// <param name="addTopFrame">验证界面是否添加头部Frame(只对手势密码和数字密码有效)</param> |
| | | /// <param name="successEvent">验证成功之后的回调函数,失败不会回调(0:没有设置有验证 1:验证成功)</param> |
| | | /// <param name="loadPageBeforEvent">加载指定解锁认证界面之前的事件,0:取消当前验证并切换到其他方式,1:数字密码,2:手势密码,3:指纹密码,4:面容ID</param> |
| | | public void CheckUnlockSecurity(bool addTopFrame, Action<int> successEvent, Action<string> loadPageBeforEvent = null) |
| | | { |
| | | //验证指纹和面容id都使用指纹验证 |
| | | if (UserInfo.Current.appUnlockType.Contains("3") || UserInfo.Current.appUnlockType.Contains("4")) |
| | | { |
| | | //先把这个东西置空 |
| | | TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null; |
| | | |
| | | TouchIDUtils.TouchIDSupperType type = TouchIDUtils.getTouchIDSupperType(); |
| | | if (type == TouchIDUtils.TouchIDSupperType.TouchID) |
| | | { |
| | | //通知使用指纹验证 |
| | | loadPageBeforEvent?.Invoke("3"); |
| | | |
| | | //Touch ID验证 |
| | | TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent += (sender2, e2) => |
| | | { |
| | | if (e2 == TouchIDUtils.TouchIDState.Success) |
| | | { |
| | | //次数还原 |
| | | this.checkSecurityCount = 3; |
| | | |
| | | //TouchID验证成功 |
| | | successEvent?.Invoke(1); |
| | | successEvent = null; |
| | | loadPageBeforEvent = null; |
| | | TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null; |
| | | } |
| | | else if (e2 == TouchIDUtils.TouchIDState.InputPassword) |
| | | { |
| | | //通知取消了验证,切换为其他验证 |
| | | loadPageBeforEvent?.Invoke("0"); |
| | | |
| | | //使用密码或者手势密码解锁认证 |
| | | this.CheckUnlockSecurityByPassword(addTopFrame, successEvent, loadPageBeforEvent); |
| | | } |
| | | }; |
| | | //提示数字密码验证还是绘制手势验证 |
| | | string strTitle = this.GetVerificationTitleString(); |
| | | |
| | | TouchIDUtils.Instance.showTouchIDWithDescribe(strTitle, Language.StringByID(StringId.PleaseVerifyTheFingerprint)); |
| | | } |
| | | //他关闭了手机的指纹验证 |
| | | else |
| | | { |
| | | //使用密码或者手势密码解锁认证 |
| | | this.CheckUnlockSecurityByPassword(addTopFrame, successEvent, loadPageBeforEvent); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //使用密码或者手势密码解锁认证 |
| | | this.CheckUnlockSecurityByPassword(addTopFrame, successEvent, loadPageBeforEvent); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 使用密码或者手势密码解锁认证 |
| | | /// </summary> |
| | | /// <param name="addTopFrame">验证界面是否添加头部Frame(只对手势密码和数字密码有效)</param> |
| | | /// <param name="successEvent">验证成功之后的回调函数,失败不会回调(0:没有设置有验证 1:验证成功)</param> |
| | | /// <param name="loadPageBeforEvent">加载指定解锁认证界面之前的事件,1:数字密码,2:手势密码,3:指纹密码,4:面容ID</param> |
| | | private void CheckUnlockSecurityByPassword(bool addTopFrame, Action<int> successEvent, Action<string> loadPageBeforEvent = null) |
| | | { |
| | | if (UserInfo.Current.appUnlockType.Contains("1")) |
| | | { |
| | | //通知使用数字密码验证 |
| | | loadPageBeforEvent?.Invoke("1"); |
| | | |
| | | //显示数字密码解锁认证界面 |
| | | this.ShowAppNumPasswordSecurityForm(addTopFrame, successEvent); |
| | | } |
| | | else if (UserInfo.Current.appUnlockType.Contains("2")) |
| | | { |
| | | //通知使用手势密码验证 |
| | | loadPageBeforEvent?.Invoke("2"); |
| | | |
| | | //显示手势密码解锁认证界面 |
| | | this.ShowAppGestureSecurityForm(addTopFrame, successEvent); |
| | | } |
| | | else |
| | | { |
| | | //没有设置有验证 |
| | | successEvent?.Invoke(0); |
| | | successEvent = null; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 显示数字密码解锁认证界面 |
| | | /// </summary> |
| | | /// <param name="addTopFrame">验证界面是否添加头部Frame(只对手势密码和数字密码有效)</param> |
| | | /// <param name="successEvent">验证成功之后的回调函数,失败不会回调(0:没有设置有验证 1:验证成功)</param> |
| | | private void ShowAppNumPasswordSecurityForm(bool addTopFrame, Action<int> successEvent) |
| | | { |
| | | var form = new AppNumPasswordSecurityForm(); |
| | | form.AddForm(addTopFrame, Language.StringByID(StringId.PlsEntryPassword), string.Empty); |
| | | form.ActionEvent += (div, password) => |
| | | { |
| | | //密码输入结束 |
| | | if (div == 1) |
| | | { |
| | | //密码正确 |
| | | if (UserInfo.Current.appUnlockPasswrod == password) |
| | | { |
| | | //次数还原 |
| | | this.checkSecurityCount = 3; |
| | | |
| | | form.CloseForm(); |
| | | //回调 |
| | | successEvent?.Invoke(1); |
| | | successEvent = null; |
| | | } |
| | | else |
| | | { |
| | | this.checkSecurityCount--; |
| | | if (this.checkSecurityCount == 0) |
| | | { |
| | | //管理员身份验证失败,请重新登录 |
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.CheckAdminFailAndLoginAgain)); |
| | | HDLCommon.Current.Logout(); |
| | | |
| | | this.checkSecurityCount = 3; |
| | | return; |
| | | } |
| | | //验证失败,密码错误. |
| | | form.ShowErrorMsg(Language.StringByID(StringId.AuthenticationFailedPasswordError)); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 显示手势密码解锁认证界面 |
| | | /// </summary> |
| | | /// <param name="addTopFrame">验证界面是否添加头部Frame(只对手势密码和数字密码有效)</param> |
| | | /// <param name="successEvent">验证成功之后的回调函数,失败不会回调(0:没有设置有验证 1:验证成功)</param> |
| | | private void ShowAppGestureSecurityForm(bool addTopFrame, Action<int> successEvent) |
| | | { |
| | | var form = new AppGestureSecurityForm(); |
| | | form.AddForm(addTopFrame, Language.StringByID(StringId.VerifyGesturePassword), string.Empty); |
| | | form.SetTitleText(string.Empty); |
| | | form.ActionEvent += (div, password) => |
| | | { |
| | | //密码输入结束 |
| | | if (div == 1) |
| | | { |
| | | //密码正确 |
| | | if (UserInfo.Current.appUnlockPasswrod == password) |
| | | { |
| | | //次数还原 |
| | | this.checkSecurityCount = 3; |
| | | |
| | | form.CloseForm(); |
| | | //回调 |
| | | successEvent?.Invoke(1); |
| | | successEvent = null; |
| | | } |
| | | else |
| | | { |
| | | this.checkSecurityCount--; |
| | | if (this.checkSecurityCount == 0) |
| | | { |
| | | //管理员身份验证失败,请重新登录 |
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.CheckAdminFailAndLoginAgain)); |
| | | HDLCommon.Current.Logout(); |
| | | |
| | | this.checkSecurityCount = 3; |
| | | return; |
| | | } |
| | | |
| | | //验证失败,密码错误. |
| | | form.ShowErrorMsg(Language.StringByID(StringId.AuthenticationFailedPasswordError)); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断是否数字验证、否则绘制手势验证 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private string GetVerificationTitleString() |
| | | { |
| | | //优先使用密码验证,密码验证和手势验证不共存 |
| | | if (UserInfo.Current.appUnlockType.Contains("1") == true) |
| | | { |
| | | return Language.StringByID(StringId.PasswordVerification); |
| | | } |
| | | else |
| | | { |
| | | return Language.StringByID(StringId.GestureVerification); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |