Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
        /// <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");
        }