Files

40 lines
1008 B
TypeScript
Raw Permalink Normal View History

2026-04-07 11:01:11 +08:00
import { defineNuxtRouteMiddleware, useMemberStore, useSystemStore, navigateTo } from '#imports'
/**
* 权限中间件
* 检查路由是否需要权限,如果需要则验证用户权限
*/
export default defineNuxtRouteMiddleware((to, from) => {
const memberStore = useMemberStore()
const systemStore = useSystemStore()
// 获取路由的权限配置
const routePermissions = to.meta.permissions
// 如果路由没有配置权限,直接通过
if (!routePermissions) {
return
}
// 检查用户是否登录
if (!memberStore.info) {
// 如果用户未登录,打开登录弹窗
memberStore.logOpen()
return false
}
// 检查用户是否有权限访问
const hasPermission = systemStore.checkMenuPermission({
id: 0,
meta: {
permissions: routePermissions
}
} as any)
if (!hasPermission) {
// 如果用户没有权限,跳转到个人资料页面
return navigateTo('/member/profile', {
replace: true
})
}
})