diff --git a/app/lib/page-checker.ts b/app/lib/page-checker.ts new file mode 100644 index 00000000..3f5c8132 --- /dev/null +++ b/app/lib/page-checker.ts @@ -0,0 +1,41 @@ +import type { Permission } from "~/models/role" + +const route = useRoute() + +const { checkRole, hasCreateAccess, hasReadAccess, hasUpdateAccess, hasDeleteAccess } = useRBAC() + +export function getRouteTitle() { + return route.meta.title as string +} + +export function getParamsId() { + const id = route.params.id + return typeof id === 'string' ? parseInt(id) : 0 +} + +export function checkPageAccess(roleAccess: Record, type: 'create' | 'read' | 'update' | 'delete') { + // Check if user has access to this page, need to use try - catch for proper handling + const hasAccess = checkRole(roleAccess) + if (!hasAccess) { + navigateTo('/403') + } + + // Define permission-based computed properties + const canCreate = hasCreateAccess(roleAccess) + const canRead = hasReadAccess(roleAccess) + const canUpdate = hasUpdateAccess(roleAccess) + const canDelete = hasDeleteAccess(roleAccess) + + switch (type) { + case 'create': + return canCreate + case 'read': + return canRead + case 'update': + return canUpdate + case 'delete': + return canDelete + default: + return false + } +} diff --git a/app/pages/(features)/outpatient/encounter/[id]/detail.vue b/app/pages/(features)/ambulatory/encounter/[id]/detail.vue similarity index 56% rename from app/pages/(features)/outpatient/encounter/[id]/detail.vue rename to app/pages/(features)/ambulatory/encounter/[id]/detail.vue index 39bc5e13..09413f9f 100644 --- a/app/pages/(features)/outpatient/encounter/[id]/detail.vue +++ b/app/pages/(features)/ambulatory/encounter/[id]/detail.vue @@ -1,7 +1,15 @@