示例#1
0
    public override string command_function()
    {
        IGC_UserRegistry ur = virtualSystem.userRegistry;

        if (argv.Length > 2)
        {
            if (!ur.users.ContainsKey(argv[1]))
            {
                return("user '" + argv[1] + "' does not exist");
            }

            InGameComputer terminal = issuer == null ? virtualSystem.terminal : issuer.terminal;

            IGC_User checkLoggedIn = ur.GetUser(argv[1]);

            if (ur.loggedInUsers.Contains(checkLoggedIn))
            {
                return(argv[1] + " is already logged in");
            }

            if (issuer != null)
            {
                if (issuer.terminal != null)
                {
                    if (issuer.terminal.currentUser != null)
                    {
                        if (issuer.loggedInRemotely)
                        {
                            ur.loggedInUsers.Remove(issuer);                             //the logout function will bounce the user back to their own terminal so here, if remotelogged, we will keep things simple
                        }
                        else
                        {
                            virtualSystem.userRegistry.Logout(issuer.terminal.currentUser);
                        }
                    }
                }
            }

            IGC_User user = ur.Login(argv [1], argv [2], terminal);

            if (user != null)
            {
                return("welcome, " + user.name);
            }
            else
            {
                return("password incorrect, try again");
            }
        }
        else
        {
            return("error: command malformed\n" + usage);
        }
    }
示例#2
0
    private string RemoveUserFromGroup()
    {
        if (argv.Length != 4)
        {
            return(malformed_error + "\n" + "usage: groups rmuser <group_name> <username>");
        }

        IGC_UserGroup group = registry.GetGroup(argv [2]);

        if (group == null)
        {
            return("group " + argv[2] + " does not exist");
        }

        IGC_User user = registry.GetUser(argv[3]);

        if (user == null)
        {
            return("user " + argv[3] + " does not exist");
        }

        if (!user.groups.Contains(group))
        {
            return(user.name + " is not in " + group.name);
        }

        if (!group.admins.Contains(issuer) && !issuer.isAdmin)
        {
            return("only system or group administrators can add or remove users");
        }

        if (group.RemoveUser(user, issuer))
        {
            return(user.name + " removed from group " + group.name);
        }
        else
        {
            return("insufficient privilages or user not in group.");
        }
    }
示例#3
0
    private string UserInfo()
    {
        if (argv.Length != 3)
        {
            return(malformed_error + "\n" + "usage: users info <user_name>");
        }

        IGC_User user = registry.GetUser(argv [2]);

        if (user != null)
        {
            string[] groups = new string[user.groups.Count];
            int      i      = 0;

            foreach (IGC_UserGroup group in user.groups)
            {
                groups[i++] = group.name;
            }

            return("ADMIN: " + user.isAdmin.ToString() + "\nGROUPS: " + string.Join(", ", groups) + "\nCWD: " + user.cwd);
        }
        return("user " + argv[2] + " does not exist");
    }