ClientIdAccessor Lightning component
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
This method will override any existing client ID already in the |
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.