完成登录配置化
This commit is contained in:
parent
6606e100c9
commit
1398827d0e
@ -55,6 +55,7 @@
|
|||||||
<button id="loginBtn">登录</button>
|
<button id="loginBtn">登录</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="error" id="errorBox"></div>
|
<div class="error" id="errorBox"></div>
|
||||||
|
<script src="../scripts/config.js"></script>
|
||||||
<script src="../scripts/login.js"></script>
|
<script src="../scripts/login.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -97,3 +97,5 @@ function loadMergedConfig() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.loadMergedConfig = loadMergedConfig;
|
||||||
|
|||||||
103
scripts/login.js
103
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) {
|
chrome.storage.local.get(["llmPassword"], function (res) {
|
||||||
if (res.llmPassword) {
|
if (res.llmPassword) {
|
||||||
document.getElementById("llmPassword").value = res.llmPassword;
|
document.getElementById("llmPassword").value = res.llmPassword;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
document.getElementById("loginBtn").addEventListener("click", doLogin);
|
document.getElementById("loginBtn").addEventListener("click", doLogin);
|
||||||
document.addEventListener("keydown", (e) => {
|
document.addEventListener("keydown", (e) => {
|
||||||
if (e.key === "Enter") doLogin();
|
if (e.key === "Enter") doLogin();
|
||||||
});
|
});
|
||||||
|
|
||||||
function doLogin() {
|
function doLogin() {
|
||||||
const username = document.getElementById("username").value.trim();
|
const username = document.getElementById("username").value.trim();
|
||||||
const password = document.getElementById("password").value.trim();
|
const password = document.getElementById("password").value.trim();
|
||||||
const llmPassword = document.getElementById("llmPassword").value;
|
const llmPassword = document.getElementById("llmPassword").value;
|
||||||
const errorBox = document.getElementById("errorBox");
|
const errorBox = document.getElementById("errorBox");
|
||||||
errorBox.textContent = "";
|
errorBox.textContent = "";
|
||||||
|
|
||||||
if (!username || !password) {
|
if (!username || !password) {
|
||||||
errorBox.textContent = "请输入用户名和密码";
|
errorBox.textContent = "请输入用户名和密码";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存 llmPassword(登录不依赖LLM密码是否填写,只是单独存储)
|
chrome.storage.local.set({ llmPassword });
|
||||||
chrome.storage.local.set({ llmPassword });
|
|
||||||
|
|
||||||
fetch("http://app.wisdompulse.cn/api/v1/user/login", {
|
const requestBody = {};
|
||||||
method: "POST",
|
requestBody[reqUsernameField] = username;
|
||||||
headers: { "Content-Type": "application/json" },
|
requestBody[reqPasswordField] = password;
|
||||||
body: JSON.stringify({ username, password })
|
|
||||||
})
|
fetch(loginUrl, {
|
||||||
.then(res => res.json().then(data => ({ status: res.status, body: data })))
|
method: "POST",
|
||||||
.then(({ status, body }) => {
|
headers: { "Content-Type": "application/json" },
|
||||||
if (status === 200 && body.token) {
|
body: JSON.stringify(requestBody)
|
||||||
// 登录成功,保存登录时间
|
|
||||||
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 || "登录失败";
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.then(res => res.json().then(data => ({ status: res.status, body: data })))
|
||||||
errorBox.textContent = "网络错误,请稍后重试";
|
.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 = "网络错误,请稍后重试";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user