using Bro.Common.Helper;
using Bro.Common.Model;
using Bro.Common.Model.Authority;
using PostSharp.Aspects;
using SuperDog;
using System;
using System.Configuration;
using System.Reflection;
using System.Threading;
namespace Bro.Process
{
//public partial class ProcessControl
//{
// internal volatile bool IsAuthorized = true;
// Timer _authorityTimer = null;
// DogFeature _feature = new DogFeature(1);
// const int AUTHORITY_CHECK_INTERVAL = 1000 * 60 * 60;
// private void SetAuthorityCheck()
// {
// var isCheck = ConfigurationManager.AppSettings["AuthorityCheck"];
// if (isCheck != "False")
// {
// _authorityTimer = new Timer(OnCheckAuthority, null, 0, AUTHORITY_CHECK_INTERVAL);
// }
// }
// private void OnCheckAuthority(object state)
// {
// var isCheck = ConfigurationManager.AppSettings["AuthorityCheck"];
// if (isCheck != "False")
// {
// using (var dog = new Dog(_feature))
// {
// string vendorCodes = "FIgWctNxfC4kOOrFk52ktOm6JBRreMTI2ckQRUwjJmzstXN2awbyKGfjdlWcKFpjMiJRwirzPlJKSThN1nC7axSY4Y9l5+aRzCYI8WoYFmtx4zBx2n1fQ9Rb/CGk99Z9mM5mpZQVH+PGmZGsEjfSBdY12HjIcPVHGmMyecskMlhIGxDqUg8ndCk8/0fqexKbQCffDiGAPbxZgxKlRAnxJFOwd1V2Hmq3Iln1YNhyRRbgudU7kPCY/RsxBKXtL4wym96d2jQNDcKV8A5Anb4UlSLbac7OcrCZEBSUTpMjyDYRvDWFWTmfVKX9/vuI4VvKjr2t/wt01Nu0tQ0a4AVtQZk+l13WZkwkkeOUh6gtvVFJZH61hpwhOOjnN9dNw8WSYBYC/NyaMjiv7yRVHt9K/Bs76T8I0ias55BP1GXe6C+zGJ9KXK+baCLojMTObj3Bs9JFhDwEDgEjRDCxz9POZnE3XPe/2ET4KbRP5cXZsX7rxbnwQ33E/cKcG1hidG3RTLu7d+IRob9vgpeeUYXB8OHSoReJBsjhJEWBCDko9YnTb1FcO0YwPQdxW0BaVf1n6XAXlPUA6cGP552Kp3F0pcIxVKKGpYUeDL7oIFQrtnJ5aW7mB+/c35BDTCueM8wQIJ3b2KOI+lueC+dbhpHffVgtPnrh/atxcZxUoM2/KxjvniCYtUOKbeYh8Gqn1MDk1bAO2B9KNBrbGuWJpgDTfZunE/ZVtd09clExYJ8NW2Lw6pfNB3nbh1MlRUmmhQPIDubOnjiaBVbCQGF6Nm4/M0aIywSPJCMPaXK0sso5v+EDM4frryOPkvBEAbDyIuU+yQkO9vnYggKLAezyxZNxVqQgXcMaS0WyJxZxjFku7/Os8YU5z54DeOu6zDRD4zAjUKT7JIQcJKvtYGVB5lvirKDqISzDjsHcq4NJyQbQzg462y9o90ljUwCCMJrBmOw4NHpYKTNypN8aCsYmiebwag==";
// var status = dog.Login(vendorCodes, "");
// if (status != DogStatus.StatusOk)
// {
// LogAsync(DateTime.Now, "权限提示", "未插入加密狗或加密已到期,请联系相关人员!");
// IsAuthorized = false;
// return;
// }
// DateTime time = new DateTime();
// if (DogStatus.TimeError == dog.GetTime(ref time))
// {
// LogAsync(DateTime.Now, "权限提示", "请勿篡改时间!");
// IsAuthorized = false;
// return;
// }
// }
// }
// IsAuthorized = true;
// }
//}
public class AuthorityCheckAspect : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
var process = args.Instance as ProcessControl;
if (!AuthorityCheck.IsAuthorityOK)
{
string desc = args.Method.GetCustomAttribute().MethodDesc;
process.LogAsync(DateTime.Now, "权限检测失败", $"权限检测失败,方法{desc}无法执行,请联系相关人员");
args.ReturnValue = new ProcessResponse((int)ReturnValue.UNAUTHORIZATION);
args.FlowBehavior = FlowBehavior.Return;
}
}
}
}