Files
simrsx-fe/app/lib/page-checker.ts
T

42 lines
1.1 KiB
TypeScript

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<string, Permission[]>, 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
}
}