Autorisations pour les modèles personnalisés

Ce document décrit les autorisations pour les modèles Web personnalisés.


Chaque autorisation :

  • Vérifié par les API qui en ont besoin.
  • Détecté automatiquement dans le JavaScript en bac à sable, en fonction des API utilisées. Cela se produit lorsque des modifications sont apportées dans l'éditeur de modèles personnalisés (pour une boucle de rétroaction rapide) et lorsque le code est compilé (pour valider que les autorisations appropriées sont appliquées).
  • Modifiable dans l'éditeur de modèles personnalisés pour rendre l'autorisation plus spécifique.
  • Interrogeable dans le bac à sable JavaScript via l'API queryPermission.

access_globals

Nom à afficher : accéder aux variables globales

Description : permet d'accéder à une variable globale (susceptible d'inclure des API sensibles).

Configuration : liste des clés auxquelles vous pouvez accéder. Chaque clé est un chemin d'accès séparé par un point. Par exemple : foo.bar. Le premier jeton de chaque chemin ne doit pas être une clé prédéfinie dans la portée globale du navigateur ni un mot clé JavaScript. Il comporte des cases à cocher pour l'accès en lecture, en écriture et à l'exécution.

Requis par : setInWindow, copyFromWindow, callInWindow, createQueue, createArgumentsQueue

Signature de la requête : queryPermission('access_globals', 'read', <key to read from>), queryPermission('access_globals', 'write', <key to write to>), queryPermission('access_globals', 'readwrite', <key to read and write>) ou queryPermission('access_globals', 'execute', <key of function to execute>)

Remarques : Détermine si un modèle personnalisé peut lire et/ou écrire des valeurs globales.

Exemple de code

const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
  const dataLayerPush = createQueue('dataLayer');
}

access_local_storage

Nom à afficher : accède au stockage local

Description : autorise l'accès aux clés spécifiées dans le stockage local.

Configuration : liste des clés de stockage local auxquelles vous pouvez accéder. Il s'agit d'un simple tableau de clés, sans caractères génériques. Il comporte des cases à cocher pour l'accès en lecture et en écriture.

Obligatoire pour : localStorage

Signature de la requête : queryPermission('access_local_storage', 'read', <key to read from>), queryPermission('access_local_storage', 'write', <key to write to>) ou queryPermission('access_local_storage', 'readwrite', <key to read and write>)

Exemple de code

const queryPermission = require('queryPermission');
const localStorage = require('localStorage');
const key = 'my_key';
if (queryPermission('access_local_storage', 'read', key)) {
  const value = localStorage.getItem(key);
}

access_template_storage

Nom à afficher : Accéder au stockage du modèle

Description : permet d'accéder au stockage temporaire pour les modèles qui peuvent persister pendant toute la durée de vie de la page.

Configuration : aucune

Obligatoire pour : templateStorage

Signature de la requête : queryPermission('access_template_storage')

Exemple de code

const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
  const value = templateStorage.getItem(key);
}

get_cookies

Nom à afficher : lit la valeur des cookies.

Description : lit les valeurs des cookies portant le nom spécifié.

Configuration : liste des noms des cookies autorisés à être lus.

Obligatoire pour : getCookieValues

Signature de la requête : queryPermission('get_cookies', <name>)

Remarques : détermine si un cookie peut être lu, en fonction de son nom.

Exemple de code

const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
  cookieValues = getCookieValues(cookieName);
}

get_referrer

Nom à afficher : lire l'URL de provenance

Description : autorise l'accès en lecture à des parties spécifiques du referrer.

Configuration : les valeurs booléennes suivantes déterminent quelle partie du referrer peut être lue. Une partie donnée du referrer ne peut être lue que si la partie correspondante est true. L'appelant peut appeler getReferrerUrl sans spécifier de composant pour obtenir l'URL de provenance complète si tous ces booléens sont définis sur true. Si aucune valeur n'est définie, la valeur par défaut est all. Si une valeur est définie, elle doit être un tableau de composants, où un composant est l'un des suivants : protocol, host, port, path, query ou extension.

queryKeys : si la requête est sélectionnée, l'auteur du modèle peut limiter davantage l'ensemble des clés de requête à partir desquelles il peut lire. Il s'agit d'un simple tableau de clés, sans caractères génériques.

