@financial-times/x-privacy-manager
TypeScript icon, indicating that this package has built-in type declarations

14.7.1 • Public • Published

x-privacy-manager

This module creates an interface giving users the ability to give or withhold consent to the sale of their data under the provisions of the CCPA (California Consumer Protection Act), as a first step towards the FT's journey towards a Unified Privacy solution.

It is rendered with Page Kit on FT.com at https://www.ft.com/preferences/privacy-ccpa as part of next-control-centre and rendered directly by the FT App. Additionally, it is intended to be embedded on pages curated by Specialist Titles

Privacy Manager UI

Installation

This module is supported on Node 12 and is distributed on npm.

npm install --save @financial-times/x-privacy-manager

The x-engine module is used to inject your chosen runtime into the component. Please read the x-engine documentation first if you are consuming x- components for the first time in your application.

Usage

Properties

Feature Type Notes
consentSource string Name of the consuming app to be included in requests to Consent Proxy (e.g. "next-control-centre")
consentProxyEndpoints object Dictionary containing already-formed Consent Proxy Endpoints to use (including userId). It must include, at least, consentProxyEndpoints.createOrUpdateRecord
consent boolean (optional) Any existing preference expressed by the user
referrer string (optional) Used to provide a link back to the referring app's home page
cookieDomain string (optional) Specify the domain for the cookie set with the response from Consent Proxy (e.g. ".thebanker.com"). Will default to ".ft.com" if not provided
legislation string[] (optional) An array of the applicable legislation IDs
onConsentSavedCallbacks function[] (optional) An array of callbacks to invoken after a successful request to Consent Proxy

A callback registered with onConsentSavedCallbacks will be executed with the following signature:

customCallback(
  err: null | Error,
  {
    consent: boolean,
    payload: {
      formOfWordsId: string,
      consentSource: string,
      cookieDomain?: string,
      data: {
        ['behaviouralAds' | 'demographicAds' | 'programmaticAds']: {
          onsite: {
            status: boolean;
            lbi: boolean;
            source: string;
            fow: string;
          }
        }
      }
    }
  }
)

Callbacks are executed on regardless of the success (200 status) or failure of the call to the server, so we encourage returning early if the value of the error is anything but null:

function setCookie(err, {consent, payload}) {
  if(err) return;

  // Store the value of `consent`
  const uspString = `1Y${consent ? "N" : "Y"}N`;
  document.cookie = `usprivacy=${uspString}; max-age=${60 * 60 * 24 * 365}`;
}

Readme

Keywords

Package Sidebar

Install

npm i @financial-times/x-privacy-manager

Weekly Downloads

336

Version

14.7.1

License

ISC

Unpacked Size

84.5 kB

Total Files

31

Last publish

Collaborators

  • robertboulton
  • seraph2000
  • hamza.samih
  • notlee
  • emmalewis
  • aendra
  • the-ft
  • rowanmanning
  • chee
  • alexwilson