Skip to content
Snippets Groups Projects

Connexion/Déconnexion de l'utilisateur

Merged Lucie Bader requested to merge connexion_extension into main
6 files
+ 264
36
Compare changes
  • Side-by-side
  • Inline
Files
6
+ 102
0
@@ -3,10 +3,19 @@ let areStatsActive = false;
console.log("ff2BaLex est chargé.");
// === 1. Installation de l'extension ===
browser.runtime.onInstalled.addListener(() => {
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) => {
if (changes.extensionActive) {
isExtensionActive = changes.extensionActive.newValue;
@@ -18,3 +27,96 @@ browser.storage.onChanged.addListener((changes) => {
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