问题:TenantRoutingProperties 定义了配置但未被使用 解决方案: 1. TenantAwareLoadBalancer 注入 TenantRoutingProperties - 使用配置的 tenantHeader 名称 - 使用配置的 buildTenantGroup 方法 - 使用配置的 isSharedService 判断 - 使用配置的 isFallbackToShared 策略 2. 新增功能 - 支持 enabled=false 禁用租户路由 - 共享服务跳过租户过滤 - 可配置是否回退到共享实例 3. 更新测试适配新构造函数
47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import { defineStore } from 'pinia'
|
|
import { ref } from 'vue'
|
|
import { request } from '@/api/request'
|
|
|
|
export const usePermissionStore = defineStore('permission', () => {
|
|
const permissions = ref<string[]>([])
|
|
const loaded = ref(false)
|
|
|
|
// 获取用户权限列表
|
|
async function fetchPermissions(userId: number) {
|
|
try {
|
|
const res = await request.get<string[]>(`/sys/menu/permissions/${userId}`)
|
|
permissions.value = res.data || []
|
|
loaded.value = true
|
|
return permissions.value
|
|
} catch (error) {
|
|
console.error('获取权限失败:', error)
|
|
return []
|
|
}
|
|
}
|
|
|
|
// 检查是否有权限
|
|
function hasPermission(permission: string | string[]): boolean {
|
|
if (!permission) return true
|
|
if (permissions.value.length === 0) return false
|
|
|
|
if (Array.isArray(permission)) {
|
|
return permission.some(p => permissions.value.includes(p))
|
|
}
|
|
return permissions.value.includes(permission)
|
|
}
|
|
|
|
// 清空权限
|
|
function clearPermissions() {
|
|
permissions.value = []
|
|
loaded.value = false
|
|
}
|
|
|
|
return {
|
|
permissions,
|
|
loaded,
|
|
fetchPermissions,
|
|
hasPermission,
|
|
clearPermissions
|
|
}
|
|
})
|