} // end of Greet Me /// <summary> /// Login /// Logs in a registered user. /// Throws faults (to client) if there are issues /// </summary> /// <param name="username">(string) username to login</param> /// <returns>(boolean) true if successful, false otherwise</returns> public bool Login(string username) { bool loggedin = false; // First Verify User Not Already Logged In if (!(LoggedInUsers.Any(x => x.UserName == username))) { // See if User is Registered if (RegisteredUsers.Any(x => x.UserName == username)) { // User is Already Authenticated Per Custom Validator LoggedInUsers.Add(RegisteredUsers.Find(x => x.UserName == username)); loggedin = true; Console.WriteLine($"User {username} logged in."); // Send message to callback SendMessageToUsers($"User {username} logged in."); } // User is Not Registered else { loggedin = false; // This will be sent to client as a generic fault throw new ArgumentException("User: "******" is not registered"); } } else { loggedin = false; // Send custom fault to client DuplicateUserFault fault = new DuplicateUserFault() { Reason = "User '" + username + "' already logged in!" }; throw new FaultException <DuplicateUserFault>(fault, fault.Reason); } return(loggedin); } // end of method