/// <summary> /// Инициализирует ОС при запуске, загружает в ОЗУ системные структуры. /// </summary> private void Initialize() { byte[] usersFileData = FileSystem.ReadFile(USERS_FILE_PATH); byte[] groupsFileData = FileSystem.ReadFile(GROUPS_FILE_PATH); string usersFileString = Encoding.ASCII.GetString(usersFileData); string groupsFileString = Encoding.ASCII.GetString(groupsFileData); // Считываем группы. string[] groupsRecords = groupsFileString.Split(new string[] { NEW_LINE }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < groupsRecords.Length; i++) { string[] groupFields = groupsRecords[i].Split(' '); short groupId = short.Parse(groupFields[0]); string groupName = groupFields[1]; Group group = new Group(groupName, groupId); if (groupId < 0) { group.groupId *= -1; group.deleted = true; } _groupsManager.AddGroup(group); } // Считываем пользователей. string[] usersRecords = usersFileString.Split(new string[] { NEW_LINE }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < usersRecords.Length; i++) { string[] userFields = usersRecords[i].Split(' '); short userId = short.Parse(userFields[0]); string userName = userFields[1]; byte[] passwordHash = Utils.HexStringToByteArray(userFields[2]); short groupId = short.Parse(userFields[3]); User user = new User(userName, passwordHash, userId, groupId); if (userId < 0) { user.userId *= -1; user.deleted = true; } if (userId == ROOT_USER_ID && groupId == ROOT_GROUP_ID) { ROOT_USER = user; } _usersManager.AddUser(user); _groupsManager.AddUserToGroup(user.groupId, user); } }
private void AddUser() { EditUserForm editUserForm = new EditUserForm(); editUserForm.Groups = new Group[GroupsManager.Count]; for (int i = 0; i < GroupsManager.Count; i++) { editUserForm.Groups[i] = new Group(GroupsManager[i].groupName, GroupsManager[i].groupId); } if (editUserForm.ShowDialog(this) == DialogResult.OK) { User user = new User(); short newId = 0; for (int i = 0; i < UsersManager.Count; i++) { if (UsersManager[i].userId > newId) { newId = UsersManager[i].userId; } } user.userId = ++newId; user.userName = editUserForm.UserName; user.passwordHash = Utils.GetPasswordHash(editUserForm.Password); user.groupId = editUserForm.GroupId; if (UsersManager.AddUser(user)) { GroupsManager.AddUserToGroup(user.groupId, user); usersListBox.Items.Add(user.userName); } else { MessageBox.Show(this, "Пользователь с таким именем уже существует!", "Пользователь существует", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } }
private void EditUser() { User user = UsersManager[usersListBox.SelectedIndex]; if (user.userId == 1) { MessageBox.Show(this, "Пользователь root не может быть переименован!", "Невозможно переименовать", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (user.deleted) { MessageBox.Show(this, "Данный пользователь удалён! Редактирование недоступно.", "Пользователь удалён", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } EditUserForm editUserForm = new EditUserForm(); editUserForm.UserName = user.userName; editUserForm.GroupId = user.groupId; editUserForm.Groups = new Group[GroupsManager.Count]; for (int i = 0; i < GroupsManager.Count; i++) { editUserForm.Groups[i] = new Group(GroupsManager[i].groupName, GroupsManager[i].groupId); } if (editUserForm.ShowDialog(this) == DialogResult.OK) { //user = new User(); GroupsManager.DeleteUserFromGroup(user.groupId, user); user.userName = editUserForm.UserName; user.passwordHash = Utils.GetPasswordHash(editUserForm.Password); user.groupId = editUserForm.GroupId; GroupsManager.AddUserToGroup(user.groupId, user); usersListBox.Items[usersListBox.SelectedIndex] = user.userName; } }