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