Exemplo n.º 1
0
        public EditorMainMenuWindow(MainMenuWindow _MainMenuWindow, Project MProject)
        {
            InitializeComponent();
            LoadWindowParent(_MainMenuWindow, MProject);
            EventsInitialize();

            NetworkDelegates.Add(delegate(MResponse ServerResponse)
            {
                this?.Close();
            }, Dispatcher, -1, "User.Disconnected.Confirm", "EditorMainMenuWindow");

            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)
                    {
                        this?.Close();
                    }
                }
            }, Dispatcher, -1, "Users.Remove", "EditorMainMenuWindow");
        }
Exemplo n.º 2
0
 public static WUser MUserToWUser(MUserNetwork User, int TeamGroupId = 0)
 {
     return(new WUser
     {
         Id = User.Id,
         Login = User.Login,
         Email = User.Email,
         Name = User.Name,
         Surname = User.Surname,
         Patronymic = User.Patronymic,
         TeamGroupId = TeamGroupId
     });
 }
Exemplo n.º 3
0
        public static void Add(MNetworkClient NetworkClient, MUserNetwork NetworkUser)
        {
            ActiveUsersMoreInfo.Add(new UserStructure
            {
                NetworkClient = NetworkClient,
                NetworkUser   = NetworkUser
            });

            ActiveUsers.Add(NetworkUser);

            Debug.Log("Пользователь добавлен в системный список");

            Sender.Send(NetworkClient, "Users.Update", ActiveUsers.ToArray());
            Sender.SendOmit(NetworkClient, "Users.Add", NetworkUser);
        }
Exemplo n.º 4
0
        private void UsersUpdate(MResponse ClientResponse, MNetworkClient NetworkClient)
        {
            try
            {
                var User = Package.Unpacking <User>(ClientResponse.DataBytes);

                using (var db = new DatabaseContext())
                {
                    MUserNetwork NetUser = Users.GetUserById(NetworkClient.Id);

                    if (NetUser.Id != User.Id)
                    {
                        if (User.Id == 1 && NetUser.Id != 1)
                        {
                            return;
                        }

                        if (!AccessController.IsPrivilege(NetworkClient, "users.edit"))
                        {
                            return;
                        }
                    }

                    var DbUser = db.Users.FirstOrDefault(x => x.Id == User.Id);
                    DbUser.Login      = User.Login;
                    DbUser.Email      = User.Email;
                    DbUser.Name       = User.Name;
                    DbUser.Surname    = User.Surname;
                    DbUser.Patronymic = User.Patronymic;

                    if (User.Password != null && User.Password.Length != 0 && User.Password.Trim() != string.Empty)
                    {
                        DbUser.Password = Crypter.Blowfish.Crypt(User.Password);
                    }

                    db.SaveChanges();

                    Sender.Send(NetworkClient, "Users.Update.Confirm", User);
                }
            }
            catch (DbException ex)
            {
                Debug.LogError("Возникло исключение при обновлении данных пользователя. Код ошибки:\n" + ex);
                Sender.Send(NetworkClient, "Users.Update.Error");
            }
        }
Exemplo n.º 5
0
        private void UsersDelete(MResponse ClientResponse, MNetworkClient NetworkClient)
        {
            try
            {
                var UserId = Package.Unpacking <int>(ClientResponse.DataBytes);

                if (UserId == 1)
                {
                    return;
                }

                using (var db = new DatabaseContext())
                {
                    MUserNetwork NetUser = Users.GetUserById(NetworkClient.Id);

                    if (!AccessController.IsPrivilege(NetworkClient, "users.delete"))
                    {
                        return;
                    }

                    var DbUser = db.Users.FirstOrDefault(x => x.Id == UserId);

                    db.Users.Remove(DbUser);
                    db.SaveChanges();

                    if (UserId == NetUser.Id)
                    {
                        Users.Remove(NetworkClient);
                        Debug.LogWarning($"Пользователь {NetUser.Login} удалил сам себя!");
                    }
                    else
                    {
                        Sender.Send(NetworkClient, "Users.Delete.Confirm", UserId);
                    }
                }
            }
            catch (DbException ex)
            {
                Debug.LogError("Возникло исключение при попытке удалить пользователя. Код ошибки:\n" + ex);
                Sender.Send(NetworkClient, "Users.Delete.Error");
            }
        }
Exemplo n.º 6
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");
        }