// ==================================================================== // Class: XAdmin.xAdminUser // Parent: XAdmin.xAdminBase // // // ==================================================================== class xAdminUser extends xAdminBase; var string UserName; var string Password; var string Privileges; var string MergedPrivs; // Set on load or any Groups change var xAdminGroupList Groups; var xAdminGroupList ManagedGroups; // Post Load information var bool bMasterAdmin; function Created() { Groups = new(None) class'xAdminGroupList'; ManagedGroups = new(None) class'xAdminGroupList'; } function Init(string uname, string Pass, string privs) { UserName = uname; Password = Pass; Privileges = privs; MergedPrivs = privs; } function AddGroup(xAdminGroup Group) { if (Group != None) { if (!Groups.Contains(Group)) Groups.Add(Group); if (!Group.Users.Contains(self)) Group.Users.Add(self); if (Group.bMasterAdmin) bMasterAdmin = true; else MergePrivs(Group.Privileges); } } function RemoveGroup(xAdminGroup Group) { if (Group != None && Groups.Contains(Group)) { Group.Users.Remove(self); Groups.Remove(Group); RedoMergedPrivs(); } } function AddManagedGroup(xAdminGroup Group) { if (Group != None) { if (!ManagedGroups.Contains(Group)) ManagedGroups.Add(Group); if (!Group.Managers.Contains(self)) Group.Managers.Add(self); } } function RemoveManagedGroup(xAdminGroup Group) { if (Group != None && ManagedGroups.Contains(Group)) { Group.Managers.Remove(self); ManagedGroups.Remove(Group); } } function AddGroupsByName(xAdminGroupList lGroups, array aGroupNames) { local int i; for (i = 0; i aGroupNames) { local int i; for (i=0; i.,", Mid(upass,i,1)) == -1) return false; return true; } static function bool ValidName(string uname) { local int i; if (Len(uname) < 1) return false; for (i=0; i.,", Mid(uname,i,1)) == -1) return false; return true; } // Game Security Level relies only on Groups, not on ManagedGroups. // Or it would allow to create a Group with a higher sec than what i have. function int MaxSecLevel() { local int i, m; if (bMasterAdmin) return 255; m = 0; for (i=0; i m) m = Groups.Get(i).GameSecLevel; return m; } function xAdminGroup GetGroup(string Groupname) { return Groups.FindByName(Groupname); } function xAdminGroup GetManagedGroup(string Groupname) { return ManagedGroups.FindByName(Groupname); } function xAdminUserList GetManagedUsers(xAdminGroupList uAllGroups) { local xAdminUserList retList, uList; local xAdminGroupList uGroups; local int i, j; retList = new(None) class'xAdminUserList'; if (bMasterAdmin) uGroups = uAllGroups; else uGroups = ManagedGroups; for (i = 0; i