Exemplo n.º 1
0
        /// <summary>
        /// Register
        /// The client sends a request to register themselves
        /// with a username and password. If they are already registered
        /// the CustomValidation tries to validate their credentials
        /// </summary>
        /// <param name="username">(string) user name</param>
        /// <param name="password">(string) password</param>
        /// <returns>(boolean) if successful, false otherwise</returns>
        public bool Register(string username, string password)
        {
            // Registration Success Flag
            bool registered = false;

            // Obtain callback for the client
            IServiceCallback callback = OperationContext.Current.GetCallbackChannel <IServiceCallback>();

            // First Verify User Does Not Already Exist in Registration
            if (!(RegisteredUsers.Any(x => x.UserName == username)))
            {
                // User is Not Registered, Register User

                // Create new user
                User user = new User(username, password, callback);

                /// Add to Registered Users
                RegisteredUsers.Add(user);

                // Set Return Value
                registered = true;

                Console.WriteLine($"User {username} registered...");
            }
            else
            {
                DuplicateUserFault fault = new DuplicateUserFault()
                {
                    Reason = "User '" + username + "' already registered."
                };
                throw new FaultException <DuplicateUserFault>(fault, fault.Reason);
            }

            return(registered);
        } // end of Register method
Exemplo n.º 2
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