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"); }
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 }); }
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); }
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"); } }
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"); } }
/// <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"); }