feat: 完成动态菜单和API权限检查功能
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { usePermissionStore } from '@/stores/permission'
|
||||
|
||||
export interface PermissionMapping {
|
||||
[key: string]: string | string[]
|
||||
}
|
||||
|
||||
const permissionMapping: PermissionMapping = {
|
||||
'GET /users': 'user:list',
|
||||
'POST /users': 'user:create',
|
||||
'PUT /users': 'user:update',
|
||||
'DELETE /users': 'user:delete',
|
||||
'GET /roles': 'role:list',
|
||||
'POST /roles': 'role:create',
|
||||
'PUT /roles': 'role:update',
|
||||
'DELETE /roles': 'role:delete',
|
||||
'GET /menus': 'menu:list',
|
||||
'POST /menus': 'menu:create',
|
||||
'PUT /menus': 'menu:update',
|
||||
'DELETE /menus': 'menu:delete',
|
||||
'GET /dict': 'dict:list',
|
||||
'POST /dict': 'dict:create',
|
||||
'PUT /dict': 'dict:update',
|
||||
'DELETE /dict': 'dict:delete',
|
||||
'GET /sys/config': 'config:list',
|
||||
'POST /sys/config': 'config:create',
|
||||
'PUT /sys/config': 'config:update',
|
||||
'DELETE /sys/config': 'config:delete',
|
||||
}
|
||||
|
||||
export function checkApiPermission(method: string, url: string): boolean {
|
||||
const permissionStore = usePermissionStore()
|
||||
|
||||
const key = `${method.toUpperCase()} ${url.split('?')[0]}`
|
||||
const requiredPermission = permissionMapping[key]
|
||||
|
||||
if (!requiredPermission) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (Array.isArray(requiredPermission)) {
|
||||
return requiredPermission.some(p => permissionStore.hasPermission(p))
|
||||
}
|
||||
|
||||
return permissionStore.hasPermission(requiredPermission)
|
||||
}
|
||||
|
||||
export function getRequiredPermission(method: string, url: string): string | string[] | null {
|
||||
const key = `${method.toUpperCase()} ${url.split('?')[0]}`
|
||||
return permissionMapping[key] || null
|
||||
}
|
||||
Reference in New Issue
Block a user