优化
This commit is contained in:
@@ -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))
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user