初始提交
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import { computed } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useUserStore } from '@/stores/userStore'
|
||||
|
||||
/**
|
||||
* 认证相关组合式函数
|
||||
*/
|
||||
export function useAuth() {
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
|
||||
const isAuthenticated = computed(() => userStore.isAuthenticated)
|
||||
const isAdmin = computed(() => userStore.isAdmin)
|
||||
const currentUser = computed(() => userStore.user)
|
||||
|
||||
// 检查权限
|
||||
const checkPermission = (requiredRole) => {
|
||||
if (requiredRole === 'admin' && !isAdmin.value) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// 需要登录
|
||||
const requireAuth = () => {
|
||||
if (!isAuthenticated.value) {
|
||||
router.push('/login')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// 需要管理员权限
|
||||
const requireAdmin = () => {
|
||||
if (!isAuthenticated.value) {
|
||||
router.push('/login')
|
||||
return false
|
||||
}
|
||||
if (!isAdmin.value) {
|
||||
router.push('/dashboard')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
return {
|
||||
isAuthenticated,
|
||||
isAdmin,
|
||||
currentUser,
|
||||
checkPermission,
|
||||
requireAuth,
|
||||
requireAdmin
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user