- {{ user }}
+ {{ user }} {{ role }}
- 退出登录
+ 修改密码
+ 退出登录
@@ -36,10 +38,23 @@
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
\ No newline at end of file
diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js
index 8448d6b..58e21d7 100644
--- a/frontend/src/router/index.js
+++ b/frontend/src/router/index.js
@@ -1,4 +1,5 @@
import { createRouter, createWebHashHistory } from 'vue-router'
+import { ElMessage } from 'element-plus'
import Login from '@/views/Login.vue'
import Layout from '@/layout/Index.vue'
import Dashboard from '@/views/Dashboard.vue'
@@ -8,6 +9,7 @@ import Certificates from '@/views/Certificates.vue'
import Logs from '@/views/Logs.vue'
import Backups from '@/views/Backups.vue'
import Audits from '@/views/Audits.vue'
+import Admins from '@/views/Admins.vue'
const router = createRouter({
history: createWebHashHistory(),
@@ -24,6 +26,7 @@ const router = createRouter({
{ path: 'logs', component: Logs, meta: { title: '连接日志' } },
{ path: 'backups', component: Backups, meta: { title: '备份与恢复' } },
{ path: 'audits', component: Audits, meta: { title: '审计日志' } },
+ { path: 'admins', component: Admins, meta: { title: '管理员', adminOnly: true } },
]
}
]
@@ -32,6 +35,11 @@ const router = createRouter({
router.beforeEach((to, from, next) => {
const t = localStorage.getItem('token')
if (!t && to.path !== '/login') return next('/login')
+ // 限制 admin only 页面
+ if (to.meta?.adminOnly && localStorage.getItem('role') !== 'admin') {
+ ElMessage.warning('需要 admin 权限')
+ return next(from.path === '/login' ? '/dashboard' : from)
+ }
next()
})
diff --git a/frontend/src/views/Admins.vue b/frontend/src/views/Admins.vue
new file mode 100644
index 0000000..7d5f5f0
--- /dev/null
+++ b/frontend/src/views/Admins.vue
@@ -0,0 +1,146 @@
+
+
+
管理员账号
+
仅 role=admin 的账号可以管理其他账号。可创建 operator(只读运维)或 admin(全部权限)。
+
+
+
+
+
+
+
+ {{ row.role }}
+
+
+
+
+ {{ row.status }}
+
+
+
+
+ 是
+ 否
+
+
+
+ {{ row.last_login_at?.slice(0,19) || '-' }}
+
+
+
+ {{ row.created_at?.slice(0,19) }}
+
+
+
+ 重置密码
+ 禁用
+ 启用
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 创建
+
+
+
+
+
+ 为账号 {{ target?.username }} 设置新密码,新密码会立即生效。
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Login.vue b/frontend/src/views/Login.vue
index 5f0dcc7..042b88c 100644
--- a/frontend/src/views/Login.vue
+++ b/frontend/src/views/Login.vue
@@ -12,8 +12,21 @@
登录
-
首次部署默认账号 admin / admin123,请在系统中修改
+
首次部署默认账号 admin / admin123,登录后会强制要求改密。
+
+
+