templates/email/email.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>FirstID SDK Email Test</title>
  7.     <link rel="icon"
  8.           href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
  9.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css"
  10.           integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
  11.     <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"
  12.             integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
  13.             crossorigin="anonymous"></script>
  14.     <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"
  15.             integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF"
  16.             crossorigin="anonymous"></script>
  17.     <script src="https://cdn.preprod.first-id.fr/sdk/loader/loader-latest-flex-no-tcf.js" defer></script>
  18. </head>
  19. <body>
  20. <nav class="navbar navbar-expand-lg navbar-light bg-light">
  21.     <a class="navbar-brand" href="{{ path('app_index') }}">{{ site_name }}</a>
  22.     <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
  23.             aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
  24.         <span class="navbar-toggler-icon"></span>
  25.     </button>
  26. </nav>
  27. <div class="container mt-4">
  28.     <div class="row">
  29.         <div class="col-md-12">
  30.             <h1>FirstID SDK Email Test</h1>
  31.             <p>Current FirstID: <span id="firstid" class="font-weight-bold">Not set</span></p>
  32.             <p>Current Email: <span id="email" class="font-weight-bold">Not set</span></p>
  33.             <p>Email Hash: <span id="emailHash" class="font-weight-bold">Not set</span></p>
  34.             <div class="form-group">
  35.                 <input type="email" id="emailInput" class="form-control" placeholder="Enter your email">
  36.             </div>
  37.             <button onclick="setEmail()" class="btn btn-primary">Set Email</button>
  38.         </div>
  39.     </div>
  40. </div>
  41. <script>
  42.     function getCookieValueFromCookieName(cookieName) {
  43.         let cookieArr = document.cookie.split(";");
  44.         for (let i = 0; i < cookieArr.length; i++) {
  45.             let cookiePair = cookieArr[i].split("=");
  46.             if (cookieName === cookiePair[0].trim()) {
  47.                 return decodeURIComponent(cookiePair[1]);
  48.             }
  49.         }
  50.         return null;
  51.     }
  52.     function updateFid() {
  53.         let fid = getCookieValueFromCookieName('firstid');
  54.         document.getElementById('firstid').textContent = fid || 'Not set';
  55.         let emailHash = getCookieValueFromCookieName('fid_email_hash');
  56.         document.getElementById('emailHash').textContent = emailHash || 'Not set';
  57.     }
  58.     async function setEmail() {
  59.         const email = document.getElementById('emailInput').value;
  60.         const hashEmailInSHA256 = val =>
  61.             crypto.subtle
  62.                 .digest('SHA-256', new TextEncoder('utf-8').encode(val))
  63.                 .then(h => {
  64.                     let hexes = [],
  65.                         view = new DataView(h);
  66.                     for (let i = 0; i < view.byteLength; i += 4)
  67.                         hexes.push(('00000000' + view.getUint32(i).toString(16)).slice(-8));
  68.                     return hexes.join('');
  69.                 });
  70.         if (email && window.FIRSTID) {
  71.             window.FIRSTID.setEmailHashed(await hashEmailInSHA256(email));
  72.             document.getElementById('email').textContent = email;
  73.             console.log('Email set:', email);
  74.         } else {
  75.             console.error('Email not set. Make sure the SDK is loaded and the email is valid.');
  76.         }
  77.     }
  78.     setInterval(updateFid, 1000);
  79. </script>
  80. </body>
  81. </html>