Files
2025-12-05 18:00:05 +07:00

50 lines
1.2 KiB
TypeScript

import type { Permission } from '~/models/role'
export function usePageChecker() {
const route = useRoute()
const { checkRole, hasCreateAccess, hasReadAccess, hasUpdateAccess, hasDeleteAccess } = useRBAC()
function getRouteTitle() {
return route.meta.title as string
}
function getParamsId() {
const id = route.params.id
return typeof id === 'string' ? parseInt(id) : 0
}
function getPageAccess(
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) return false
// Define permission-based computed properties
switch (type) {
case 'create':
return hasCreateAccess(roleAccess)
case 'read':
return hasReadAccess(roleAccess)
case 'update':
return hasUpdateAccess(roleAccess)
case 'delete':
return hasDeleteAccess(roleAccess)
default:
return false
}
}
return {
checkRole,
hasCreateAccess,
hasReadAccess,
hasUpdateAccess,
hasDeleteAccess,
getRouteTitle,
getParamsId,
getPageAccess
}
}