ClientIdAccessor Lightning component

The Coveo ClientIdAccessor Lightning component reads and writes the client ID in the CoveoV2 namespace localStorage. Due to Lightning Locker restrictions, a Lightning component that belongs to a different namespace can’t directly access the client ID in the CoveoV2 namespace localStorage. The Coveo ClientIdAccessor Lightning component offers methods to access and manipulate the client ID in the CoveoV2 namespace so it can be retrieved and reused across sites during a visit (see Integrate a Coveo ClientIdAccessor Lightning component).

Usage

Reference it in a custom Aura component (for example, LightningComponent.cmp).

<!-- LightningComponent.cmp -->
<aura:component implements="forceCommunity:availableForAllPageTypes">
    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
    <CoveoV2:ClientIdAccessor aura:id="clientIdAccessor"/>
</aura:component>

Access and set the client ID in the CoveoV2 namespace localStorage as follows:

// LightningComponentController.js
({
    doInit: function(component) {
        const clientIdCmp = component.find("clientIdAccessor");
        // Access the ClientID value from the CoveoV2 namespace.
        const clientId = clientIdCmp.getClientId();
        // Access the ClientID value from the c namespace.
        const cClientId = localStorage.getItem('visitorId');

        const key = 'coveo_visitorId';
        if(clientId) {
            // If there's a value in the CoveoV2 namespace, use it.
            // Save the value in the c namespace localStorage so it
            // can be used by other components.
            localStorage.setItem('visitorId', clientId);
            const host = window.location.hostname;
            if (host.indexOf('.') === -1) {
                document.cookie =
                    `${key}=${encodeURIComponent(clientId)}` +
                    ';path=/;SameSite=Lax';
            } else {
                const domainParts = host.split('.');
                const domain = domainParts[domainParts.length - 2] + '.' + domainParts[domainParts.length - 1];
                document.cookie =
                    `${key}=${encodeURIComponent(clientId)}` +
                    (domain ? `;domain=${domain}` : '') +
                    ';path=/;SameSite=Lax';
            }
        } else if(cClientId) {
            // If there is no value in the CoveoV2 namespace,
            // but there is one in the c namespace, set it to the CoveoV2 namespace.
           clientIdCmp.setClientId(cClientId);
        }
    }
})

Resources included with this component

This component doesn’t include any resources.

Aura methods

This component supports the Aura methods referenced in this section.

getClientId

Reads the client ID in the CoveoV2 namespace localStorage.

const clientId = clientIdCmp.getClientId();

setClientId

Writes the client ID in the CoveoV2 namespace localStorage.

Warning
Warning

This method will override any existing client ID already in the CoveoV2 namespace localStorage.

This function requires a parameter:

  • the client ID (String): The client ID value to set in the CoveoV2 namespace localStorage.

clientIdCmp.setClientId('123e4567-e89b-12d3-a456-426614174000');

Aura events

This component doesn’t include any Aura events.

Options

This component doesn’t include any options.