diff --git a/app/error.vue b/app/error.vue new file mode 100644 index 00000000..bf6e0799 --- /dev/null +++ b/app/error.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/app/middleware/auth.global.ts b/app/middleware/auth.global.ts index 8beb23c0..e254a754 100644 --- a/app/middleware/auth.global.ts +++ b/app/middleware/auth.global.ts @@ -9,7 +9,7 @@ export default defineNuxtRouteMiddleware((to) => { console.log('currRole', userStore.userRole) console.log('isAuth', userStore.isAuthenticated) if (!userStore.isAuthenticated) { - return navigateTo('/auth/login') + return navigateTo('/401') } // const allowedRoles = to.meta.roles as string[] | undefined diff --git a/app/middleware/rbac.ts b/app/middleware/rbac.ts index 08f5c924..8528c2ca 100644 --- a/app/middleware/rbac.ts +++ b/app/middleware/rbac.ts @@ -11,10 +11,7 @@ export default defineNuxtRouteMiddleware((to) => { if (pagePermissions) { const { checkRole } = useRBAC() if (!checkRole(pagePermissions)) { - throw createError({ - statusCode: 403, - statusMessage: 'Forbidden - Insufficient permissions for this page', - }) + return navigateTo('/403') } } @@ -27,10 +24,7 @@ export default defineNuxtRouteMiddleware((to) => { const hasRequiredRole = requiredRoles.some((role) => userRoles.includes(role)) if (!hasRequiredRole) { - throw createError({ - statusCode: 403, - statusMessage: 'Forbidden - Insufficient role permissions', - }) + return navigateTo('/403') } } } diff --git a/app/pages/(error)/401.vue b/app/pages/(error)/401.vue new file mode 100644 index 00000000..b60f313f --- /dev/null +++ b/app/pages/(error)/401.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/app/pages/(error)/403.vue b/app/pages/(error)/403.vue new file mode 100644 index 00000000..985bc412 --- /dev/null +++ b/app/pages/(error)/403.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/app/pages/(error)/404.vue b/app/pages/(error)/404.vue new file mode 100644 index 00000000..a857fca1 --- /dev/null +++ b/app/pages/(error)/404.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/app/pages/(error)/500.vue b/app/pages/(error)/500.vue new file mode 100644 index 00000000..7c6cb120 --- /dev/null +++ b/app/pages/(error)/500.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/app/pages/(error)/503.vue b/app/pages/(error)/503.vue new file mode 100644 index 00000000..ccd86c2c --- /dev/null +++ b/app/pages/(error)/503.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/app/pages/(features)/patient/index.vue b/app/pages/(features)/patient/index.vue index cddf202f..13e0c451 100644 --- a/app/pages/(features)/patient/index.vue +++ b/app/pages/(features)/patient/index.vue @@ -16,10 +16,7 @@ const { checkRole, hasReadAccess } = useRBAC() // Check if user has access to this page const hasAccess = checkRole(roleAccess) if (!hasAccess) { - throw createError({ - statusCode: 403, - statusMessage: 'Access denied', - }) + navigateTo('/403') } // Define permission-based computed properties