This commit is contained in:
2026-08-11 11:41:52 +08:00
parent de0a90e853
commit 6ab7d52a95
6 changed files with 65 additions and 16 deletions
@@ -89,3 +89,15 @@ export const FRONTEND_TO_MERCHANT_PERMISSION_CODES: Readonly<Record<string, read
'company:permission:assign': ['merchant:role:grant'],
'finance:bill:view': ['merchant:finance:statement:list', 'merchant:finance:statement:view'],
}
export const FRONTEND_PERMISSIONS_REQUIRING_ALL_BACKEND_CODES = new Set<string>([
'finance:bill:view',
])
export function hasMappedMerchantPermission(frontendCode: string, grantedBackendCodes: ReadonlySet<string>) {
const backendCodes = FRONTEND_TO_MERCHANT_PERMISSION_CODES[frontendCode]
if (!backendCodes?.length) return grantedBackendCodes.has(frontendCode)
return FRONTEND_PERMISSIONS_REQUIRING_ALL_BACKEND_CODES.has(frontendCode)
? backendCodes.every((code) => grantedBackendCodes.has(code))
: backendCodes.some((code) => grantedBackendCodes.has(code))
}
+1
View File
@@ -9,6 +9,7 @@ export {
export {
FRONTEND_TO_MERCHANT_PERMISSION_CODES,
TENANT_PERMISSION_GROUPS,
hasMappedMerchantPermission,
type MerchantTenantStatus,
} from './contracts'
export { useTenantAdministrationStore } from './store/tenantAdministration'
@@ -24,6 +24,7 @@ import {
FRONTEND_TO_MERCHANT_PERMISSION_CODES,
REQUIRED_TENANT_PERMISSION_CODES,
TENANT_PERMISSION_GROUPS,
hasMappedMerchantPermission,
type MerchantTenantStatus,
} from '@/modules/tenant-management/contracts'
import { normalizeQualificationStatus, type TenantQualificationStatus } from '@/modules/tenant-management/utils/qualificationStatus'
@@ -130,7 +131,7 @@ export const useTenantAdministrationStore = defineStore('tenant-administration',
.filter((resource) => grantedIds.includes(String(resource.id)))
.map((resource) => resource.permissionCode))
const permissionCodes = Object.entries(FRONTEND_TO_MERCHANT_PERMISSION_CODES)
.filter(([, backendCodes]) => backendCodes.some((code) => grantedBackendCodes.has(code)))
.filter(([frontendCode]) => hasMappedMerchantPermission(frontendCode, grantedBackendCodes))
.map(([frontendCode]) => frontendCode)
const effectivePermissionCodes = [...new Set([...REQUIRED_TENANT_PERMISSION_CODES, ...permissionCodes])]
return {