示例#1
0
        } // 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