diff --git a/Files/manifest.json b/Files/manifest.json index 698a4df..829e3df 100644 --- a/Files/manifest.json +++ b/Files/manifest.json @@ -2,8 +2,14 @@ "manifest_version": 2, "name": "Mailcow Temp Mail", "version": "1.0", - "description": "Fetch and generate temporary emails via Mailcow", - "permissions": ["cookies", "storage", "clipboardWrite", "activeTab", "https://mail.pandem.fr*"], + "description": "Login and generate temporary emails via Mailcow", + "permissions": [ + "cookies", + "storage", + "clipboardWrite", + "activeTab", + "https://mail.pandem.fr/*" + ], "browser_action": { "default_popup": "popup.html", "default_icon": "icon.png" diff --git a/Files/popup.html b/Files/popup.html index a93e899..b32d215 100644 --- a/Files/popup.html +++ b/Files/popup.html @@ -4,16 +4,26 @@ Mailcow Temp Mail

Mailcow Temp Mail

- - - - + +
+ + + +
+ + + diff --git a/Files/popup.js b/Files/popup.js index e20d658..3d94ac5 100644 --- a/Files/popup.js +++ b/Files/popup.js @@ -1,11 +1,47 @@ -const API_BASE = "https://mail.paxcia.net"; -const GET_ALIAS_ENDPOINT = "/api/v1/get/alias"; -const ADD_ALIAS_ENDPOINT = "/api/v1/add/alias"; +const API_BASE = "https://mail.pandem.fr/api/v1"; +const LOGIN_ENDPOINT = "/login"; +const GET_ALIAS_ENDPOINT = "/get/alias"; +const ADD_ALIAS_ENDPOINT = "/add/alias"; + +// Check if user is logged in +document.addEventListener("DOMContentLoaded", async () => { + const storedSession = await browser.storage.local.get("session"); + if (storedSession.session) { + showEmailForm(); + } +}); + +document.getElementById("login").addEventListener("click", async () => { + const username = document.getElementById("username").value; + const password = document.getElementById("password").value; + + try { + const response = await fetch(API_BASE + LOGIN_ENDPOINT, { + method: "POST", + credentials: "include", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ username, password }) + }); + + if (!response.ok) throw new Error("Login failed"); + + await browser.storage.local.set({ session: true }); + showEmailForm(); + } catch (error) { + console.error(error); + alert("Login error"); + } +}); + +document.getElementById("logout").addEventListener("click", async () => { + await browser.storage.local.remove("session"); + showLoginForm(); +}); document.getElementById("fetch").addEventListener("click", async () => { try { const response = await fetch(API_BASE + GET_ALIAS_ENDPOINT, { - credentials: "include" // Ensures the request uses the user's Mailcow session + credentials: "include" }); if (!response.ok) throw new Error("Failed to fetch emails"); @@ -15,49 +51,4 @@ document.getElementById("fetch").addEventListener("click", async () => { if (aliases.length > 0) { const latestEmail = aliases[0].address; document.getElementById("email").value = latestEmail; - } else { - document.getElementById("email").value = "No temp email found"; - } - } catch (error) { - console.error(error); - alert("Error fetching email"); - } -}); - -document.getElementById("generate").addEventListener("click", async () => { - const emailPrefix = "temp" + Date.now(); - const domain = "paxcia.net"; - const newEmail = `${emailPrefix}@${domain}`; - - const requestData = { - address: newEmail, - goto: "your_main@paxcia.net", // Redirect emails to your main inbox - active: true - }; - - try { - const response = await fetch(API_BASE + ADD_ALIAS_ENDPOINT, { - method: "POST", - credentials: "include", // Uses session login - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify(requestData) - }); - - if (!response.ok) throw new Error("Failed to generate email"); - - document.getElementById("email").value = newEmail; - alert("New email created: " + newEmail); - } catch (error) { - console.error(error); - alert("Error creating email"); - } -}); - -document.getElementById("copy").addEventListener("click", () => { - const emailField = document.getElementById("email"); - emailField.select(); - document.execCommand("copy"); - alert("Copied: " + emailField.value); -}); + }