JSFiddle - React, Tailwind, and code Playground

by bobbyrne01

JavaScript

/*
 * Utility class for any JavaScript functionality needed by 'Address Book' portlet
 */
var AJAX_Utils_AddressBook = {
    contacts: null, // object to store list of Contacts returned by Commerce

    /*
     * On page load, determine ..
     * - if session cookie not present but ltpa token available .. request Commerce auth tokens
     * - if session cookie not present and ltpa token not available .. show login div
     * - else, session cookie present. Verify active user matches stored user in cookie, if not, remove and reload page.
     */
    checkLoggedIn: function () {

        // login if no user data found in cookie
        if ((AJAX_Utils_Common.getCookie('commerceUserData') === "" || AJAX_Utils_Common.getCookie('commerceUserData') === undefined) && AJAX_Utils_Common.getCookie("LtpaToken2") !== undefined) {

            var http = new XMLHttpRequest();
            var body = '{"LTPAToken" : "' + AJAX_Utils_Common.getCookie("LtpaToken2") + '"}';
            var url = '[Component id="b46fc6b6-0b7c-4b24-81d8-43b99330cce6:NC93ZWJzcGhlcmUgY29tbWVyY2UvZGF0YXNvdXJjZXMvd2MuZGF0YWhhbmRsZXIubHRwYWxvZ2lu" name="websphere commerce/datasources/wc.datahandler.ltpalogin"]';
            http.open("POST", url, false);
            http.setRequestHeader("Content-Type", 'application/json');
            http.onreadystatechange = function () {
                if (http.readyState === 4 && http.status === 200) {
                    
                    // store retrieved auth tokens in session cookie
                    var authCookie = JSON.parse(http.responseText);
                    authCookie.portalUser = '[Plugin:EvaluateEL value="${wp.user}"]';
                    var cookieTemp = 'commerceUserData=' + JSON.stringify(authCookie) + '; path=/';
                    document.cookie = cookieTemp;

                    // update UI
                    document.getElementById('[Plugin:Portlet key="namespace" compute="once"]addressBookLoggedIn').style.display = 'inline';
      ...