diff --git a/pages/login.html b/pages/login.html index b990280..2b1108f 100644 --- a/pages/login.html +++ b/pages/login.html @@ -55,6 +55,7 @@
+ diff --git a/scripts/config.js b/scripts/config.js index 6c0e88b..da99a0b 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -97,3 +97,5 @@ function loadMergedConfig() { }); }); } + +window.loadMergedConfig = loadMergedConfig; diff --git a/scripts/login.js b/scripts/login.js index 718c0d1..680df61 100644 --- a/scripts/login.js +++ b/scripts/login.js @@ -1,53 +1,72 @@ -// 自动回显 AnythingLLM 密码 -document.addEventListener("DOMContentLoaded", function () { + +document.addEventListener("DOMContentLoaded", async function () { + const config = await window.loadMergedConfig(); + const loginConf = config.apiConfig.login || {}; + + const loginUrl = loginConf.url; + const reqParams = loginConf.requestParams || []; + const resParams = loginConf.responseParams || []; + + // 提取字段名(带默认值) + const reqUsernameField = reqParams.find(p => p.label.includes("用户名"))?.field || "username"; + const reqPasswordField = reqParams.find(p => p.label.includes("密码"))?.field || "password"; + const resTokenField = resParams.find(p => p.label.includes("Token"))?.field || "token"; + const resUsernameField = resParams.find(p => p.label.includes("用户名"))?.field || "username"; + + // 自动填充 LLM 密码(与登录无关,只是附带存储) chrome.storage.local.get(["llmPassword"], function (res) { if (res.llmPassword) { document.getElementById("llmPassword").value = res.llmPassword; } }); -}); -document.getElementById("loginBtn").addEventListener("click", doLogin); -document.addEventListener("keydown", (e) => { - if (e.key === "Enter") doLogin(); -}); + document.getElementById("loginBtn").addEventListener("click", doLogin); + document.addEventListener("keydown", (e) => { + if (e.key === "Enter") doLogin(); + }); -function doLogin() { - const username = document.getElementById("username").value.trim(); - const password = document.getElementById("password").value.trim(); - const llmPassword = document.getElementById("llmPassword").value; - const errorBox = document.getElementById("errorBox"); - errorBox.textContent = ""; + function doLogin() { + const username = document.getElementById("username").value.trim(); + const password = document.getElementById("password").value.trim(); + const llmPassword = document.getElementById("llmPassword").value; + const errorBox = document.getElementById("errorBox"); + errorBox.textContent = ""; - if (!username || !password) { - errorBox.textContent = "请输入用户名和密码"; - return; - } + if (!username || !password) { + errorBox.textContent = "请输入用户名和密码"; + return; + } - // 保存 llmPassword(登录不依赖LLM密码是否填写,只是单独存储) - chrome.storage.local.set({ llmPassword }); + chrome.storage.local.set({ llmPassword }); - fetch("http://app.wisdompulse.cn/api/v1/user/login", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ username, password }) - }) - .then(res => res.json().then(data => ({ status: res.status, body: data }))) - .then(({ status, body }) => { - if (status === 200 && body.token) { - // 登录成功,保存登录时间 - chrome.storage.local.set({ - token: body.token, - username: body.username || username, - loginAt: Date.now() - }, () => { - window.location.href = chrome.runtime.getURL("pages/popup.html"); - }); - } else { - errorBox.textContent = body.message || "登录失败"; - } + const requestBody = {}; + requestBody[reqUsernameField] = username; + requestBody[reqPasswordField] = password; + + fetch(loginUrl, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(requestBody) }) - .catch(() => { - errorBox.textContent = "网络错误,请稍后重试"; - }); -} + .then(res => res.json().then(data => ({ status: res.status, body: data }))) + .then(({ status, body }) => { + const token = body[resTokenField]; + const returnedUser = body[resUsernameField] || username; + + if (status === 200 && token) { + chrome.storage.local.set({ + token: token, + username: returnedUser, + loginAt: Date.now() + }, () => { + window.location.href = chrome.runtime.getURL("pages/popup.html"); + }); + } else { + errorBox.textContent = body.message || "登录失败"; + } + }) + .catch(() => { + errorBox.textContent = "网络错误,请稍后重试"; + }); + } +});