Obligatoire pour : getReferrerUrl, getReferrerQueryParameters

Signature de la requête : queryPermission('get_referrer', <url_component>)

Exemple de code

const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
  referrer = getReferrerUrl('queryParams');
}

get_url

Nom à afficher : URL de lecture

Description : renvoie l'URL de la page active en totalité ou en partie.

Configuration : les valeurs booléennes suivantes déterminent la partie de l'URL qui peut être lue. Une partie donnée de l'URL ne peut être lue que si la partie correspondante est définie sur "true". L'appelant peut appeler getUrl sans spécifier de composant pour obtenir l'URL complète si et seulement si tous ces booléens sont définis sur true. Si aucune valeur n'est définie, la valeur par défaut est all. Si une valeur est définie, elle doit être un tableau de composants, où un composant est l'un des suivants : protocol, host, port, path, query, extension ou fragment.

queryKeys : si la requête est sélectionnée, l'auteur du modèle peut limiter davantage l'ensemble des clés de requête à partir desquelles il peut lire. Il s'agit d'un simple tableau de clés, sans caractères génériques.

Obligatoire pour : getUrl

Signature de la requête : queryPermission('get_url', <optional url component>, <optional query key>)

Si le composant URL est fourni, il doit être l'un des suivants : 'protocol', 'host', 'port', 'path', 'query', 'extension' ou 'fragment'. Si elle est omise, la requête d'autorisation est une demande d'accès à l'intégralité de l'URL.

Si elle est fournie, la clé de requête doit être l'argument de chaîne de requête que le code du modèle souhaite lire.

Remarques : Détermine si un modèle personnalisé peut lire la position actuelle. Permet de limiter la recherche à une partie spécifique de l'établissement.

Exemple de code

const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
  const gclid = getUrl('query', false, null, 'gclid');
}

inject_hidden_iframe

Nom à afficher : injecter des iFrames masqués

Description : injecte un iFrame invisible avec une URL donnée.

Configuration : liste de formats d'URL

Obligatoire pour : injectHiddenIframe

Signature de la requête : queryPermission('inject_hidden_iframe', <url>)

Remarques : Détermine si un modèle personnalisé peut injecter un iFrame invisible et à partir de quelle origine.

Exemple de code

const queryPermission = require('queryPermission');
const injectHiddenIframe = require('injectHiddenIframe');
const url = 'https://www.example.com/iframes';
if (queryPermission('inject_hidden_iframe', url)) {
  injectHiddenIframe(url);
}

inject_script

Nom à afficher : injecte des scripts

Description : injecte un script sur la page.

Configuration : liste de formats d'URL

Obligatoire pour : injectScript

Signature de la requête : queryPermission('inject_script', <url>)

Remarques : Détermine si un modèle personnalisé peut injecter du code JavaScript et à partir de quelle origine.

Exemple de code

const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
  injectScript(url);
}

journalisation

Nom à afficher : journaux dans la console

Description : consigne dans la console pour les développeurs et dans le mode Aperçu de GTM.

Configuration : option permettant d'activer la journalisation en production. Par défaut, la journalisation n'est activée qu'en mode débogage/aperçu. Si l'autorisation est refusée, logToConsole ne générera pas d'erreur, mais supprimera le message de journal.

Obligatoire pour : logToConsole

Signature de la requête : queryPermission('logging')

Remarques : Détermine si un modèle personnalisé peut consigner des informations dans la console pour les développeurs.

Exemple de code

const queryPermission = require('queryPermission');
const logToConsole = require('logToConsole');
// Note that it's fine to call log, since the log call will be ignored if
// logging isn't permitted in the current environment.
logToConsole('diagnostic info');

read_data_layer

Nom à afficher : Lire la couche de données

Description : lit les données à partir de la couche de données.

Configuration : ensemble d'expressions de correspondance de clé, où une correspondance de clé peut être une série de références avec des points, avec un caractère générique à la fin. Les expressions de correspondance de clé déterminent les propriétés qui peuvent être lues à partir de la couche de données.

Obligatoire pour : copyFromDataLayer

Signature de la requête : queryPermission('read_data_layer', <data layer key to read from>)

Remarques : Détermine si un modèle personnalisé peut lire des données à partir de la couche de données.

Exemple de code

