/// <summary> /// 授权 /// </summary> /// <param name = "id" > 用户编号 </ param > /// < param name="token">用户token</param> /// <param name = "actionContext" ></ param > /// < returns ></ returns > public static bool Authorize(string authorization, string agents, Func <TokenAuthIdentity, HttpClientType, bool> checkToken) { try { if (!authorization.StartsWith(AuthConst.AuthPrefix)) { return(false); } var auth = AuthReader.Read(authorization); if (auth == null) { return(false); } else { if (auth.Id == 0 || !StringValid.IsEmpty(auth.Token)) { return(false); } else { return(checkToken(auth, HttpClientReader.Read(agents))); } } } catch { return(false); } }
public static HttpClientType Read(HttpRequestMessage request) { var agents = request.Headers.UserAgent; foreach (var agent in agents) { if (!NullValid.IsNull(agent.Product) || !StringValid.IsEmpty(agent.Product.Name)) { continue; } else if (agent.Product.Name.ToLower().Contains("android")) { return(HttpClientType.AndroidNative); } else if (agent.Product.Name.ToLower().Contains("ios") || agent.Product.Name.ToLower().Contains("iphone")) { return(HttpClientType.IosNative); } else if (agent.Product.Name.ToLower().Contains("wap")) { return(HttpClientType.Wap); } } return(HttpClientType.Web); }
public static HttpClientType Read(string agents) { if (!NullValid.IsNull(agents) || !StringValid.IsEmpty(agents)) { return(HttpClientType.Web); } else if (agents.ToLower().Contains("android")) { return(HttpClientType.AndroidNative); } else if (agents.ToLower().Contains("ios") || agents.ToLower().Contains("iphone")) { return(HttpClientType.IosNative); } else if (agents.ToLower().Contains("wap")) { return(HttpClientType.Wap); } else { return(HttpClientType.Web); } }
/// <summary> /// Регистрирует сетевые события. /// </summary> internal void NetworkEventsLoad() { /** * Вызывается при удачной авторизации в системе. */ NetworkDelegates.Add(delegate(MResponse ServerResponse) { AuthTimer?.Stop(); var NetUser = Package.Unpacking <MUserNetwork>(ServerResponse.DataBytes); UserInfo.NetworkSelf = NetUser; UserInfo.NetworkUsers.Add(NetUser); _MainWindow._MainMenuWindow = new MainMenuWindow(_MainWindow); _MainWindow.Hide(); _MainWindow._MainMenuWindow.Show(); _MainWindow.AuthElements_Unblock(); if ((bool)_MainWindow.CheckBox_AutoAuth.IsChecked) { Data.Windows.AutomaticAuthorizate.Save(UserData); } }, _Dispatcher, 2, "User.Auth.Confirm", "MainWindow"); NetworkDelegates.Add(delegate(MResponse ServerResponse) { var NetUsers = Package.Unpacking <MUserNetwork[]>(ServerResponse.DataBytes); Debug.Log($"Получен список пользователей в количестве {NetUsers.Length} записей"); var NewUsers = new List <MUserNetwork>(); foreach (var NetUser in NetUsers) { if (!Array.Exists(UserInfo.NetworkUsers.ToArray(), x => x.NetworkId == NetUser.NetworkId)) { UserInfo.NetworkUsers.Add(NetUser); Debug.Log($"Пользователь {NetUser.NetworkId} был добавлен в список."); } } }, _Dispatcher, -1, "Users.Update", "MainWindow"); NetworkDelegates.Add(delegate(MResponse ServerResponse) { var NetUser = Package.Unpacking <MUserNetwork>(ServerResponse.DataBytes); if (!Array.Exists(UserInfo.NetworkUsers.ToArray(), x => x.NetworkId == NetUser.NetworkId)) { UserInfo.NetworkUsers.Add(NetUser); Debug.Log($"Пользователь {NetUser.NetworkId} был добавлен в список."); } }, _Dispatcher, -1, "Users.Add", "MainWindow"); NetworkDelegates.Add(delegate(MResponse ServerResponse) { var NetworkId = Package.Unpacking <string>(ServerResponse.DataBytes); MUserNetwork UserNetwork = UserInfo.NetworkUsers.Find(x => x.NetworkId == NetworkId); if (UserNetwork != null) { if (UserNetwork.NetworkId == UserInfo.NetworkSelf.NetworkId) { UserInfo.NetworkSelf = null; Debug.Log("Собственный компонент пользователя был удалён."); _MainWindow._MainMenuWindow?.Close(); } UserInfo.NetworkUsers.Remove(UserNetwork); Debug.Log($"Пользователь {NetworkId} был удалён из списка."); } }, _Dispatcher, -1, "Users.Remove", "MainWindow"); /** * Вызывается при неудачной авторизации в системе. */ NetworkDelegates.Add(delegate(MResponse ServerResponse) { AuthTimer?.Stop(); if (StringValid.IsValidEmail(_MainWindow.TextBox_LoginOrEmail.Text)) { new AlertWindow("Ошибка", "Не верно указана почта или пароль!"); } else { new AlertWindow("Ошибка", "Не верно указан логин или пароль!"); } _MainWindow.AuthElements_Unblock(); }, _Dispatcher, 2, "User.Auth.Error", "MainWindow"); }