Skip to content
Snippets Groups Projects

Barre latérale

Merged Lucie Bader requested to merge barre_latérale into main
14 files
+ 529
40
Compare changes
  • Side-by-side
  • Inline
Files
14
+ 102
0
@@ -3,10 +3,19 @@ let areStatsActive = false;
@@ -3,10 +3,19 @@ let areStatsActive = false;
console.log("ff2BaLex est chargé.");
console.log("ff2BaLex est chargé.");
 
// === 1. Installation de l'extension ===
browser.runtime.onInstalled.addListener(() => {
browser.runtime.onInstalled.addListener(() => {
console.log("ff2BaLex est installé.");
console.log("ff2BaLex est installé.");
 
 
// Création d'un bouton unique de connexion/déconnexion
 
browser.contextMenus.create({
 
id: "toggle_connection",
 
title: "Se connecter à la base lexicale",
 
contexts: ["all"]
 
});
});
});
 
// === 2. Suivi des changements de paramètres ===
browser.storage.onChanged.addListener((changes) => {
browser.storage.onChanged.addListener((changes) => {
if (changes.extensionActive) {
if (changes.extensionActive) {
isExtensionActive = changes.extensionActive.newValue;
isExtensionActive = changes.extensionActive.newValue;
@@ -18,3 +27,96 @@ browser.storage.onChanged.addListener((changes) => {
@@ -18,3 +27,96 @@ browser.storage.onChanged.addListener((changes) => {
console.log("Statistiques activées :", areStatsActive);
console.log("Statistiques activées :", areStatsActive);
}
}
});
});
 
 
// === 3. Gestion des messages provenant du bouton Connexion/Déconnexion ===
 
browser.runtime.onMessage.addListener(async (message) => {
 
if (message.action === "toggleConnection") {
 
const isConnected = await isUserConnected();
 
if (isConnected) {
 
disconnectFromLexicalDB();
 
} else {
 
openLoginPage();
 
}
 
}
 
});
 
 
// === 4. Ouvrir la page de connexion Prisms ===
 
function openLoginPage() {
 
const authUrl = "https://prisms.lezinter.net/fr/login";
 
browser.tabs.create({ url: authUrl });
 
}
 
 
// === 5. Suivi du parcours de connexion et récupération du token ===
 
browser.webNavigation.onCompleted.addListener(async (details) => {
 
const url = new URL(details.url);
 
 
// Si connecté, rediriger vers la page BaLex dans Prisms
 
if (url.hostname === "prisms.lezinter.net" && url.pathname === "/fr/login") {
 
console.log("Connecté à Prisms, veuillez cliquer sur 'Se connecter avec BaLex'...");
 
}
 
 
// Une fois sur la page du tableau de bord BaLex, récupérer le token
 
if (url.hostname === "prisms.lezinter.net" && url.pathname === "/fr/headquarters/balex") {
 
console.log("Tentative de récupération du token depuis Prisms...");
 
 
try {
 
await new Promise(resolve => setTimeout(resolve, 3000)); // Pause pour chargement complet
 
await browser.tabs.executeScript(details.tabId, {
 
code: `
 
(function() {
 
const tokenElement = document.getElementById("accesToken");
 
console.log("Token détecté :", tokenElement ? tokenElement.innerText : "Non trouvé");
 
return tokenElement ? tokenElement.innerText.trim() : null;
 
})();
 
`
 
}).then(async (results) => {
 
const token = results[0];
 
if (token) {
 
await browser.storage.local.set({ accessToken: token });
 
console.log("Token récupéré et stocké :", token);
 
alert("Connexion réussie !");
 
updateContextMenu();
 
} else {
 
console.error("Token non trouvé sur la page Prisms.");
 
}
 
});
 
} catch (error) {
 
console.error("Erreur lors de la récupération du token :", error);
 
}
 
}
 
}, { url: [{ hostContains: "prisms.lezinter.net" }] });
 
 
// === 6. Déconnexion ===
 
async function disconnectFromLexicalDB() {
 
await browser.storage.local.remove("accessToken");
 
console.log("Token supprimé, déconnexion réussie.");
 
alert("Déconnexion réussie.");
 
updateContextMenu();
 
}
 
 
// === 7. Vérifier si l'utilisateur est connecté ===
 
async function isUserConnected() {
 
const result = await browser.storage.local.get("accessToken");
 
return result.accessToken !== undefined;
 
}
 
 
// === 8. Mise à jour dynamique du menu contextuel ===
 
browser.runtime.onStartup.addListener(() => {
 
updateContextMenu();
 
});
 
 
async function updateContextMenu() {
 
const isConnected = await isUserConnected();
 
browser.contextMenus.update("toggle_connection", {
 
title: isConnected ? "Se déconnecter de la base lexicale" : "Se connecter à la base lexicale"
 
});
 
}
 
 
// === 9. Rafraîchissement périodique du token (désactivé) ===
 
function refreshToken() {
 
console.warn("Aucune API de rafraîchissement disponible. Rafraîchissement désactivé.");
 
}
 
 
setInterval(() => {
 
refreshToken();
 
}, 15 * 60 * 1000); // Désactivé faute d'API de rafraîchissement
Loading