public bool RemoveUser(UserInfo user)
{
if(user == null) throw new ArgumentNullException("user");
lock(this) {
UserInfo[] users = GetUsers();
UsernameComparer comp = new UsernameComparer();
int idx = -1;
for(int i = 0; i < users.Length; i++) {
if(comp.Compare(users[i], user) == 0) {
idx = i;
break;
}
}
if(idx < 0) return false;
// Remove user's data
string lowercaseUsername = user.Username.ToLowerInvariant();
string[] lines = File.ReadAllLines(GetFullPath(UsersDataFile));
List<string> newLines = new List<string>(lines.Length);
string[] fields;
for(int i = 0; i < lines.Length; i++) {
fields = lines[i].Split('|');
if(fields[0].ToLowerInvariant() != lowercaseUsername) {
newLines.Add(lines[i]);
}
}
File.WriteAllLines(GetFullPath(UsersDataFile), newLines.ToArray());
// Remove user
List<UserInfo> tmp = new List<UserInfo>(users);
tmp.Remove(tmp[idx]);
DumpUsers(tmp.ToArray());
usersCache = null;
}
return true;
}