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