1import { config } from './config.js'; 2 3window.getMemberStatus=function(expected, jwt){ 4 // Les fonctions / variables nécessaires ne sont pas chargées 5 if(typeof(expected) === 'undefined' || typeof(jwt.c) !== 'object'){ 6 return 'anonyme'; 7 } 8 // Aucun accès dans JWT 9 if(!jwt.c.length){ 10 return 'sans_droit'; 11 } 12 let regexp; 13 // On recherche tous les accès contenu dans JWT, en comparant avec les préfixes de l'argument "expected" 14 if(typeof(expected) === 'object'){ 15 for(let prefix in expected){ 16 try{ 17 regexp = new RegExp(expected[prefix]); 18 } 19 catch(exception){ 20 console.log("Bad regexp : "+expected[prefix]); 21 continue; 22 } 23 for(let access in jwt.c){ 24 if(!!(jwt.c[access].match(regexp))){ 25 // L'accès a été retrouvé 26 return 'abonne'; 27 } 28 } 29 } 30 } 31 // L'accès n'a pas été retrouvé 32 33 return 'sans_droit'; 34} 35 36const parseJwt = (token) => { 37 var base64Url = token.split('.')[1]; 38 var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); 39 var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) { 40 return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); 41 }).join('')); 42 43 return JSON.parse(jsonPayload); 44}; 45 46const getJwtJson = () => { 47 let jwtName = "jwtToken"; 48 // après ce sera stage partout 49 if(window.location.host.indexOf('stage') != -1 || window.location.host.indexOf('local') != -1) { 50 jwtName = "jwtToken-stage"; 51 } 52 53 let jwtToken = (typeof JWTTokenName !== 'undefined') ? JWTTokenName : jwtName; 54 55 let cookie = window.getCookie(jwtToken); 56 57 if (cookie) { 58 return parseJwt(cookie); 59 } else { 60 return false; 61 } 62} 63 64const rossel_sso = getJwtJson(); 65 66const getSafeObj = (fn, defaultVal) => { 67 try { 68 return fn(); 69 } catch (e) { 70 return defaultVal; 71 } 72} 73 74const refreshTokenURL = () => { 75 document.querySelectorAll('.js-sso--url').forEach(elem => { 76 if (typeof JWTTokenName !== 'undefined') { 77 let encodedToken = encodeURIComponent(JSReturnPageTokenName); 78 elem.href = elem.href.replace(JSReturnPageTokenName, encodeURIComponent(window.location.href)); 79 elem.href = elem.href.replace(encodedToken, encodeURIComponent(window.location.href)); 80 } 81 }); 82} 83 84const refreshTokenUser = (rossel_sso) => { 85 const firstName = rossel_sso.f ? rossel_sso.f : ''; 86 const lastName = rossel_sso.l ? rossel_sso.l : ''; 87 const email = rossel_sso.e ? rossel_sso.e : ''; 88 const sso_access = rossel_sso.c ? rossel_sso.c : ''; 89 console.log(rossel_sso); 90 let fullName = firstName + " " + lastName; 91 92 if (lastName) { 93 document.querySelectorAll('.js-sso--user').forEach(elem => { 94 elem.innerHTML = (rossel_sso) ? getSafeObj(() => fullName, elem.textContent) : elem.textContent; 95 }); 96 } 97 98 if (firstName) { 99 document.querySelectorAll('.js-sso--user-first-name').forEach(elem => { 100 elem.innerHTML = (rossel_sso) ? getSafeObj(() => rossel_sso.f, elem.textContent) : elem.textContent; 101 }); 102 } 103 104 if (email) { 105 document.querySelectorAll('.js-sso--user-mail').forEach(elem => { 106 elem.innerHTML = (rossel_sso) ? getSafeObj(() => rossel_sso.e, elem.textContent) : elem.textContent; 107 }); 108 } 109 110 if (typeof JWTaccessList !== 'undefined' && sso_access && getMemberStatus(JWTaccessList, rossel_sso) === 'abonne'){ 111 document.querySelectorAll('.js-sso--user-status').forEach(elem => { 112 elem.innerHTML = Drupal.t('Subscriber'); 113 }); 114 } 115 116} 117 118const refreshTemplateUser = () => { 119 document.querySelectorAll('.js-sso--template').forEach(template => { 120 if (template.dataset.user == config.sso) { 121 let html = document.importNode(template.content, true); 122 template.parentNode.insertBefore(html, template) 123 } 124 }); 125} 126 127const body = document.querySelector('body'); 128config.sso = 'anonyme'; 129 130if (rossel_sso && rossel_sso.a) { 131 body.classList.add('r-connecte'); 132 body.classList.remove('r-anonyme'); 133 134 console.log(JWTaccessList); 135 136 if (typeof JWTaccessList !== 'undefined' && getMemberStatus(JWTaccessList, rossel_sso) === 'abonne'){ 137 body.classList.add('r-abonne'); 138 config.sso = 'abonne'; 139 } else { 140 body.classList.add('r-connecte-sd'); 141 config.sso = 'connecte'; 142 } 143 144 // if (( 145 // (!("firstName" in rossel_sso.contact) || !rossel_sso.f) || 146 // (!("lastName" in rossel_sso.contact) || !rossel_sso.l) || 147 // (!("greetings" in rossel_sso.contact) || !rossel_sso.g) || 148 // (!(rossel_sso.freeData && "rw_default_postal_code" in rossel_sso.freeData) || !rossel_sso.freeData?.rw_default_postal_code)
149 // ) && rossel_sso.contact.origin === "onetap") { 150 // document.addEventListener("slgLoaded", function(){ 151 // wa.bt_queue.push('{"tags":[{"tag":"cx_offer_trigger","value":"cx_pmm_onetap_new_users"}], "async":false,"isEvent":true, "isTargeting":true}'); 152 // console.log('mrg - triggered offer onetap - HRO MOD - valid conditions'); 153 // }); 154 // console.log("Au moins un des champs (firstName, lastName, greetings ou code postal est vide) est vide et l'origine est 'onetap'."); 155 // } else { 156 // console.log("Les champs (firstName, lastName, greetings et code postal) sont peut-être rempli ou l'origine n'est pas 'onetap'."); 157 // } 158} 159 160body.classList.add('r-sso--loaded'); 161 162refreshTemplateUser(); 163refreshTokenUser(rossel_sso); 164refreshTokenURL();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.