protected override void HandleUserAdded(LobbyUser user)
        {
            base.HandleUserAdded(user);

            user.AuthenticationStatus = LobbyUser.AuthenticationStatusTypes.Pending;
            user.SetAttributeB("ValidConnection", false);
            user.SetAttributeB("ValidAuthentication", false);

            // start ban checks
            Bans.Add(user, BanChecksCompleted, null);
        }
        protected void ProcessAuthenticationRequest(LobbyUser user, AuthenticationRequest request)
        {
            if (request == null)
            {
                return;
            }

            user.SetAttributeB("ValidAuthentication", false);
            user.GlobalUserID = request.UserID;
            user.GlobalToken  = request.Token;
            user.DisplayName  = request.DisplayName;

            Host.SendValidationRequest(user.UserID, request.Token, user, ArgChecksCallback);
        }
        protected void ArgChecksCallback(object sender, JsonClient.JsonMessageResponceArgs args)
        {
            LobbyUser user = args.Token as LobbyUser;

            if (user == null)
            {
                return;
            }

            if (args.ResponceMessage as ValidateAuthenticationTokenResponce == null)
            {
                user.SocketConnection.Disconnect("Invalid Authentication");
            }
            else
            {
                user.SetAttributeB("ValidAuthentication", true);
                CheckConnection(user);
            }
        }