Synchroniser les données utilisateur DiscourseConnect avec la route sync_sso [JavaScript]

Bonjour,

pour mon entreprise, j’ai eu besoin d’utiliser cette fonctionnalité depuis notre backend Node.js, voici donc une implémentation de référence en JavaScript utilisant crypto et Buffer de Node.js si cela intéresse quelqu’un :

Remarque :
Pour la cohérence, j’utilise les mêmes valeurs de variables que dans l’implémentation PHP.

Configuration de vos identifiants d’API et de votre clé secrète SSO

const apiKey = '4fe83002bb5fba8c9a61a65e5b4b0a3cf8233b0e4ccafc85ebd6607abab4651a';
const apiUser = 'system';
const connectSecret = 'jdhb19*Xh3!nu(#k';

Configuration des paramètres SSO

const ssoRecord = new URLSearchParams({
  external_id: 1,
  email: 'bob@example.com',
  username: 'bob',
  add_groups: 'eurorack',
  require_activation: true,
}).toString();

const ssoPayload = Buffer.from(ssoRecord, 'utf8').toString('base64');
const signature = crypto.createHmac('sha256', connectSecret).update(ssoPayload).digest('hex');

Envoi de la requête POST

const updatedUser = await fetch({ // ou axios
  method: 'POST',
  url: 'https://forum.example.com/admin/users/sync_sso',
  headers: {
    'Api-Key': apiKey,
    'Api-Username': apiUser,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    sso: ssoPayload,
    sig: signature,
  })
}).then((response) => response.json());
6 « J'aime »