import type { App } from 'vue' import { useUserStore } from '@/store' /** * 权限指令 * * 用法: * 新增 * 保存 // 任一命中即可 * 超级操作 * * 权限标识命名规范:模块:资源:动作(与后端 @PreAuthorize("@ss.hasPermission('...')") 完全一致)。 * 指令只是「隐藏入口」,真正的鉴权在后端——前端隐藏不作为安全边界。 */ function checkAndRemove(el: HTMLElement, allowed: boolean) { if (!allowed) { el.parentNode?.removeChild(el) } } export function setupDirectives(app: App) { app.directive('hasPermi', { mounted(el: HTMLElement, binding) { const userStore = useUserStore() checkAndRemove(el, userStore.hasPermission(binding.value)) } }) app.directive('hasRole', { mounted(el: HTMLElement, binding) { const userStore = useUserStore() checkAndRemove(el, userStore.hasRole(binding.value)) } }) } export default setupDirectives