| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- // 用户认证相关功能
- // 登录函数
- async function login() {
- const username = document.getElementById('username').value;
- const password = document.getElementById('password').value;
- const captcha = document.getElementById('captcha').value;
-
- try {
- core.showLoading();
- const response = await fetch('/api/login', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ username, password, captcha })
- });
-
- if (response.ok) {
- const data = await response.json();
-
- window.isLoggedIn = true;
- localStorage.setItem('isLoggedIn', 'true');
- persistSession();
- document.getElementById('currentUsername').textContent = username;
- document.getElementById('welcomeUsername').textContent = username;
- document.getElementById('loginModal').style.display = 'none';
- document.getElementById('adminContainer').style.display = 'flex';
-
- // 确保加载完成后初始化事件监听器
- await core.loadSystemConfig();
- core.initEventListeners();
- core.showSection('dashboard');
- userCenter.getUserInfo();
- systemStatus.refreshSystemStatus();
- } else {
- const errorData = await response.json();
- core.showAlert(errorData.error || '登录失败', 'error');
- refreshCaptcha();
- }
- } catch (error) {
- core.showAlert('登录失败: ' + error.message, 'error');
- refreshCaptcha();
- } finally {
- core.hideLoading();
- }
- }
- // 注销函数
- async function logout() {
- console.log("注销操作被触发");
- try {
- core.showLoading();
- const response = await fetch('/api/logout', { method: 'POST' });
- if (response.ok) {
- // 清除所有登录状态
- localStorage.removeItem('isLoggedIn');
- sessionStorage.removeItem('sessionActive');
- window.isLoggedIn = false;
- // 清除cookie
- document.cookie = 'connect.sid=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
- window.location.reload();
- } else {
- throw new Error('退出登录失败');
- }
- } catch (error) {
- console.error('退出登录失败:', error);
- core.showAlert('退出登录失败: ' + error.message, 'error');
- // 即使API失败也清除本地状态
- localStorage.removeItem('isLoggedIn');
- sessionStorage.removeItem('sessionActive');
- window.isLoggedIn = false;
- window.location.reload();
- } finally {
- core.hideLoading();
- }
- }
- // 验证码刷新函数
- async function refreshCaptcha() {
- try {
- const response = await fetch('/api/captcha');
- if (!response.ok) {
- throw new Error(`验证码获取失败: ${response.status}`);
- }
- const data = await response.json();
- document.getElementById('captchaText').textContent = data.captcha;
- } catch (error) {
- console.error('刷新验证码失败:', error);
- document.getElementById('captchaText').textContent = '验证码加载失败,点击重试';
- }
- }
- // 持久化会话
- function persistSession() {
- if (document.cookie.includes('connect.sid')) {
- sessionStorage.setItem('sessionActive', 'true');
- }
- }
- // 显示登录模态框
- function showLoginModal() {
- // 确保先隐藏加载指示器
- if (core && typeof core.hideLoadingIndicator === 'function') {
- core.hideLoadingIndicator();
- }
-
- document.getElementById('loginModal').style.display = 'flex';
- refreshCaptcha();
- }
- // 导出模块
- const auth = {
- init: function() {
- console.log('初始化认证模块...');
- // 在这里可以添加认证模块初始化的相关代码
- return Promise.resolve(); // 返回一个已解决的 Promise,保持与其他模块一致
- },
- login,
- logout,
- refreshCaptcha,
- showLoginModal
- };
- // 全局公开认证模块
- window.auth = auth;
|