Files
KArtSell.Aegis/docs/Design/kbx-foundation-v60-status-canonical-contract-hardening/apps/web/src/permissions/authorizationPolicy.ts
T
kjh2064 3f293d8aa8
deploy / deploy (push) Successful in 1m52s
deploy / notify (push) Successful in 1s
V13-FE-006: consolidate approved UI and contract hardening
2026-08-13 02:41:00 +09:00

12 lines
928 B
TypeScript

import { kbxAiAuthorizationPolicy, kbxPermissionCatalog, kbxSensitiveDataPolicies, type KbxAiCapability } from '@kbx/contracts'
const byId = new Map(kbxPermissionCatalog.map(x => [x.id, x]))
export function getKbxPermission(id:string){ return byId.get(id) }
export function canKbx(granted:readonly string[], permission:string){ return granted.includes(permission) }
export function kbxAiCapabilities(granted:readonly string[], screenAllowed:readonly KbxAiCapability[]=['explain','suggest','draft']):KbxAiCapability[]{
if(!canKbx(granted,kbxAiAuthorizationPolicy.usePermission)) return []
const result=screenAllowed.filter(x=>x!=='execute')
if(screenAllowed.includes('execute') && canKbx(granted,kbxAiAuthorizationPolicy.executePermission)) result.push('execute')
return result
}
export function getSensitivePolicyForField(fieldKey:string){ return kbxSensitiveDataPolicies.find(p=>p.fields.includes(fieldKey as never)) }