PageSourceSearch

https://abonnement.lemessager.fr/sites/all/themes/pcg/js/jwt-decode.js?v=1.12

js lemessager.fr collected 2026-10-01 11:42:47 UTC 5,314 bytes, 164 lines download raw bytes

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.