const queryPermission = require('queryPermission');
const copyFromDataLayer = require('copyFromDataLayer');
const dlKey = 'foo.bar';
if (queryPermission('read_data_layer', dlKey)) {
  const dlContents = copyFromDataLayer(dlKey);
}

read_analytics_storage

Nom à afficher : lit l'espace de stockage Analytics

Description : permet aux modèles de lire les données analytiques stockées, telles que les ID client.

Configuration : aucune

Obligatoire pour : readAnalyticsStorage

Signature de la requête : queryPermission('read_analytics_storage')

Remarques : Détermine si un modèle personnalisé peut lire les données du stockage Analytics.

Exemple de code

const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
  const value = readAnalyticsStorage();
}

read_character_set

Nom à afficher : lit le jeu de caractères du document.

Description : document.characterSet.

Configuration : aucune

Obligatoire pour : readCharacterSet

Signature de la requête : queryPermission('read_character_set')

Remarques : Détermine si un modèle personnalisé peut lire document.characterSet.

Exemple de code

const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
  const characterSet = readCharacterSet();
}

read_container_data

Nom à afficher : lire les données du conteneur

Description : lit les données sur le conteneur.

Configuration : aucune

Obligatoire pour : getContainerVersion

Signature de la requête : queryPermission('read_container_data')

Remarques : Détermine si un modèle personnalisé peut lire les données du conteneur.

Exemple de code

const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
  version = getContainerVersion();
}

read_event_metadata

Nom à afficher : lit les métadonnées d'événement

Description : lit les métadonnées d'événements dans les rappels d'événement

Configuration : aucune

Obligatoire pour : addEventCallback

Signature de la requête : queryPermission('read_event_metadata')

Remarques : Détermine si un modèle personnalisé peut lire les métadonnées d'événement dans les rappels.

Exemple de code

const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
  addEventCallback((containerId, eventMetadata) => {
    // Read event metadata.
  });
}

read_title

Nom à afficher : lit le titre du document

Description : document.title.

Configuration : aucune

Obligatoire pour : readTitle

Signature de la requête : queryPermission('read_title')

Remarques : détermine si un modèle personnalisé peut lire le document.title.

Exemple de code

const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
  const title = readTitle();
}

send_pixel

Nom à afficher : envoi de pixels

Description : envoie une requête GET à l'URL indiquée. La réponse n'est pas traitée.

Configuration : liste des formats d'URL autorisés.

Obligatoire pour : sendPixel

Signature de la requête : queryPermission('send_pixel', <url>)

Remarques : Détermine si un modèle personnalisé peut envoyer une requête GET et à quelle origine il peut le faire.

Exemple de code

const queryPermission = require('queryPermission');
const sendPixel = require('sendPixel');
const url = 'https://www.example.com?foo=3';
if (queryPermission('send_pixel', url)) {
  sendPixel(url);
}

set_cookies

Nom à afficher : définit un cookie

Description : définit un cookie avec le nom et les paramètres spécifiés.

Configuration : tableau des noms de cookies autorisés, chacun avec des restrictions facultatives sur le nom, le domaine, le chemin, l'attribut secure et l'expiration.

Obligatoire pour : setCookie

Signature de la requête : queryPermission('set_cookies', <name>, <options>)

Remarques : Détermine si un cookie peut être écrit, en fonction du nom, du domaine, du chemin d'accès, de l'attribut secure et de l'expiration du cookie.

Exemple de code

const queryPermission = require('queryPermission');
const setCookie = require('setCookie');
const options = {
  'domain': 'www.example.com',
  'path': '/',
  'max-age': 60*60*24*365,
  'secure': true
};
if (queryPermission('set_cookies', 'info', options)) {
  setCookie('info', 'xyz', options);
}

write_data_layer

Nom à afficher : Écrit sur la couche de données

Description : écrit des données dans la couche de données.

Configuration : ensemble d'expressions de correspondance de clé, où une correspondance de clé peut être une série de références avec des points, avec un caractère générique à la fin. Les expressions de correspondance de clé déterminent les propriétés qui peuvent écrire dans la couche de données.

Obligatoire pour : gtagSet

Signature de la requête : queryPermission('write_data_layer', <data layer key to write from>)

Remarques : Détermine si un modèle personnalisé peut écrire dans la couche de données.

Exemple de code

const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
  gtagSet({dlKey: 'baz'});
}