0099
This commit is contained in:
24
cdTMP/src/hooks/logout.js
Normal file
24
cdTMP/src/hooks/logout.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import { useRouter } from 'vue-router'
|
||||
import { Message } from '@arco-design/web-vue'
|
||||
|
||||
import { useUserStore } from '@/store'
|
||||
|
||||
export default function useUser() {
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
const logout = async (logoutTo) => {
|
||||
await userStore.logout()
|
||||
const currentRoute = router.currentRoute.value
|
||||
Message.success('登出成功')
|
||||
router.push({
|
||||
name: logoutTo && typeof logoutTo === 'string' ? logoutTo : 'login',
|
||||
query: {
|
||||
...router.currentRoute.value.query,
|
||||
redirect: currentRoute.name,
|
||||
},
|
||||
})
|
||||
}
|
||||
return {
|
||||
logout,
|
||||
}
|
||||
}
|
||||
33
cdTMP/src/hooks/permission.js
Normal file
33
cdTMP/src/hooks/permission.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import { useUserStore } from "@/store"
|
||||
|
||||
export default function usePermission() {
|
||||
const userStore = useUserStore()
|
||||
return {
|
||||
// 返回的函数可自定义路由权限
|
||||
accessRouter(route) {
|
||||
return (
|
||||
!route.meta?.requiresAuth ||
|
||||
!route.meta?.roles ||
|
||||
route.meta?.roles?.includes("*") ||
|
||||
route.meta?.roles?.includes(userStore.role)
|
||||
)
|
||||
},
|
||||
findFirstPermissionRoute(_routers, role = "admin") {
|
||||
const cloneRouters = [..._routers]
|
||||
while (cloneRouters.length) {
|
||||
const firstElement = cloneRouters.shift()
|
||||
if (
|
||||
firstElement?.meta?.roles?.find((el) => {
|
||||
return el.includes("*") || el.includes(role)
|
||||
})
|
||||
)
|
||||
return { name: firstElement.name }
|
||||
if (firstElement?.children) {
|
||||
cloneRouters.push(...firstElement.children)
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
// 你可以添加任何规则
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user