public override bool ChangePasswordQuestionAndAnswer(
            string userName,
            string password,
            string newPasswordQuestion,
            string newPasswordAnswer)
        {
            /*
             * 	Takes, as input, a user name, password, password question, and password answer and
             * updates
             * the password question and answer in the data source if the user name and password are valid.
             * This method
             * returns true if the password question and answer are successfully updated. Otherwise,
             * it returns false.
             * ChangePasswordQuestionAndAnswer returns false if either the user name or password is invalid.
             */

            if (
                String.IsNullOrEmpty(userName)
                || (password == null)
                || String.IsNullOrEmpty(newPasswordQuestion)
                || String.IsNullOrEmpty(newPasswordAnswer)
                || (newPasswordQuestion.Length > PasswordquestionMaxlength)
                || (newPasswordAnswer.Length > PasswordanswerMaxlength)
                )
            {
                return false;
            }

            SiteSettings siteSettings = GetSiteSettings();
            if (siteSettings == null) { return false; }

            SiteUser siteUser = new SiteUser(siteSettings, userName);
            if (siteUser.UserId > -1 && ValidateUser(userName, password))
            {
                return siteUser.UpdatePasswordQuestionAndAnswer(newPasswordQuestion, newPasswordAnswer);
            }

            return false;
        }