diff --git a/Release/database/XNSim.db b/Release/database/XNSim.db index bc63510..8e84bde 100644 Binary files a/Release/database/XNSim.db and b/Release/database/XNSim.db differ diff --git a/XNSimHtml/components/main-toolbar.js b/XNSimHtml/components/main-toolbar.js index 01b74fc..9f0e2e0 100644 --- a/XNSimHtml/components/main-toolbar.js +++ b/XNSimHtml/components/main-toolbar.js @@ -4,10 +4,15 @@ class MainToolbar extends HTMLElement { this.attachShadow({ mode: 'open' }); } - connectedCallback() { + async connectedCallback() { this.render(); this.addEventListeners(); - this.checkUserAccessLevel(); + await this.checkUserAccessLevel(); + + // 监听登录成功事件 + document.addEventListener('login-success', async () => { + await this.checkUserAccessLevel(); + }); } render() { @@ -57,7 +62,7 @@ class MainToolbar extends HTMLElement { } .tool-item.hidden { - display: none; + display: none !important; } .icon { @@ -130,31 +135,30 @@ class MainToolbar extends HTMLElement { }); } - checkUserAccessLevel() { - // 获取用户信息 - let userInfo; + async checkUserAccessLevel() { try { - const userInfoStr = localStorage.getItem('userInfo'); - if (!userInfoStr) { - return; - } - userInfo = JSON.parse(userInfoStr); + const response = await fetch('/api/check-auth', { + credentials: 'include' + }); + const result = await response.json(); - // 获取用户访问级别 - const accessLevel = parseInt(userInfo.access_level); - - // 根据用户访问级别控制开发选项的可见性 - const developOption = this.shadowRoot.getElementById('developOption'); - if (developOption) { - // 只有等级大于等于2的用户才可见 - if (accessLevel < 2) { - developOption.classList.add('hidden'); - } else { - developOption.classList.remove('hidden'); + if (result.success) { + // 获取用户访问级别 + const accessLevel = parseInt(result.user.access_level); + + // 根据用户访问级别控制开发选项的可见性 + const developOption = this.shadowRoot.getElementById('developOption'); + if (developOption) { + // 只有等级大于等于2的用户才可见 + if (accessLevel < 2) { + developOption.classList.add('hidden'); + } else { + developOption.classList.remove('hidden'); + } } } } catch (error) { - console.error('处理用户信息失败:', error); + console.error('获取用户权限失败:', error); } } } diff --git a/XNSimHtml/components/sub-toolbar.js b/XNSimHtml/components/sub-toolbar.js index 48a2f72..bbe6be9 100644 --- a/XNSimHtml/components/sub-toolbar.js +++ b/XNSimHtml/components/sub-toolbar.js @@ -17,9 +17,60 @@ class SubToolbar extends HTMLElement { } } - connectedCallback() { + async connectedCallback() { this.render(); this.addEventListeners(); + await this.checkUserAccess(); + + // 监听登录成功事件 + document.addEventListener('login-success', async () => { + await this.checkUserAccess(); + }); + } + + // 检查用户权限 + async checkUserAccess() { + try { + const response = await fetch('/api/check-auth', { + credentials: 'include' + }); + const result = await response.json(); + + if (result.success) { + const accessLevel = parseInt(result.user.access_level); + // 控制管理员选项的显示 + const adminItems = this.shadowRoot.querySelectorAll('.admin-only'); + adminItems.forEach(item => { + item.style.display = accessLevel >= 3 ? 'flex' : 'none'; + }); + // 控制待办事项选项的显示 + const guestItems = this.shadowRoot.querySelectorAll('.guest-hidden'); + guestItems.forEach(item => { + item.style.display = accessLevel > 0 ? 'flex' : 'none'; + }); + } else { + // 未登录或验证失败时隐藏管理员选项和待办事项 + const adminItems = this.shadowRoot.querySelectorAll('.admin-only'); + adminItems.forEach(item => { + item.style.display = 'none'; + }); + const guestItems = this.shadowRoot.querySelectorAll('.guest-hidden'); + guestItems.forEach(item => { + item.style.display = 'none'; + }); + } + } catch (error) { + console.error('获取用户权限失败:', error); + // 发生错误时隐藏管理员选项和待办事项 + const adminItems = this.shadowRoot.querySelectorAll('.admin-only'); + adminItems.forEach(item => { + item.style.display = 'none'; + }); + const guestItems = this.shadowRoot.querySelectorAll('.guest-hidden'); + guestItems.forEach(item => { + item.style.display = 'none'; + }); + } } render() { @@ -154,7 +205,7 @@ class SubToolbar extends HTMLElement { 更新记录 更新记录 -
+
待办事项 待办事项
@@ -241,7 +292,7 @@ class SubToolbar extends HTMLElement { 个人中心 个人中心
-
+
系统日志 系统日志
@@ -301,14 +352,6 @@ class SubToolbar extends HTMLElement { }); } - // 更新管理员选项的显示状态 - updateAdminItems(accessLevel) { - const adminItems = this.shadowRoot.querySelectorAll('.admin-only'); - adminItems.forEach(item => { - item.style.display = accessLevel >= 3 ? 'flex' : 'none'; - }); - } - updateToolHeader() { const toolIcons = { 'home': { icon: 'home', text: '主页' }, diff --git a/XNSimHtml/components/update-history.js b/XNSimHtml/components/update-history.js index baf289a..fca2a22 100644 --- a/XNSimHtml/components/update-history.js +++ b/XNSimHtml/components/update-history.js @@ -18,17 +18,13 @@ class UpdateHistory extends HTMLElement { // 检查用户权限 async checkUserAccess() { try { - // 从localStorage获取用户信息 - const userInfo = localStorage.getItem('userInfo'); + const response = await fetch('/api/check-auth', { + credentials: 'include' + }); + const result = await response.json(); - if (userInfo) { - try { - const user = JSON.parse(userInfo); - this.accessLevel = user.access_level || 0; - } catch (parseError) { - console.error('解析用户信息失败:', parseError); - this.accessLevel = 0; - } + if (result.success) { + this.accessLevel = result.user.access_level || 0; } else { this.accessLevel = 0; } @@ -694,14 +690,16 @@ class UpdateHistory extends HTMLElement { // 获取当前登录用户名 let author = '未知用户'; - const userInfo = localStorage.getItem('userInfo'); - if (userInfo) { - try { - const user = JSON.parse(userInfo); - author = user.username || '未知用户'; - } catch (parseError) { - console.error('解析用户信息失败:', parseError); + try { + const response = await fetch('/api/check-auth', { + credentials: 'include' + }); + const result = await response.json(); + if (result.success) { + author = result.user.username || '未知用户'; } + } catch (error) { + console.error('获取用户信息失败:', error); } try {