mirror of
https://github.com/ctwj/urldb.git
synced 2025-11-25 19:37:33 +08:00
31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
|
|
export default defineNuxtRouteMiddleware(async (to, from) => {
|
||
|
|
// 只在客户端执行认证检查
|
||
|
|
if (!process.client) {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
const userStore = useUserStore()
|
||
|
|
|
||
|
|
// 初始化用户状态
|
||
|
|
userStore.initAuth()
|
||
|
|
|
||
|
|
// 等待一小段时间确保认证状态初始化完成
|
||
|
|
await new Promise(resolve => setTimeout(resolve, 100))
|
||
|
|
|
||
|
|
// 检查认证状态
|
||
|
|
if (!userStore.isAuthenticated) {
|
||
|
|
console.log('admin middleware - 用户未认证,重定向到登录页面')
|
||
|
|
return navigateTo('/login')
|
||
|
|
}
|
||
|
|
|
||
|
|
// 检查用户是否为管理员(通常通过用户角色或权限判断)
|
||
|
|
// 这里可以根据具体实现来调整,例如检查 userStore.user?.is_admin 字段
|
||
|
|
const isAdmin = userStore.user?.is_admin || userStore.user?.role === 'admin' || userStore.user?.username === 'admin'
|
||
|
|
|
||
|
|
if (!isAdmin) {
|
||
|
|
console.log('admin middleware - 用户不是管理员,重定向到首页')
|
||
|
|
return navigateTo('/')
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log('admin middleware - 用户已认证且为管理员,继续访问')
|
||
|
|
})
|