feat: 全站登录保护,管理后台仅管理员可访问

- tasks 路由级认证保护,所有 API 需登录
- 未登录时显示登录页面,不暴露导航和功能
- ConfigView 仅管理员可访问,普通用户显示权限提示
- BuildView/HistoryView 所有 API 请求携带 token
This commit is contained in:
shen
2026-06-08 20:59:13 +08:00
parent a0c857f3c2
commit 1cecf66d94
5 changed files with 66 additions and 33 deletions
+4 -3
View File
@@ -1,9 +1,9 @@
<template>
<div class="container">
<div v-if="!isLoggedIn" class="access-denied">
<div v-if="!isAdmin" class="access-denied">
<h3>需要管理员权限</h3>
<p>请先登录管理员账号以访问配置管理页面</p>
<button class="btn-login" @click="showLogin = true">登录管理员账号</button>
<p>{{ isLoggedIn ? '当前账号无管理员权限' : '请先登录管理员账号' }}</p>
<button v-if="!isLoggedIn" class="btn-login" @click="showLogin = true">登录管理员账号</button>
</div>
<div v-else class="admin-page">
<div class="sidebar">
@@ -448,6 +448,7 @@ import { ref, onMounted, inject } from 'vue'
const showLogin = inject('showLogin')
const getToken = inject('getToken')
const isLoggedIn = inject('isLoggedIn')
const isAdmin = inject('isAdmin')
const tab = ref('servers')
// 带认证的 fetch 封装