Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Les modèles de consentement peuvent être intégrés comme iframe à tout site HTML, de manière à réaliser un intégration sans couture.

Note

les snippets sont volontairement gardés au plus simple (pas de contrôle d’erreur, de gestion des sessions etc … ).

Contenu de cette documentation :

Table of Contents
maxLevel3

Cinématique

Une fois l’intégration réalisée, la cinématique se déroule ainsi :

...

Il est nécessaire d’indiquer un identifiant qui permettra de relayer le formulaire à son utilisateur (userid uuid ci-dessous).

Code Block
breakoutModewide
languagephp
function getFormUrl($uuid, $token)
{
    $api_url = "https://core.fairandsmart.com/api";
    $organisation_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
    $model_id_or_alias = "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY";
    
    $host = $_SERVER['HTTP_HOST'];
    $port = "";
    $proto = isset($_SERVER['HTTPS']) ? "https" : "http";

    $context = [
        "userid" => $uuid,
        "callback" => "?uuid=". $uuid . "&email=". $email . "&receipt=". $receipt . "&stage=2",
        "country" => "FR",
        "language" => "fr",
        "optoutEmail" => $email != "" ? $email . "@fairandsmart.com" : null,
        "receipt" => $receipt,
        "iframe" => true,
     
  "iframeEventsTargetOrigin" => $proto . "://" . $host . ($port ? ":" . $port : ""),
    ];

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api_url . "/organisations/" . $organisation_id . "/consents/" . $model_id_or_alias . "/endpoint");
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($context));
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Authorization: Bearer $token", "Content-Type: application/json"));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curl);
    curl_close($curl);
}

...

  • callback : URL vers laquelle l’utilisateur sera redirigé à l’issue de la saisie ;

  • optoutEmail : adresse email à laquelle une reçu un lien de modification du consentement sera transmis ;

  • optoutEmailLink : lien de modification présent dans l’email envoyé ;

  • receipt : booléen indiquant si un reçu de consentement doit être présenté à l’issue de la saisie ;

  • iframe : autorise l’injection de la librairie iframe-resizer dans le formulaire .;

  • iframeEventsTargetOrigin : active la transmission d'évènements entre l’iframe et la frame parente et indique quelle doit être l'origine de cette dernière (voir Déclencher un rechargement de la frame parente) .;

Se reporter à https://core.fairandsmart.com/doc/api.html#operation/getConsentEndointJson pour plus d’information et une liste exhaustive des paramètres possibles (langue du formulaire, pays de résidence etc …).

...

à partir de la version 19.1104.01 02 (core 53.27.x)

iframeResizer est une librairie javascript permettant l’intégration sans couture d’une iframe au sein d’un site.

...

Code Block
breakoutModewide
languagehtml
<html>
    <body>
        <style>iframe { width: 1px; min-width: 100%; }</style>
        <script src="http://url-du-script/iframeResizer.min.js"/>
        <script>iFrameResize({ log: true }, '#myIframe');</script>
        <iframe src="<?php echo getFormUrl(getToken()) ?>" width="100%" title="Consent iFrame" id="consent"></iframe>
    </body>
</html>

Déclencher un rechargement de la frame parente

à partir de la version 19.09.01 (core 5.1.x)

Dans le cas d’une intégration par iframe, il peut être souhaité de déclencher un événement de rechargement de la frame parente.

...

Code Block
breakoutModewide
languagehtml
<html>
    <body>
        <script type="application/javascript">
            window.addEventListener("message", messageListener, false);
            function messageListener(event) {
                if (event.data.search(/consent-callback/) >= 0) {
                    const urlback = event.data.replace(/.*consent-callback\/([^"]*).*/, '$1');
                    window.location.assign(urlback);
                }
            }
        </script>
        <iframe src="<?php echo getFormUrl(getToken()) ?>" width="100%" title="Consent iFrame" id="consent"></iframe>
    </body>
</html>

Code source

Retrouvez une version plus complète de ce code sur github : https://github.com/fairandsmart/consent-iframe-integration-test

Références

Pour aller plus loin

Filter by label (Content by label)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@10041
sortmodified
showSpacefalse
reversetrue
typepage
cqllabel in ( "modèles" , "consentements" , "configuration" ) and type = "page" and space = "BDC"
labelsconsentements modèles configuration